Skip to content

Commit

Permalink
add more tests for storage package
Browse files Browse the repository at this point in the history
  • Loading branch information
0x46616c6b committed Dec 21, 2019
1 parent 4b216c2 commit 515f7a0
Show file tree
Hide file tree
Showing 5 changed files with 247 additions and 20 deletions.
13 changes: 7 additions & 6 deletions internal/storage/message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TestFindByTicker(t *testing.T) {
Domain: "demoticker.org",
}

storage.DB.Save(&ticker)
_ = storage.DB.Save(&ticker)

c := createContext("")
pagination := util.NewPagination(&c)
Expand Down Expand Up @@ -122,7 +122,7 @@ func TestFindByTickerInactive(t *testing.T) {
Active: false,
}

storage.DB.Save(&ticker)
_ = storage.DB.Save(&ticker)

c := createContext("")
pagination := util.NewPagination(&c)
Expand All @@ -146,9 +146,10 @@ func createContext(query string) gin.Context {

func setup() {
if storage.DB == nil {
storage.DB = storage.OpenDB(fmt.Sprintf("%s/ticker_%d.db", os.TempDir(), time.Now().Unix()))
storage.DB = storage.OpenDB(fmt.Sprintf("%s/ticker_%d.db", os.TempDir(), time.Now().Nanosecond()))
}
storage.DB.Drop("Ticker")
storage.DB.Drop("Message")
storage.DB.Drop("User")
_ = storage.DB.Drop("Ticker")
_ = storage.DB.Drop("Message")
_ = storage.DB.Drop("User")
_ = storage.DB.Drop("Setting")
}
77 changes: 77 additions & 0 deletions internal/storage/setting_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package storage_test

import (
"testing"

"github.com/stretchr/testify/assert"

"github.com/systemli/ticker/internal/model"
"github.com/systemli/ticker/internal/storage"
)

func TestFindSetting(t *testing.T) {
setup()

_, err := storage.FindSetting("key")
if err == nil {
t.Fail()
return
}

setting := model.NewSetting("key", "value")
_ = storage.DB.Save(setting)

found, err := storage.FindSetting("key")
if err != nil {
t.Fail()
return
}

assert.Equal(t, 1, found.ID)
assert.Equal(t, "value", found.Value)
}

func TestGetInactiveSettings(t *testing.T) {
setup()

s := storage.GetInactiveSettings()

assert.Equal(t, 0, s.ID)

_ = storage.DB.Save(s)

s = storage.GetInactiveSettings()

assert.Equal(t, 1, s.ID)
}

func TestGetRefreshInterval(t *testing.T) {
setup()

s := storage.GetRefreshInterval()

assert.Equal(t, 0, s.ID)

_ = storage.DB.Save(s)

s = storage.GetRefreshInterval()

assert.Equal(t, 1, s.ID)
}

func TestGetRefreshIntervalValue(t *testing.T) {
setup()

v := storage.GetRefreshIntervalValue()

assert.Equal(t, 10000, v)

var value float64
value = 20000.00
s := model.NewSetting(model.SettingRefreshInterval, value)
_ = storage.DB.Save(s)

v = storage.GetRefreshIntervalValue()

assert.Equal(t, 20000, v)
}
32 changes: 32 additions & 0 deletions internal/storage/ticker_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package storage_test

import (
"testing"

"github.com/stretchr/testify/assert"

"github.com/systemli/ticker/internal/model"
"github.com/systemli/ticker/internal/storage"
)

func TestFindTicker(t *testing.T) {
setup()

ticker := model.NewTicker()
ticker.Domain = "localhost"
_ = storage.DB.Save(ticker)

ticker, err := storage.FindTicker("localhost")
if err != nil {
t.Fail()
return
}

assert.Equal(t, 1, ticker.ID)

ticker, err = storage.FindTicker("example.com")
if err == nil {
t.Fail()
return
}
}
2 changes: 2 additions & 0 deletions internal/storage/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package storage

import (
"errors"

"github.com/asdine/storm/q"

. "github.com/systemli/ticker/internal/model"
)

Expand Down
143 changes: 129 additions & 14 deletions internal/storage/user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,43 +12,158 @@ import (
func TestFindUserByID(t *testing.T) {
setup()

u, err := NewUser("louis@systemli.org", "password")
u := initUserTestData(t)

user, err := FindUserByID(u.ID)
if err != nil {
t.Fail()
return
}

DB.Save(u)

user, err := FindUserByID(u.ID)

assert.Equal(t, u.ID, user.ID)
assert.Nil(t, err)

user, err = FindUserByID(2)

assert.Equal(t, 0, user.ID)
_, err = FindUserByID(2)
assert.NotNil(t, err)
}

func TestUserAuthenticate(t *testing.T) {
func TestFindUsers(t *testing.T) {
setup()

u, err := NewUser("louis@systemli.org", "password")
users, err := FindUsers()
if err == nil {
t.Fail()
return
}

u := initUserTestData(t)

users, err = FindUsers()
if err != nil {
t.Fail()
return
}

assert.Equal(t, 1, len(users))
assert.Equal(t, u.ID, users[0].ID)
}

func TestFindUsersByTicker(t *testing.T) {
setup()

ticker := NewTicker()
_ = DB.Save(ticker)

users, err := FindUsersByTicker(*ticker)
if err != nil {
t.Fail()
}

DB.Save(u)
assert.Equal(t, 0, len(users))

u := initUserTestData(t)
u.Tickers = []int{ticker.ID}
_ = DB.Save(u)

users, err = FindUsersByTicker(*ticker)
if err != nil {
t.Fail()
}

assert.Equal(t, 1, len(users))
}

func TestUserAuthenticate(t *testing.T) {
setup()

u := initUserTestData(t)

user, err := UserAuthenticate("louis@systemli.org", "password")
if err != nil {
t.Fail()
return
}
assert.Equal(t, u.ID, user.ID)
assert.Nil(t, err)

user, err = UserAuthenticate("louis@systemli.org", "wrong")
assert.Equal(t, u.ID, user.ID)
assert.NotNil(t, err)

user, err = UserAuthenticate("admin@systemli.org", "password")
assert.Equal(t, 0, user.ID)
assert.NotNil(t, err)
}

func TestAddUsersToTicker(t *testing.T) {
setup()

u := initUserTestData(t)
ticker := NewTicker()
_ = DB.Save(ticker)

err := AddUsersToTicker(*ticker, []int{u.ID})
if err != nil {
t.Fail()
}

var user User
err = DB.One("ID", 1, &user)
if err != nil {
t.Fail()
return
}

assert.Equal(t, 1, len(user.Tickers))

err = AddUsersToTicker(*ticker, []int{2})
if err == nil {
t.Fail()
}

admin, err := NewAdminUser("admin@systemli.org", "password")
if err != nil {
t.Fail()
return
}
_ = DB.Save(admin)

err = AddUsersToTicker(*ticker, []int{admin.ID})
if err != nil {
t.Fail()
}
}

func TestRemoveTickerFromUser(t *testing.T) {
setup()

user := initUserTestData(t)
ticker := NewTicker()
_ = DB.Save(ticker)
user.Tickers = []int{ticker.ID}
_ = DB.Save(user)

assert.Equal(t, 1, len(user.Tickers))

err := RemoveTickerFromUser(*ticker, *user)
if err != nil {
t.Fail()
return
}

err = DB.One("ID", 1, user)
if err != nil {
t.Fail()
return
}

assert.Equal(t, 0, len(user.Tickers))
}

func initUserTestData(t *testing.T) *User {
u, err := NewUser("louis@systemli.org", "password")
if err != nil {
t.Fail()
}

_ = DB.Save(u)

return u
}

0 comments on commit 515f7a0

Please sign in to comment.