@@ -22,6 +22,7 @@ class CourseSummariesViewTests(VerifyCourseIdMixin, TestCaseWithAuthentication):
2222 def setUp (self ):
2323 super (CourseSummariesViewTests , self ).setUp ()
2424 self .now = datetime .datetime .utcnow ()
25+ self .maxDiff = None
2526
2627 def tearDown (self ):
2728 self .model .objects .all ().delete ()
@@ -34,7 +35,7 @@ def path(self, course_ids=None, fields=None):
3435 query_string = '?{}' .format (urlencode (query_params ))
3536 return '/api/v0/course_summaries/{}' .format (query_string )
3637
37- def generate_data (self , course_ids = None , modes = None ):
38+ def generate_data (self , course_ids = None , modes = None , availability = 'Current' ):
3839 """Generate course summary data for """
3940 if course_ids is None :
4041 course_ids = CourseSamples .course_ids
@@ -47,10 +48,10 @@ def generate_data(self, course_ids=None, modes=None):
4748 G (self .model , course_id = course_id , catalog_course_title = 'Title' , catalog_course = 'Catalog' ,
4849 start_time = datetime .datetime (2016 , 10 , 11 , tzinfo = pytz .utc ),
4950 end_time = datetime .datetime (2016 , 12 , 18 , tzinfo = pytz .utc ),
50- pacing_type = 'instructor' , availability = 'current' , enrollment_mode = mode ,
51+ pacing_type = 'instructor' , availability = availability , enrollment_mode = mode ,
5152 count = 5 , cumulative_count = 10 , count_change_7_days = 1 , create = self .now ,)
5253
53- def expected_summary (self , course_id , modes = None ):
54+ def expected_summary (self , course_id , modes = None , availability = 'Current' ):
5455 """Expected summary information for a course and modes to populate with data."""
5556 if modes is None :
5657 modes = enrollment_modes .ALL
@@ -66,7 +67,7 @@ def expected_summary(self, course_id, modes=None):
6667 'start_date' : datetime .datetime (2016 , 10 , 11 , tzinfo = pytz .utc ).strftime (settings .DATETIME_FORMAT ),
6768 'end_date' : datetime .datetime (2016 , 12 , 18 , tzinfo = pytz .utc ).strftime (settings .DATETIME_FORMAT ),
6869 'pacing_type' : 'instructor' ,
69- 'availability' : 'current' ,
70+ 'availability' : availability ,
7071 'enrollment_modes' : {},
7172 'count' : count_factor * num_modes ,
7273 'cumulative_count' : cumulative_count_factor * num_modes ,
@@ -96,10 +97,14 @@ def expected_summary(self, course_id, modes=None):
9697 })
9798 return summary
9899
99- def all_expected_summaries (self , modes = None ):
100+ def all_expected_summaries (self , modes = None , course_ids = None , availability = 'Current' ):
101+ if course_ids is None :
102+ course_ids = CourseSamples .course_ids
103+
100104 if modes is None :
101105 modes = enrollment_modes .ALL
102- return [self .expected_summary (course_id , modes ) for course_id in CourseSamples .course_ids ]
106+
107+ return [self .expected_summary (course_id , modes , availability ) for course_id in course_ids ]
103108
104109 @ddt .data (
105110 None ,
@@ -162,3 +167,15 @@ def test_no_matching_courses(self):
162167 def test_bad_course_id (self , course_ids ):
163168 response = self .authenticated_get (self .path (course_ids = course_ids ))
164169 self .verify_bad_course_id (response )
170+
171+ def test_collapse_upcoming (self ):
172+ self .generate_data (availability = 'Starting Soon' )
173+ self .generate_data (course_ids = ['foo/bar/baz' ], availability = 'Upcoming' )
174+ response = self .authenticated_get (self .path ())
175+ self .assertEquals (response .status_code , 200 )
176+
177+ expected_summaries = self .all_expected_summaries (availability = 'Upcoming' )
178+ expected_summaries .extend (self .all_expected_summaries (course_ids = ['foo/bar/baz' ],
179+ availability = 'Upcoming' ))
180+
181+ self .assertItemsEqual (response .data , expected_summaries )
0 commit comments