def test_login(build, get_creds, enter, httplib): creds = get_creds.return_value api = GfitAPI({}) ret = api.login() assert creds.authorize.call_args_list == [call(httplib.Http.return_value)] assert build.call_args_list == [call('fitness', 'v1', http=creds.authorize.return_value)] assert api.api == build.return_value assert ret == enter.return_value
def test_credentials_are_refreshed_when_invalid(storage_get): with patch.object(GfitAPI, 'refresh_credentials') as refresh_creds,\ patch('gfitpy.gfit_api.Storage') as storage: storage.return_value.get.return_value = storage_get api = GfitAPI({}) ret = api.get_credentials() # refresh_credentials was not called assert refresh_creds.call_args_list == [call(storage.return_value)] assert ret == refresh_creds.return_value
def test_credentials_are_not_touched_when_valid(storage, refresh_creds): storage = storage.return_value # storage returns something that is valid storage.get.return_value = Mock(invalid=False) api = GfitAPI({}) ret = api.get_credentials() # refresh_credentials was not called assert refresh_creds.call_args_list == [] assert ret == storage.get.return_value
def test_process_datapoint_gets_value(): val = Mock() data_type = 'my_data_type' point = { 'startTimeNanos': 1, 'endTimeNanos': 1, 'value': [{data_type: val}] } with patch('gfitpy.gfit_api.datetime'), \ patch('gfitpy.gfit_api.DateRange'): ret = GfitAPI.process_datapoint(point, data_type) assert ret['value'] == val
def test_process_datapoint_creates_timerange(): point = { 'startTimeNanos': 1000000000, 'endTimeNanos': 2000000000, 'value': [MagicMock()] } with patch('gfitpy.gfit_api.datetime') as dt, \ patch('gfitpy.gfit_api.DateRange') as dr: # use the str cast as a way to distinguish what goes in (1, 2) and what comes out ('1', '2') dt.fromtimestamp.side_effect = str ret = GfitAPI.process_datapoint(point, Mock()) assert dt.fromtimestamp.call_args_list == [call(1), call(2)] dr.assert_called_once_with('1.0', '2.0') assert ret['times'] == dr.return_value
def test_get_time_range(): start = Mock(timestamp=Mock(return_value=1)) end = Mock(timestamp=Mock(return_value=2)) expected = '1000000000-2000000000' assert GfitAPI.get_time_range_str(start, end) == expected
def test_process_datapoint_raises(point): with pytest.raises(ValueError): GfitAPI.process_datapoint(point, data_type=Mock())