4 changed files with 83 additions and 14 deletions
@ -0,0 +1,67 @@ |
|||
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() |
|||
} |
|||
Loading…
Reference in new issue