Source code for thecut.authorship.tests.test_models

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from django.test import TestCase
from test_app.factories import AuthorshipModelFactory as AuthorshipFactory
from test_app.models import AuthorshipModel
from thecut.authorship.factories import UserFakerFactory


[docs]class TestAuthorshipModel(TestCase):
[docs] def test_sets_created_by_when_model_instance_is_first_saved(self): """Check if ``created_by`` is correctly set on first save.""" authored = AuthorshipModel() user = UserFakerFactory() user.save() authored.save(user=user) self.assertEqual(user, authored.created_by)
[docs] def test_sets_updated_by_when_model_instance_is_saved(self): """Ensure that :py:class:`thecut.authorship.models.Authorship.updated_by` is updated on save.""" authored = AuthorshipFactory() update_user = UserFakerFactory(username='update user') authored.save(user=update_user) self.assertEqual(update_user, authored.updated_by)
[docs] def test_does_not_change_created_by_when_model_instance_is_saved(self): """Ensure that :py:class:`thecut.authorship.models.Authorship.created_by` is not updated for existing models.""" authored = AuthorshipFactory() update_user = UserFakerFactory(username='update user') authored.save(user=update_user) self.assertNotEqual(update_user, authored.created_by)
[docs] def test_sets_updated_at_if_update_fields_is_specified(self): """Ensure that :py:class:`thecut.authorship.models.Authorship.updated_at` is updated, even when ``update_fields`` is specified.""" authored = AuthorshipFactory() original_updated_at = authored.updated_at authored.save(update_fields=[]) authored = AuthorshipModel.objects.get(pk=authored.pk) self.assertGreater(authored.updated_at, original_updated_at)
[docs] def test_sets_updated_by_if_update_fields_is_specified(self): """Ensure that :py:class:`thecut.authorship.models.Authorship.updated_by` is updated, even when ``update_fields`` is specified.""" authored = AuthorshipFactory() update_user = UserFakerFactory(username='update user') authored.save(user=update_user, update_fields=['updated_at']) updated = AuthorshipModel.objects.get(pk=authored.pk) self.assertEqual(updated.updated_by, update_user)