示例#1
0
def test_expected_subjectable_resources_work(requests_mock):
    mock_assignments(requests_mock)
    mock_summary(requests_mock)
    mock_subjects(requests_mock)
    mock_reviews(requests_mock)
    mock_single_subject(requests_mock)
    mock_study_materials(requests_mock)
    mock_summary(requests_mock)

    client = Client("arbitrary_api_key")

    assignments = client.assignments()
    assert assignments[0].subject is not None

    study_materials = client.study_materials()
    assert study_materials[0].subject is not None

    study_materials = client.study_materials()
    assert study_materials[0].subject is not None

    summary = client.summary()
    assert summary.reviews[0].subjects is not None

    reviews = client.reviews()
    assert reviews[0].subject is not None
示例#2
0
def test_subjectable_mixin_works(requests_mock):
    mock_subjects(requests_mock)
    mock_assignments(requests_mock)
    client = Client("arbitrary_api_key", subject_cache_enabled=True)

    assignments = client.assignments()
    assignment = assignments[0]
    subj = assignment.subject
    assert subj.id == assignment.subject_id
示例#3
0
def test_client_can_get_subjects(requests_mock):
    mock_subjects(requests_mock)

    client = Client("v2_api_key")

    subjects = client.subjects()
    assert len(subjects.current_page.data) > 0
    assert subjects.current_page.data[0].resource in [
        "vocabulary", "kanji", "radical"
    ]
示例#4
0
def test_parameters_convert_datetime_to_string_correctly(requests_mock):
    mock_subjects(requests_mock)
    v2_api_key = "arbitrary_api_key"
    client = Client(v2_api_key)
    now = datetime.datetime.now()

    client.subjects(updated_after=now)

    assert requests_mock.call_count == 1
    assert (requests_mock.request_history[0].url ==
            "https://api.wanikani.com/v2/subjects?updated_after=" +
            now.isoformat())
示例#5
0
def test_subject_parameters_are_properly_converted(requests_mock):
    mock_subjects(requests_mock)
    v2_api_key = "arbitrary_api_key"
    client = Client(v2_api_key)

    client.subjects(ids=[1, 2, 3], hidden=False, slugs=["abc", "123"])

    assert requests_mock.call_count == 1
    assert (
        requests_mock.request_history[0].url ==
        "https://api.wanikani.com/v2/subjects?hidden=false&ids=1,2,3&slugs=abc,123"
    )
示例#6
0
def test_client_uses_cache(requests_mock):
    mock_subjects(requests_mock)
    mock_assignments(requests_mock)
    v2_api_key = "arbitrary_api_key"
    client = Client(v2_api_key, subject_cache_enabled=True)
    assignments = client.assignments()
    for ass in assignments:
        print(ass.subject.level)  # in theory here, if we have _not_ cached

    assert requests_mock.call_count == 2
    history = requests_mock.request_history
    assert "subjects" in history[0].url
    assert "assignments" in history[1].url
示例#7
0
def test_requests_mock(requests_mock):
    mock_subjects(requests_mock)

    client = Client("whatever")
    subjects = client.subjects()
    assert isinstance(subjects, Iterator)