You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
# -*- coding: utf-8 -*-
|
|
# pylint: disable=no-self-use,no-member,invalid-name
|
|
"""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
|
|
|