|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""Model unit tests."""
|
|
|
|
import datetime as dt
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from {{ cookiecutter.app_name }}.database import db
|
|
|
|
from {{ cookiecutter.app_name }}.user.models import User, Role
|
|
|
|
from .base import DbTestCase
|
|
|
|
from .factories import UserFactory
|
|
|
|
|
|
|
|
class TestUser:
|
|
|
|
|
|
|
|
def test_created_at_defaults_to_datetime(self, session):
|
|
|
|
user = User(username='foo', email='foo@bar.com')
|
|
|
|
user.save()
|
|
|
|
assert bool(user.created_at)
|
|
|
|
assert isinstance(user.created_at, dt.datetime) is True
|
|
|
|
|
|
|
|
def test_password_is_nullable(self, session):
|
|
|
|
user = User(username='foo', email='foo@bar.com')
|
|
|
|
user.save()
|
|
|
|
assert user.password is None
|
|
|
|
|
|
|
|
def test_factory(self, session):
|
|
|
|
user = UserFactory(password="myprecious")
|
|
|
|
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.password == "myprecious"
|
|
|
|
|
|
|
|
def test_check_password_with_equality_operators(self, session):
|
|
|
|
user = User.create(username="foo", email="foo@bar.com",
|
|
|
|
password="foobarbaz123")
|
|
|
|
assert user.password == 'foobarbaz123'
|
|
|
|
assert user.password != "barfoobaz"
|
|
|
|
|
|
|
|
def test_full_name(self, session):
|
|
|
|
user = UserFactory(first_name="Foo", last_name="Bar")
|
|
|
|
assert user.full_name == "Foo Bar"
|
|
|
|
|
|
|
|
def test_roles(self, session):
|
|
|
|
role = Role(name='admin')
|
|
|
|
role.save()
|
|
|
|
u = UserFactory()
|
|
|
|
u.roles.append(role)
|
|
|
|
u.save()
|
|
|
|
assert role in u.roles
|