Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
def test_process_datapoint_raises(point):
    with pytest.raises(ValueError):
        GfitAPI.process_datapoint(point, data_type=Mock())