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']))
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()