From 70b616ba18cef1e227343f39910e3bd8816f9d72 Mon Sep 17 00:00:00 2001 From: Roman Leonenkov <6890447+grafviktor@users.noreply.github.com> Date: Sun, 31 Dec 2023 21:15:05 +0300 Subject: [PATCH] IMPROVEMENT-24: Move mocks into a separate folder --- .github/workflows/tests.yml | 2 +- .golangci.yml | 3 +- Makefile | 2 +- internal/mock/logger.go | 15 +++++++++ internal/mock/storage.go | 65 +++++++++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 internal/mock/logger.go create mode 100644 internal/mock/storage.go diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 942491b..a04284f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,7 +27,7 @@ jobs: go-version: ${{ matrix.go-version }} cache: true - name: Test - run: go test -coverpkg=./internal/... -race -vet=off -count=1 -coverprofile unit.txt -covermode atomic ./... + run: go test -coverpkg=$(go list ./internal/...|grep -v mock) -race -vet=off -count=1 -coverprofile unit.txt -covermode atomic ./... - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: diff --git a/.golangci.yml b/.golangci.yml index 451e518..89dc7fa 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -30,7 +30,8 @@ run: # skip-files: # - ".*\\.my\\.go$" # - lib/bad.go - + skip-dirs: + - internal/mock # output configuration options output: diff --git a/Makefile b/Makefile index 2f89038..a957cca 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ audit: .PHONY: test test: @echo 'Running unit tests' - go test -coverpkg=./internal/... -race -vet=off -count=1 -coverprofile unit.txt -covermode atomic ./... + go test -coverpkg=$(go list ./internal/...|grep -v mock) -race -vet=off -count=1 -coverprofile unit.txt -covermode atomic ./... ## unit-test-report: display unit coverage report in html format .PHONY: unit-test-report diff --git a/internal/mock/logger.go b/internal/mock/logger.go new file mode 100644 index 0000000..c98669f --- /dev/null +++ b/internal/mock/logger.go @@ -0,0 +1,15 @@ +package mock + +type MockLogger struct{} + +func (l *MockLogger) Debug(format string, args ...any) { +} + +func (l *MockLogger) Info(format string, args ...any) { +} + +func (l *MockLogger) Error(format string, args ...any) { +} + +func (l *MockLogger) Close() { +} diff --git a/internal/mock/storage.go b/internal/mock/storage.go new file mode 100644 index 0000000..3d832f3 --- /dev/null +++ b/internal/mock/storage.go @@ -0,0 +1,65 @@ +package mock + +import ( + "errors" + + "github.com/grafviktor/goto/internal/model" +) + +// =============================================== Storage + +func NewMockStorage(shouldFail bool) *mockStorage { + hosts := []model.Host{ + model.NewHost(0, "Mock Host", "", "localhost", "root", "id_rsa", "2222"), + model.NewHost(0, "Mock Host", "", "localhost", "root", "id_rsa", "2222"), + model.NewHost(0, "Mock Host", "", "localhost", "root", "id_rsa", "2222"), + } + + return &mockStorage{ + shouldFail: shouldFail, + Hosts: hosts, + } +} + +type mockStorage struct { + shouldFail bool + Hosts []model.Host +} + +// Delete implements storage.HostStorage. +func (ms *mockStorage) Delete(id int) error { + if ms.shouldFail { + return errors.New("mock error") + } + + ms.Hosts = append(ms.Hosts[:id], ms.Hosts[id+1:]...) + + return nil +} + +// Get implements storage.HostStorage. +func (ms *mockStorage) Get(hostID int) (model.Host, error) { + if ms.shouldFail { + return model.Host{}, errors.New("mock error") + } + + return model.Host{}, nil +} + +// GetAll implements storage.HostStorage. +func (ms *mockStorage) GetAll() ([]model.Host, error) { + if ms.shouldFail { + return ms.Hosts, errors.New("mock error") + } + + return ms.Hosts, nil +} + +// Save implements storage.HostStorage. +func (ms *mockStorage) Save(m model.Host) (model.Host, error) { + if ms.shouldFail { + return m, errors.New("mock error") + } + + return m, nil +}