def setUp(self): # Mock required model classes from app. self.mixin = SaveObjectsMixin() class Dummy(object): pass self.mixin.PlayerClass = Dummy self.mixin.GroupClass = Dummy self.mixin.SubsessionClass = Dummy
def test_with_app_models(self): call_command('create_session', 'simple', '2') from .simple.models import Group from .simple.models import Player from .simple.models import Subsession mixin = SaveObjectsMixin() mixin.GroupClass = Group mixin.PlayerClass = Player mixin.SubsessionClass = Subsession # Reset cache. idmap.tls.init_idmap() players = Player.objects.all() self.assertEqual(len(players), 2) group = players[0].group group.save = Mock() group.round_number += 1 # Query session object to test that it's loaded.. group.session participants = group.session.participant_set.all() all_instances = set(( players[0], players[1], group, group.session, participants[0], participants[1])) self.assertEqual( set(mixin._get_save_objects_model_instances()), all_instances) # No queries are executed. The group model shall be saved, but we # mocked out the save method. All other models should be left # untouched. with self.assertNumQueries(0): mixin.save_objects() self.assertTrue(group.save.called)