Skip to content

Commit

Permalink
chore: add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
freak12techno committed May 3, 2024
1 parent 75e52f9 commit 3db1a9f
Show file tree
Hide file tree
Showing 2 changed files with 161 additions and 2 deletions.
32 changes: 30 additions & 2 deletions pkg/fs/test_fs.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
package fs

import (
"errors"
"main/assets"
"os"
)

type TestFS struct{}
type TestFS struct {
WithWriteError bool
WithCreateError bool

WithFileWriteError bool
WithFileCloseError bool
}

type TestFile struct {
WithFileWriteError bool
WithFileCloseError bool
}

func (f *TestFile) Write(p []byte) (int, error) {
if f.WithFileWriteError {
return 0, errors.New("stub error")
}

return 0, nil
}

func (f *TestFile) Close() error {
if f.WithFileCloseError {
return errors.New("stub error")
}

return nil
}

Expand All @@ -23,9 +40,20 @@ func (fs *TestFS) ReadFile(name string) ([]byte, error) {
}

func (fs *TestFS) WriteFile(name string, data []byte, perms os.FileMode) error {
if fs.WithWriteError {
return errors.New("stub error")
}

return nil
}

func (fs *TestFS) Create(path string) (File, error) {
return &TestFile{}, nil // go
if fs.WithCreateError {
return nil, errors.New("stub error")
}

return &TestFile{
WithFileWriteError: fs.WithFileWriteError,
WithFileCloseError: fs.WithFileCloseError,
}, nil
}
131 changes: 131 additions & 0 deletions pkg/mutes/manager_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package mutesmanager

import (
"github.com/stretchr/testify/assert"

Check failure on line 4 in pkg/mutes/manager_test.go

View workflow job for this annotation

GitHub Actions / lint

File is not `goimports`-ed (goimports)
"main/pkg/fs"
"main/pkg/logger"
"testing"
"time"
)

func TestMuteManagerLoadWithoutPath(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("", filesystem, log)
manager.Load()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerLoadNotExistingPath(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("not-existing.json", filesystem, log)
manager.Load()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerLoadInvalidJson(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("invalid-json.json", filesystem, log)
manager.Load()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerLoadValidJson(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("valid-mutes.json", filesystem, log)
manager.Load()

assert.NotEmpty(t, manager.Mutes.Mutes)
}

func TestMuteManagerSaveWithoutPath(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("", filesystem, log)
manager.Load()
manager.Save()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerSaveWithError(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{WithWriteError: true}

manager := NewMutesManager("out.json", filesystem, log)
manager.Load()
manager.Save()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerSaveWithoutError(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("out.json", filesystem, log)
manager.Load()
manager.Save()

assert.Empty(t, manager.Mutes.Mutes)
}

func TestMuteManagerAddMuteIsMuted(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("out.json", filesystem, log)
manager.Load()

manager.AddMute(&Mute{
Chain: "chain",
Expires: time.Now().Add(time.Hour),
})

assert.True(t, manager.IsMuted("chain", "proposal"))
assert.False(t, manager.IsMuted("chain2", "proposal"))
}

func TestMuteManagerIsMutedNoPath(t *testing.T) {
t.Parallel()

log := logger.GetNopLogger()
filesystem := &fs.TestFS{}

manager := NewMutesManager("", filesystem, log)
manager.Load()

manager.AddMute(&Mute{
Chain: "chain",
Expires: time.Now().Add(time.Hour),
})

assert.False(t, manager.IsMuted("chain", "proposal"))
}

0 comments on commit 3db1a9f

Please sign in to comment.