@@ -26,16 +26,45 @@ def setUp(self):
2626 def tearDown (self ):
2727 self .model .objects .all ().delete ()
2828
29- def create_model (self , model_id ):
30- G (self .model , course_id = self .course_id , program_id = model_id , program_type = 'Demo' , program_title = 'Test' )
29+ def generate_data (self , ids = None , course_ids = None , ** kwargs ):
30+ """Generate program list data"""
31+ if ids is None :
32+ ids = self .default_ids
3133
32- def expected_result (self , item_id ):
34+ if course_ids is None :
35+ course_ids = [[self .course_id ]] * len (ids )
36+
37+ for item_id , course_id in zip (ids , course_ids ):
38+ self .create_model (item_id , course_ids = course_id , ** kwargs )
39+
40+ def create_model (self , model_id , course_ids = None , ** kwargs ):
41+ if course_ids is None :
42+ course_ids = [self .course_id ]
43+
44+ for course_id in course_ids :
45+ G (self .model , course_id = course_id , program_id = model_id , program_type = 'Demo' , program_title = 'Test' )
46+
47+ def all_expected_results (self , ids = None , course_ids = None , ** kwargs ):
48+ if ids is None :
49+ ids = self .default_ids
50+
51+ if course_ids is None :
52+ course_ids = [[self .course_id ]] * len (ids )
53+
54+ return [self .expected_result (item_id , course_ids = course_id , ** kwargs )
55+ for item_id , course_id in zip (ids , course_ids )]
56+
57+ # pylint: disable=arguments-differ
58+ def expected_result (self , item_id , course_ids = None ):
3359 """Expected program metadata to populate with data."""
60+ if course_ids is None :
61+ course_ids = [self .course_id ]
62+
3463 program = super (ProgramsViewTests , self ).expected_result (item_id )
3564 program .update ([
3665 ('program_type' , 'Demo' ),
3766 ('program_title' , 'Test' ),
38- ('course_ids' , [ self . course_id ] )
67+ ('course_ids' , course_ids )
3968 ])
4069 return program
4170
@@ -57,3 +86,17 @@ def test_one_course(self, program_id):
5786 )
5887 def test_fields (self , fields ):
5988 self ._test_fields (fields )
89+
90+ @ddt .data (
91+ (None , None ),
92+ (CourseSamples .program_ids , [[cid ] for cid in CourseSamples .course_ids ]),
93+ (CourseSamples .program_ids , [CourseSamples .course_ids [1 :3 ],
94+ CourseSamples .course_ids [0 :2 ],
95+ CourseSamples .course_ids [0 :3 ]]),
96+ )
97+ @ddt .unpack
98+ def test_all_programs_multi_courses (self , program_ids , course_ids ):
99+ self .generate_data (ids = program_ids , course_ids = course_ids )
100+ response = self .validated_request (ids = program_ids , exclude = self .always_exclude )
101+ self .assertEquals (response .status_code , 200 )
102+ self .assertItemsEqual (response .data , self .all_expected_results (ids = program_ids , course_ids = course_ids ))
0 commit comments