From 4179245939895bb267ba8e4f9a0fa6dba0eb5aab Mon Sep 17 00:00:00 2001
From: sloria <sloria1@gmail.com>
Date: Sun, 27 Jul 2014 14:23:24 -0400
Subject: [PATCH] Update tests for factory-boy>=2.4.0

[fixes #23]
---
 {{cookiecutter.app_name}}/tests/conftest.py    |  4 +++-
 {{cookiecutter.app_name}}/tests/factories.py   | 18 ++++++------------
 .../tests/test_functional.py                   |  7 ++-----
 {{cookiecutter.app_name}}/tests/test_models.py |  3 ++-
 4 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/{{cookiecutter.app_name}}/tests/conftest.py b/{{cookiecutter.app_name}}/tests/conftest.py
index 2c45e158..6dd48d10 100644
--- a/{{cookiecutter.app_name}}/tests/conftest.py
+++ b/{{cookiecutter.app_name}}/tests/conftest.py
@@ -39,4 +39,6 @@ def db(app):
 
 @pytest.fixture
 def user(db):
-    return UserFactory()
+    user = UserFactory(password='myprecious')
+    db.session.commit()
+    return user
diff --git a/{{cookiecutter.app_name}}/tests/factories.py b/{{cookiecutter.app_name}}/tests/factories.py
index 0eb126d3..5a8ccbfb 100644
--- a/{{cookiecutter.app_name}}/tests/factories.py
+++ b/{{cookiecutter.app_name}}/tests/factories.py
@@ -7,20 +7,14 @@ from {{cookiecutter.app_name}}.database import db
 
 
 class BaseFactory(SQLAlchemyModelFactory):
-    FACTORY_SESSION = db.session
+    class Meta:
+        sqlalchemy_session = db.session
 
-    @classmethod
-    def _create(cls, target_class, *args, **kwargs):
-        """Create an instance of the model, and save it to the database."""
-        session = cls.FACTORY_SESSION
-        obj = target_class(*args, **kwargs)
-        session.add(obj)
-        session.commit()
-        return obj
 
-
-class UserFactory(BaseFactory):
-    FACTORY_FOR = User
+class UserFactory(SQLAlchemyModelFactory):
+    class Meta:
+        model = User
+        sqlalchemy_session = db.session
 
     username = Sequence(lambda n: "user{0}".format(n))
     email = Sequence(lambda n: "user{0}@example.com".format(n))
diff --git a/{{cookiecutter.app_name}}/tests/test_functional.py b/{{cookiecutter.app_name}}/tests/test_functional.py
index e0368c7b..ac489cdf 100644
--- a/{{cookiecutter.app_name}}/tests/test_functional.py
+++ b/{{cookiecutter.app_name}}/tests/test_functional.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
-'''Functional tests using WebTest.
+"""Functional tests using WebTest.
 
 See: http://webtest.readthedocs.org/
-'''
+"""
 import pytest
 from flask import url_for
 
@@ -10,9 +10,6 @@ from flask import url_for
 from {{cookiecutter.app_name}}.user.models import User
 from .factories import UserFactory
 
-@pytest.fixture
-def user(db):
-    return UserFactory(password='myprecious')
 
 class TestLoggingIn:
 
diff --git a/{{cookiecutter.app_name}}/tests/test_models.py b/{{cookiecutter.app_name}}/tests/test_models.py
index 882d7f6d..f8fde0c8 100644
--- a/{{cookiecutter.app_name}}/tests/test_models.py
+++ b/{{cookiecutter.app_name}}/tests/test_models.py
@@ -28,8 +28,9 @@ class TestUser:
         user.save()
         assert user.password is None
 
-    def test_factory(self):
+    def test_factory(self, db):
         user = UserFactory(password="myprecious")
+        db.session.commit()
         assert bool(user.username)
         assert bool(user.email)
         assert bool(user.created_at)
-- 
GitLab