You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
package boltdb
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/maxibanki/golang-url-shortener/stores/shared"
|
|
)
|
|
|
|
func getStore(t *testing.T) (*BoltStore, func()) {
|
|
store, err := New("test.db")
|
|
if err != nil {
|
|
t.Errorf("could not get store: %v", err)
|
|
}
|
|
return store, func() {
|
|
store.Close()
|
|
os.Remove("test.db")
|
|
}
|
|
}
|
|
|
|
func TestBoltDB(t *testing.T) {
|
|
store, cleanup := getStore(t)
|
|
givenEntryID := "x1df"
|
|
givenEntry := shared.Entry{
|
|
DeletionURL: "foo",
|
|
RemoteAddr: "127.0.0.1",
|
|
Public: shared.EntryPublicData{
|
|
CreatedOn: time.Now(),
|
|
URL: "google.com",
|
|
},
|
|
}
|
|
if err := store.CreateEntry(givenEntry, givenEntryID, "google01234"); err != nil {
|
|
t.Errorf("could not create entry: %v", err)
|
|
}
|
|
entryBeforeIncreasement, err := store.GetEntryByID(givenEntryID)
|
|
if err != nil {
|
|
t.Errorf("could not get entry: %v", err)
|
|
}
|
|
if err := store.IncreaseVisitCounter(givenEntryID); err != nil {
|
|
t.Errorf("could not increase visit counter: %v", err)
|
|
}
|
|
entryAfterIncreasement, err := store.GetEntryByID(givenEntryID)
|
|
if err != nil {
|
|
t.Errorf("could not get entry: %v", err)
|
|
}
|
|
if entryBeforeIncreasement.Public.VisitCount+1 != entryAfterIncreasement.Public.VisitCount {
|
|
t.Errorf("Visit counter hasn't increased; before: %d, after: %d", entryBeforeIncreasement.Public.VisitCount, entryAfterIncreasement.Public.VisitCount)
|
|
}
|
|
if err := store.RegisterVisitor(givenEntryID, "whooop", shared.Visitor{
|
|
IP: "foo",
|
|
Referer: "foo",
|
|
}); err != nil {
|
|
t.Errorf("Failed to register visitor: %v", err)
|
|
}
|
|
visitors, err := store.GetVisitors(givenEntryID)
|
|
if err != nil {
|
|
t.Errorf("could not get visitors: %v", err)
|
|
}
|
|
if len(visitors) != 1 {
|
|
t.Errorf("Expected visitor length: %d; got: %d", err)
|
|
}
|
|
if err := store.DeleteEntry(givenEntryID); err != nil {
|
|
t.Errorf("could not delte entry: %v", err)
|
|
}
|
|
cleanup()
|
|
}
|
|
|