Fix lastRefreshError not being reset on success (#11)
parent
833f684859
commit
ca0c83c5ad
@ -0,0 +1,105 @@ |
||||
package collector |
||||
|
||||
import ( |
||||
"errors" |
||||
"testing" |
||||
"time" |
||||
|
||||
netatmo "github.com/exzz/netatmo-api-go" |
||||
"github.com/google/go-cmp/cmp" |
||||
"github.com/sirupsen/logrus" |
||||
) |
||||
|
||||
func TestRefreshData(t *testing.T) { |
||||
testData := &netatmo.DeviceCollection{} |
||||
testError := errors.New("test error") |
||||
tt := []struct { |
||||
desc string |
||||
time time.Time |
||||
readFunction ReadFunction |
||||
wantTime time.Time |
||||
wantData *netatmo.DeviceCollection |
||||
wantError error |
||||
}{ |
||||
{ |
||||
desc: "success", |
||||
time: time.Unix(0, 0), |
||||
readFunction: func() (*netatmo.DeviceCollection, error) { |
||||
return testData, nil |
||||
}, |
||||
wantTime: time.Unix(0, 0), |
||||
wantData: testData, |
||||
wantError: nil, |
||||
}, |
||||
{ |
||||
desc: "error", |
||||
time: time.Unix(0, 0), |
||||
readFunction: func() (*netatmo.DeviceCollection, error) { |
||||
return nil, testError |
||||
}, |
||||
wantTime: time.Time{}, |
||||
wantData: nil, |
||||
wantError: testError, |
||||
}, |
||||
} |
||||
|
||||
for _, tc := range tt { |
||||
tc := tc |
||||
t.Run(tc.desc, func(t *testing.T) { |
||||
t.Parallel() |
||||
|
||||
c := &NetatmoCollector{ |
||||
Log: logrus.New(), |
||||
ReadFunction: tc.readFunction, |
||||
} |
||||
c.RefreshData(tc.time) |
||||
|
||||
if c.cacheTimestamp != tc.wantTime { |
||||
t.Errorf("got time %s, want %s", c.cacheTimestamp, tc.wantTime) |
||||
} |
||||
|
||||
if diff := cmp.Diff(c.cachedData, tc.wantData); diff != "" { |
||||
t.Errorf("data differs: -got+want\n%s", diff) |
||||
} |
||||
|
||||
if c.lastRefreshError != tc.wantError { |
||||
t.Errorf("got error %q, want %q", c.lastRefreshError, tc.wantError) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
|
||||
func TestRefreshDataResetError(t *testing.T) { |
||||
testData := &netatmo.DeviceCollection{} |
||||
testError := errors.New("test error") |
||||
successFunc := func() (*netatmo.DeviceCollection, error) { |
||||
return testData, nil |
||||
} |
||||
errorFunc := func() (*netatmo.DeviceCollection, error) { |
||||
return nil, testError |
||||
} |
||||
|
||||
c := &NetatmoCollector{ |
||||
Log: logrus.New(), |
||||
ReadFunction: successFunc, |
||||
} |
||||
c.RefreshData(time.Unix(0, 0)) |
||||
|
||||
if c.lastRefreshError != nil { |
||||
t.Errorf("got error %q, want none", c.lastRefreshError) |
||||
} |
||||
|
||||
c.ReadFunction = errorFunc |
||||
c.RefreshData(time.Unix(1, 0)) |
||||
|
||||
if c.lastRefreshError != testError { |
||||
t.Errorf("got error %q, want %q", c.lastRefreshError, testError) |
||||
} |
||||
|
||||
c.ReadFunction = successFunc |
||||
c.RefreshData(time.Unix(0, 0)) |
||||
|
||||
if c.lastRefreshError != nil { |
||||
t.Errorf("got error %q, want none", c.lastRefreshError) |
||||
} |
||||
} |
Loading…
Reference in new issue