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