commit
71df28f7cf
@ -0,0 +1,31 @@ |
||||
name: Pull-Request |
||||
|
||||
on: |
||||
pull_request: |
||||
branches: [ master ] |
||||
|
||||
jobs: |
||||
|
||||
build: |
||||
name: Build |
||||
runs-on: ubuntu-latest |
||||
steps: |
||||
|
||||
- name: Set up Go 1.x |
||||
uses: actions/setup-go@v2 |
||||
with: |
||||
go-version: ^1.15 |
||||
id: go |
||||
|
||||
- name: Check out code into the Go module directory |
||||
uses: actions/checkout@v2 |
||||
|
||||
- name: Get dependencies |
||||
run: | |
||||
go get -v -t -d ./... |
||||
|
||||
- name: Build |
||||
run: go build -v . |
||||
|
||||
- name: Test |
||||
run: go test -cover ./... |
@ -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