'Tests if CourseOverviews and CourseDescriptors behave the same
by comparing pairs of them given a variety of scenarios.
Arguments:
course_kwargs (dict): kwargs to be passed to course constructor.
modulestore_type (ModuleStoreEnum.Type): type of store to create the
course in.'

@ddt.data(*itertools.product([{'display_name': 'Test    Course', 'start': LAST_WEEK, 'end': NEXT_WEEK, 'announcement': LAST_MONTH, 'advertised_start': '2015-01-01    11:22:33', 'pre_requisite_courses': ['course-v1://edX+test1+run1', 'course-v1://edX+test2+run1'], 'static_asset_path': '/my/abs/path', 'certificates_show_before_end': True}, {'display_name': '', 'start': NEXT_WEEK, 'end': NEXT_MONTH, 'advertised_start': 'Very    Soon!', 'pre_requisite_courses': [], 'static_asset_path': 'my/relative/path', 'certificates_show_before_end': False, 'catalog_visibility': CATALOG_VISIBILITY_CATALOG_AND_ABOUT}, {'display_name': '', 'start': LAST_MONTH, 'end': LAST_WEEK, 'advertised_start': None, 'pre_requisite_courses': [], 'static_asset_path': '', 'certificates_show_before_end': False, 'catalog_visibility': CATALOG_VISIBILITY_ABOUT}, {'start': DEFAULT_START_DATE, 'end': None, 'advertised_start': None, 'pre_requisite_courses': [], 'static_asset_path': None, 'certificates_show_before_end': False, 'catalog_visibility': CATALOG_VISIBILITY_NONE}], [ModuleStoreEnum.Type.mongo, ModuleStoreEnum.Type.split]))
@ddt.unpack
def test_course_overview_behavior(self, course_kwargs, modulestore_type):

    course = CourseFactory.create(default_store=modulestore_type, run='TestRun', **course_kwargs)
    self.check_course_overview_against_course(course)
