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

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()
}