Exemple #1
0
def test_extract_subtitles_from_video_dom(input_filename,output_filename,subtitle_language, video_id):
    video_dom = json.loads(slurp_fixture('json/%s' % input_filename))
    expected_output = json.loads(slurp_fixture('json/%s' % output_filename))
    course = api.CourseraOnDemand(
        session=Mock(cookies={}), course_id='0', course_name='test_course')
    actual_output = course._extract_subtitles_from_video_dom(video_dom, subtitle_language, video_id)
    actual_output = json.loads(json.dumps(actual_output))
    assert actual_output == expected_output
Exemple #2
0
def test_ondemand_programming_supplement_one_asset(get_page, course):
    one_asset_tag = slurp_fixture("json/supplement-programming-one-asset.json")
    one_asset_url = slurp_fixture("json/asset-urls-one.json")
    asset_json = json.loads(one_asset_url)
    get_page.side_effect = [one_asset_tag, one_asset_url]

    expected_output = {"pdf": [(asset_json["elements"][0]["url"], "statement-pca")]}
    output = course.extract_links_from_programming("0")
    assert expected_output == output
Exemple #3
0
def test_ondemand_programming_supplement_three_assets(get_page, course):
    three_assets_tag = slurp_fixture('json/supplement-programming-three-assets.json')
    three_assets_url = slurp_fixture('json/asset-urls-three.json')
    get_page.side_effect = [three_assets_tag, three_assets_url]

    expected_output = json.loads(slurp_fixture('json/supplement-three-assets-output.json'))
    output = course.extract_links_from_programming('0')
    output = json.loads(json.dumps(output))
    assert expected_output == output
Exemple #4
0
def test_quiz_exam_to_markup_converter(input_filename, output_filename):
    quiz_json = json.loads(slurp_fixture('json/quiz-to-markup/%s' % input_filename))
    expected_output = slurp_fixture('json/quiz-to-markup/%s' % output_filename).strip()

    converter = api.QuizExamToMarkupConverter(session=None)
    actual_output = converter(quiz_json).strip()
    # print('>%s<' % expected_output)
    # print('>%s<' % actual_output)
    assert actual_output == expected_output
Exemple #5
0
def test_extract_links_from_lecture_assets_typename_asset(get_page, course):
    open_course_assets_reply = slurp_fixture('json/supplement-open-course-assets-reply.json')
    api_assets_v1_reply = slurp_fixture('json/supplement-api-assets-v1-reply.json')
    get_page.side_effect = [open_course_assets_reply, api_assets_v1_reply]

    expected_output = json.loads(slurp_fixture('json/supplement-extract-links-from-lectures-output.json'))
    assets = ['giAxucdaEeWJTQ5WTi8YJQ']
    output = course._extract_links_from_lecture_assets(assets)
    output = json.loads(json.dumps(output))
    assert expected_output == output
Exemple #6
0
def test_ondemand_programming_supplement_one_asset(get_page, course):
    one_asset_tag = slurp_fixture('json/supplement-programming-one-asset.json')
    one_asset_url = slurp_fixture('json/asset-urls-one.json')
    asset_json = json.loads(one_asset_url)
    get_page.side_effect = [one_asset_tag, one_asset_url]

    expected_output = {'pdf': [(asset_json['elements'][0]['url'],
                               'statement-pca')]}
    output = course.extract_links_from_programming('0')
    assert expected_output == output
def test_extract_supplement_links(input, output):
    page_text = slurp_fixture(input)
    expected_output = json.loads(slurp_fixture(output))

    course = api.CourseraOnDemand(session=None, course_id="0")
    output = course._extract_links_from_text(page_text)
    # This is the easiest way to convert nested tuples to lists
    output = json.loads(json.dumps(output))

    assert expected_output == output
Exemple #8
0
def test_extract_references_poll(get_page, course):
    """
    Test extracting course references.
    """
    get_page.side_effect = [
        json.loads(slurp_fixture('json/references-poll-reply.json'))
    ]
    expected_output = json.loads(
        slurp_fixture('json/references-poll-output.json'))
    output = course.extract_references_poll()
    assert expected_output == output
Exemple #9
0
def test_list_courses(get_page, course):
    """
    Test course listing method.
    """
    get_page.side_effect = [
        json.loads(slurp_fixture('json/list-courses-input.json'))
    ]
    expected_output = json.loads(slurp_fixture('json/list-courses-output.json'))
    expected_output = expected_output['courses']
    output = course.list_courses()
    assert expected_output == output
Exemple #10
0
def test_ondemand_programming_supplement_no_instructions(get_page, course):
    no_instructions = slurp_fixture(
        'json/supplement-programming-no-instructions.json')
    get_page.return_value = json.loads(no_instructions)

    output = course.extract_links_from_programming('0')
    assert {} == output
Exemple #11
0
def test_asset_retriever(get_reply, get_page):
    reply = json.loads(slurp_fixture('json/asset-retriever/assets-reply.json'))
    get_page.side_effect = [reply]
    get_reply.side_effect = [Mock(status_code=200, content='<...>',
                                  headers=Mock(get=Mock(return_value='image/png')))] * 4

    asset_ids = ['bWTK9sYwEeW7AxLLCrgDQQ',
                 'VceKeChKEeaOMw70NkE3iw',
                 'VcmGXShKEea4ehL5RXz3EQ',
                 'vdqUTz61Eea_CQ5dfWSAjQ']

    expected_output = [
        api.Asset(id="bWTK9sYwEeW7AxLLCrgDQQ", name="M111.mp3", type_name="audio",
                  url="url4", content_type="image/png", data="<...>"),
        api.Asset(id="VceKeChKEeaOMw70NkE3iw", name="09_graph_decomposition_problems_1.pdf",
                  type_name="pdf", url="url7", content_type="image/png", data="<...>"),
        api.Asset(id="VcmGXShKEea4ehL5RXz3EQ", name="09_graph_decomposition_starter_files_1.zip",
                  type_name="generic", url="url2", content_type="image/png", data="<...>"),
        api.Asset(id="vdqUTz61Eea_CQ5dfWSAjQ", name="Capture.PNG",
                  type_name="image", url="url9", content_type="image/png", data="<...>"),
    ]

    retriever = api.AssetRetriever(session=None)
    actual_output = retriever(asset_ids)

    assert expected_output == actual_output
Exemple #12
0
def test_ondemand_from_peer_assignment_instructions(
        get_page, course, input_filename, expected_output):
    instructions = slurp_fixture('json/%s' % input_filename)
    get_page.return_value = json.loads(instructions)

    output = course.extract_links_from_peer_assignment('0')
    assert expected_output == links_to_plain_text(output)
Exemple #13
0
def test_ondemand_programming_supplement_three_assets(get_page, course):
    three_assets_tag = slurp_fixture('json/supplement-programming-three-assets.json')
    three_assets_url = slurp_fixture('json/asset-urls-three.json')
    get_page.side_effect = [json.loads(three_assets_tag),
                                 json.loads(three_assets_url)]

    expected_output = json.loads(slurp_fixture('json/supplement-three-assets-output.json'))
    output = course.extract_links_from_programming('0')
    output = json.loads(json.dumps(output))

    # Make sure that SOME html content has been extracted, but remove
    # it immeditely because it's a hassle to properly prepare test input
    # for it. FIXME later.
    assert 'html' in output
    del output['html']

    assert expected_output == output
Exemple #14
0
def test_ondemand_programming_immediate_instructions_one_asset(get_page, course):
    one_asset_tag = slurp_fixture('json/supplement-programming-immediate-instructions-one-asset.json')
    one_asset_url = slurp_fixture('json/asset-urls-one.json')
    asset_json = json.loads(one_asset_url)
    get_page.side_effect = [json.loads(one_asset_tag),
                                 json.loads(one_asset_url)]

    expected_output = {'pdf': [(asset_json['elements'][0]['url'],
                               'statement-pca')]}
    output = course.extract_links_from_programming_immediate_instructions('0')

    # Make sure that SOME html content has been extracted, but remove
    # it immeditely because it's a hassle to properly prepare test input
    # for it. FIXME later.
    assert 'html' in output
    del output['html']

    assert expected_output == output
Exemple #15
0
def test_ondemand_programming_supplement_empty_instructions(get_page, course):
    empty_instructions = slurp_fixture('json/supplement-programming-empty-instructions.json')
    get_page.return_value = json.loads(empty_instructions)
    output = course.extract_links_from_programming('0')

    # Make sure that SOME html content has been extracted, but remove
    # it immeditely because it's a hassle to properly prepare test input
    # for it. FIXME later.
    assert 'html' in output
    del output['html']

    assert {} == output
Exemple #16
0
def test_extract_links_from_lecture_assets_typname_url_and_asset(get_page, course):
    """
    This test makes sure that _extract_links_from_lecture_assets grabs url
    links both from typename == 'asset' and == 'url'.
    """
    get_page.side_effect = [
        json.loads(slurp_fixture(
            'json/supplement-open-course-assets-typename-url-reply-1.json')),
        json.loads(slurp_fixture(
            'json/supplement-open-course-assets-typename-url-reply-2.json')),
        json.loads(slurp_fixture(
            'json/supplement-open-course-assets-typename-url-reply-3.json')),
        json.loads(slurp_fixture(
            'json/supplement-open-course-assets-typename-url-reply-4.json')),
        json.loads(slurp_fixture(
            'json/supplement-open-course-assets-typename-url-reply-5.json')),
    ]

    expected_output = json.loads(slurp_fixture(
        'json/supplement-extract-links-from-lectures-url-asset-output.json'))
    assets = ['Yry0spSKEeW8oA5fR3afVQ',
              'kMQyUZSLEeWj-hLVp2Pm8w',
              'xkAloZmJEeWjYA4jOOgP8Q']
    output = course._extract_links_from_lecture_assets(assets)
    output = json.loads(json.dumps(output))
    assert expected_output == output
Exemple #17
0
def test_ondemand_programming_supplement_empty_instructions(
        get_page_json, course):
    empty_instructions = slurp_fixture(
        'json/supplement-programming-empty-instructions.json')
    get_page_json.return_value = json.loads(empty_instructions)
    output = course.extract_links_from_programming('0')

    # Make sure that SOME html content has been extracted, but remove
    # it immeditely because it's a hassle to properly prepare test input
    # for it. FIXME later.
    assert 'html' in output
    del output['html']

    assert {} == output
Exemple #18
0
def test_asset_retriever(get_reply, get_page):
    reply = json.loads(slurp_fixture('json/asset-retriever/assets-reply.json'))
    get_page.side_effect = [reply]
    get_reply.side_effect = [
        Mock(status_code=200,
             content='<...>',
             headers=Mock(get=Mock(return_value='image/png')))
    ] * 4

    asset_ids = [
        'bWTK9sYwEeW7AxLLCrgDQQ', 'VceKeChKEeaOMw70NkE3iw',
        'VcmGXShKEea4ehL5RXz3EQ', 'vdqUTz61Eea_CQ5dfWSAjQ'
    ]

    expected_output = [
        api.Asset(id="bWTK9sYwEeW7AxLLCrgDQQ",
                  name="M111.mp3",
                  type_name="audio",
                  url="url4",
                  content_type="image/png",
                  data="<...>"),
        api.Asset(id="VceKeChKEeaOMw70NkE3iw",
                  name="09_graph_decomposition_problems_1.pdf",
                  type_name="pdf",
                  url="url7",
                  content_type="image/png",
                  data="<...>"),
        api.Asset(id="VcmGXShKEea4ehL5RXz3EQ",
                  name="09_graph_decomposition_starter_files_1.zip",
                  type_name="generic",
                  url="url2",
                  content_type="image/png",
                  data="<...>"),
        api.Asset(id="vdqUTz61Eea_CQ5dfWSAjQ",
                  name="Capture.PNG",
                  type_name="image",
                  url="url9",
                  content_type="image/png",
                  data="<...>"),
    ]

    retriever = api.AssetRetriever(session=None)
    actual_output = retriever(asset_ids)

    assert expected_output == actual_output
Exemple #19
0
def test_extract_links_from_lecture_assets_typname_url_and_asset(get_page, course):
    """
    This test makes sure that _extract_links_from_lecture_assets grabs url
    links both from typename == 'asset' and == 'url'.
    """
    get_page.side_effect = [
        json.loads(slurp_fixture('json/supplement-open-course-assets-typename-url-reply-1.json')),
        json.loads(slurp_fixture('json/supplement-open-course-assets-typename-url-reply-2.json')),
        json.loads(slurp_fixture('json/supplement-open-course-assets-typename-url-reply-3.json')),
        json.loads(slurp_fixture('json/supplement-open-course-assets-typename-url-reply-4.json')),
        json.loads(slurp_fixture('json/supplement-open-course-assets-typename-url-reply-5.json')),
    ]

    expected_output = json.loads(slurp_fixture('json/supplement-extract-links-from-lectures-url-asset-output.json'))
    assets = ['Yry0spSKEeW8oA5fR3afVQ',
              'kMQyUZSLEeWj-hLVp2Pm8w',
              'xkAloZmJEeWjYA4jOOgP8Q']
    output = course._extract_links_from_lecture_assets(assets)
    output = json.loads(json.dumps(output))
    assert expected_output == output
Exemple #20
0
def test_ondemand_programming_supplement_no_instructions(get_page, course):
    no_instructions = slurp_fixture("json/supplement-programming-no-instructions.json")
    get_page.return_value = no_instructions

    output = course.extract_links_from_programming("0")
    assert {} == output
Exemple #21
0
def test_ondemand_programming_supplement_empty_instructions(get_page, course):
    empty_instructions = slurp_fixture('json/supplement-programming-empty-instructions.json')
    get_page.return_value = empty_instructions

    output = course.extract_links_from_programming('0')
    assert {} == output
Exemple #22
0
def test_ondemand_programming_supplement_empty_instructions(get_page, course):
    empty_instructions = slurp_fixture('json/supplement-programming-empty-instructions.json')
    get_page.return_value = empty_instructions

    output = course.extract_links_from_programming('0')
    assert {} == output
Exemple #23
0
def test_ondemand_programming_supplement_no_instructions(get_page, course):
    no_instructions = slurp_fixture('json/supplement-programming-no-instructions.json')
    get_page.return_value = json.loads(no_instructions)

    output = course.extract_links_from_programming('0')
    assert {} == output