def test_update_from_related_table(mocker): publisher_mock = mocker.patch('dj_cqrs.controller.producer.produce') with transaction.atomic(): publisher = models.Publisher.objects.create(id=1, name='publisher') author = models.Author.objects.create(id=1, name='author', publisher=publisher) with transaction.atomic(): publisher.name = 'new' publisher.save() author.save() assert publisher_mock.call_count == 2 assert_is_sub_dict( { 'id': 1, 'name': 'author', 'publisher': { 'id': 1, 'name': 'new' }, 'books': [], 'cqrs_revision': 1, }, publisher_mock.call_args[0][0].instance_data, )
def test_to_cqrs_dict_all_fields(): m = models.AllFieldsModel(char_field='str') assert_is_sub_dict({ 'id': None, 'int_field': None, 'char_field': 'str' }, m.to_cqrs_dict())
def test_to_cqrs_dict_auto_fields(): m = models.AutoFieldsModel() assert_is_sub_dict({ 'id': None, 'created': None, 'updated': None }, m.to_cqrs_dict()) m.save() cqrs_dct = m.to_cqrs_dict() for key in ('id', 'created', 'updated'): assert cqrs_dct[key] is not None
def test_create_from_related_table(mocker): publisher_mock = mocker.patch('dj_cqrs.controller.producer.produce') author = models.Author.objects.create(id=1, name='author', publisher=None) with transaction.atomic(): models.Book.objects.create(id=1, title='title', author=author) # Calling author.cqrs_sync() would result in a wrong cqrs_revision! author.save() assert publisher_mock.call_count == 2 assert_is_sub_dict( { 'id': 1, 'name': 'author', 'publisher': None, 'books': [{ 'id': 1, 'name': 'title', }], 'cqrs_revision': 1, }, publisher_mock.call_args[0][0].instance_data, )
def test_to_cqrs_dict_basic_types(): dt = now() uid = uuid4() m = models.BasicFieldsModel( int_field=1, bool_field=False, char_field='str', date_field=None, datetime_field=dt, float_field=1.23, url_field='http://example.com', uuid_field=uid, ) assert_is_sub_dict( { 'int_field': 1, 'bool_field': False, 'char_field': 'str', 'date_field': None, 'datetime_field': str(dt), 'float_field': 1.23, 'url_field': 'http://example.com', 'uuid_field': uid, }, m.to_cqrs_dict())
def test_to_cqrs_dict_serializer_ok(): model = models.Author.objects.create(id=1) assert_is_sub_dict(AuthorSerializer(model).data, model.to_cqrs_dict()) assert models.Author._cqrs_serializer_class == AuthorSerializer
def test_to_cqrs_dict_chosen_fields(): m = models.ChosenFieldsModel(float_field=1.23) assert_is_sub_dict({'char_field': None, 'id': None}, m.to_cqrs_dict())