def test_get_ocw_overwrite( mocker, settings, mock_course_index_functions, mock_blacklist, overwrite ): """Test that courses are overridden if force_overwrite=True""" setup_s3(settings) # run ocw sync get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=mock_blacklist.return_value, force_overwrite=False, upload_to_s3=True, ) assert Course.objects.count() == 1 assert CoursePrice.objects.count() == 1 assert CourseInstructor.objects.count() == 1 assert CourseTopic.objects.count() == 3 mock_digest = mocker.patch("course_catalog.api.digest_ocw_course") get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=mock_blacklist.return_value, force_overwrite=overwrite, upload_to_s3=True, ) assert mock_digest.call_count == (1 if overwrite else 0)
def test_get_ocw_typeerror(mocker, settings): """Test that a course is skipped if digest_ocw_course returns None""" setup_s3(settings) mock_info_logger = mocker.patch("course_catalog.api.log.info") mocker.patch("course_catalog.api.digest_ocw_course", return_value=None) get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=[], force_overwrite=True, upload_to_s3=True, ) mock_info_logger.assert_any_call("Course and run not returned, skipping")
def test_get_ocw_data_error_reading_s3(settings, mocker, mock_logger, mocked_celery): """ Test that an error reading from S3 is correctly logged """ mocker.patch("course_catalog.api.get_s3_object_and_read", side_effect=Exception) setup_s3(settings) get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=[], force_overwrite=False, upload_to_s3=True, ) mock_logger.assert_called_once_with( "Error encountered reading 1.json for %s", "PROD/9/9.15/Fall_2007/9-15-biochemistry-and-pharmacology-of-synaptic-transmission-fall-2007/", )
def test_get_ocw_data_error_parsing(settings, mocker, mock_logger, mocked_celery): """ Test that an error parsing ocw data is correctly logged """ mocker.patch( "course_catalog.api.OCWParser.setup_s3_uploading", side_effect=Exception ) setup_s3(settings) get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=[], force_overwrite=False, upload_to_s3=True, ) mock_logger.assert_any_call( "Error encountered parsing OCW json for %s", TEST_PREFIX )
def test_get_ocw_data_upload_all_or_image(settings, mocker, image_only, mocked_celery): """ Test that the ocw parser uploads all files or just images depending on settings """ settings.OCW_UPLOAD_IMAGE_ONLY = image_only mock_upload_all = mocker.patch( "course_catalog.api.OCWParser.upload_all_media_to_s3" ) mock_upload_image = mocker.patch("course_catalog.api.OCWParser.upload_course_image") setup_s3(settings) get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=[], force_overwrite=False, upload_to_s3=True, ) assert mock_upload_image.call_count == (1 if image_only else 0) assert mock_upload_all.call_count == (0 if image_only else 1)
def test_get_ocw_courses( settings, mock_course_index_functions, mocked_celery, mock_blacklist, blacklisted ): """ Test ocw sync task """ setup_s3(settings) if blacklisted: mock_blacklist.return_value = ["9.15"] # run ocw sync get_ocw_courses.delay( course_prefixes=[TEST_PREFIX], blacklist=mock_blacklist.return_value, force_overwrite=False, upload_to_s3=True, ) assert Course.objects.count() == 1 assert CoursePrice.objects.count() == 1 assert CourseInstructor.objects.count() == 1 assert CourseTopic.objects.count() == 3 course = Course.objects.first() assert course.published is not blacklisted if not blacklisted: s3 = boto3.resource( "s3", aws_access_key_id=settings.OCW_LEARNING_COURSE_BUCKET_NAME, aws_secret_access_key=settings.OCW_LEARNING_COURSE_ACCESS_KEY, ) # The filename was pulled from the uid 1.json in the TEST_JSON_PATH files. obj = s3.Object( settings.OCW_LEARNING_COURSE_BUCKET_NAME, "9-15-biochemistry-and-pharmacology-of-synaptic-transmission-fall-2007/16197636c270e1ab179fbc9a56c72787_master.json", ) assert json.loads(obj.get()["Body"].read()) assert course.image_src.startswith("http") else: assert course.image_src == ""