コード例 #1
0
    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
コード例 #2
0
    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)