Esempio n. 1
0
    def test_str_requires_no_extra_queries(self):
        '''
        We should not have to make any extra queries to get the string
        representation of a user, after querying for the actual user.
        '''

        UserAuth.objects.create_user(username='******', password='******')
        UserAuth.objects.create_user(username='******', password='******')

        with assert_num_queries(1):
            profiles = Profile.objects.all()
            profile_strings = set([str(p) for p in profiles])

        # NOTE: The templates profile is created via a migration.
        assert_equal(profile_strings, set(['mjumbewu', 'atogle', 'templates']))
Esempio n. 2
0
    def test_str_requires_no_extra_queries(self):
        '''
        We should not have to make any extra queries to get the string
        representation of a user, after querying for the actual user.
        '''

        UserAuth.objects.create_user(username='******', password='******')
        UserAuth.objects.create_user(username='******', password='******')

        with assert_num_queries(1):
            profiles = Profile.objects.all()
            profile_strings = set([str(p) for p in profiles])

        # NOTE: The templates profile is created via a migration.
        assert_equal(profile_strings, set(['mjumbewu', 'atogle', 'templates']))
Esempio n. 3
0
    def test_form_merge_runs_finite_queries(self):
        form = self.base_reassignment_test()

        # Prefetches
        # ----------
        # Constant number, no matter how many councilmembers
        #
        #     SELECT * FROM alias
        #      WHERE member_id = <primary_member_id>;
        #     
        #     SELECT * FROM councilmember
        #      WHERE id IN (<member_ids>)
        #        AND NOT (id = <primary_member_id>);
        #     
        #     SELECT * FROM alias
        #      WHERE member_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM tenure
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM legfile
        #        INNER JOIN legfile_sponsors ON (key = legfile_sponsors.legfile_id)
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM legvote
        #      WHERE voter_id IN (<nonprimary_member_ids>);
        #     
        prefetch_q_count = 6

        # Reassignments
        # -------------
        # Linear with the number of members
        #
        #     UPDATE alias
        #        SET member_id = <primary_member_id>
        #      WHERE member_id = <nonprimary_member_id>
        #        AND NOT ("name" IN (<already_known_aliases>));
        #     
        #     UPDATE tenure
        #        SET councilmember_id = <primary_member_id>
        #      WHERE councilmember_id = <nonprimary_member_id>;
        #     
        #     UPDATE legvote
        #        SET voter_id = <primary_member_id>
        #      WHERE voter_id = <nonprimary_member_id>;
        #     
        #     SELECT legfile_id FROM legfile_sponsors
        #      WHERE councilmember_id = <primary_member_id>
        #        AND legfile_id IN (<nonprimary_member's legislation_ids>));
        #     
        #     INSERT INTO legfile_sponsors (legfile_id, councilmember_id)
        #          VALUES <nonprimary_member's legislation>;
        reassignment_q_count = 5

        # Deletions
        # ---------
        # Constant number, no matter how many members
        #
        #     SELECT * FROM councilmember
        #      WHERE id IN (<member_ids>)
        #        AND NOT (id = <primary_member_id>);
        #     
        #     SELECT * FROM alias
        #      WHERE member_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM tenure
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM legfile_sponsors
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #     
        #     SELECT * FROM legvote
        #      WHERE voter_id IN (<nonprimary_member_ids>);
        #     
        #     DELETE FROM legfile_sponsors
        #      WHERE id IN (<nonprimary_members' sponsorships>);
        #     
        #     DELETE FROM alias
        #      WHERE id IN (<nonprimary_members' duplicate aliases>);
        #     
        #     DELETE FROM councilmember
        #      WHERE id IN (<nonprimary_member_ids>);
        deletion_q_count = 8

        with assert_num_queries(prefetch_q_count + reassignment_q_count + deletion_q_count):
            form.merge()
Esempio n. 4
0
    def test_form_merge_runs_finite_queries(self):
        form = self.base_reassignment_test()

        # Prefetches
        # ----------
        # Constant number, no matter how many councilmembers
        #
        #     SELECT * FROM alias
        #      WHERE member_id = <primary_member_id>;
        #
        #     SELECT * FROM councilmember
        #      WHERE id IN (<member_ids>)
        #        AND NOT (id = <primary_member_id>);
        #
        #     SELECT * FROM alias
        #      WHERE member_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM tenure
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM legfile
        #        INNER JOIN legfile_sponsors ON (key = legfile_sponsors.legfile_id)
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM legvote
        #      WHERE voter_id IN (<nonprimary_member_ids>);
        #
        prefetch_q_count = 6

        # Reassignments
        # -------------
        # Linear with the number of members
        #
        #     UPDATE alias
        #        SET member_id = <primary_member_id>
        #      WHERE member_id = <nonprimary_member_id>
        #        AND NOT ("name" IN (<already_known_aliases>));
        #
        #     UPDATE tenure
        #        SET councilmember_id = <primary_member_id>
        #      WHERE councilmember_id = <nonprimary_member_id>;
        #
        #     UPDATE legvote
        #        SET voter_id = <primary_member_id>
        #      WHERE voter_id = <nonprimary_member_id>;
        #
        #     SELECT legfile_id FROM legfile_sponsors
        #      WHERE councilmember_id = <primary_member_id>
        #        AND legfile_id IN (<nonprimary_member's legislation_ids>));
        #
        #     INSERT INTO legfile_sponsors (legfile_id, councilmember_id)
        #          VALUES <nonprimary_member's legislation>;
        reassignment_q_count = 5

        # Deletions
        # ---------
        # Constant number, no matter how many members
        #
        #     SELECT * FROM councilmember
        #      WHERE id IN (<member_ids>)
        #        AND NOT (id = <primary_member_id>);
        #
        #     SELECT * FROM alias
        #      WHERE member_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM tenure
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM legfile_sponsors
        #      WHERE councilmember_id IN (<nonprimary_member_ids>);
        #
        #     SELECT * FROM legvote
        #      WHERE voter_id IN (<nonprimary_member_ids>);
        #
        #     DELETE FROM legfile_sponsors
        #      WHERE id IN (<nonprimary_members' sponsorships>);
        #
        #     DELETE FROM alias
        #      WHERE id IN (<nonprimary_members' duplicate aliases>);
        #
        #     DELETE FROM councilmember
        #      WHERE id IN (<nonprimary_member_ids>);
        deletion_q_count = 8

        with assert_num_queries(prefetch_q_count + reassignment_q_count +
                                deletion_q_count):
            form.merge()