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
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
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" ]
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())
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" )
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
def test_requests_mock(requests_mock): mock_subjects(requests_mock) client = Client("whatever") subjects = client.subjects() assert isinstance(subjects, Iterator)