# -*- coding: utf-8 -*- """Model unit tests.""" import datetime as dt import pytest from {{cookiecutter.app_name}}.user.models import Role, User from .factories import UserFactory @pytest.mark.usefixtures('db') class TestUser: """User tests.""" def test_get_by_id(self): """Get user by ID.""" user = User('foo', 'foo@bar.com') user.save() retrieved = User.get_by_id(user.id) assert retrieved == user def test_created_at_defaults_to_datetime(self): """Test creation date.""" user = User(username='foo', email='foo@bar.com') user.save() assert bool(user.created_at) assert isinstance(user.created_at, dt.datetime) def test_password_is_nullable(self): """Test null password.""" user = User(username='foo', email='foo@bar.com') user.save() assert user.password is None def test_factory(self, db): """Test user factory.""" user = UserFactory(password='myprecious') db.session.commit() assert bool(user.username) assert bool(user.email) assert bool(user.created_at) assert user.is_admin is False assert user.active is True assert user.check_password('myprecious') def test_check_password(self): """Check password.""" user = User.create(username='foo', email='foo@bar.com', password='foobarbaz123') assert user.check_password('foobarbaz123') is True assert user.check_password('barfoobaz') is False def test_full_name(self): """User full name.""" user = UserFactory(first_name='Foo', last_name='Bar') assert user.full_name == 'Foo Bar' def test_roles(self): """Add a role to a user.""" role = Role(name='admin') role.save() user = UserFactory() user.roles.append(role) user.save() assert role in user.roles