package justguestbook_test import ( "testing" guestbook "git.arav.su/Arav/justguestbook" "github.com/pkg/errors" ) const ( testEMsg = "kek" testRMsg = "lol" ) func genTestDB() (db guestbook.Guestbook, err error) { db, err = guestbook.NewSQLiteDB(":memory:") if err != nil { return nil, errors.Wrap(err, "failed to init DB") } e, err := guestbook.NewEntry("Anonymous", testEMsg, "", true) if err != nil { return nil, errors.Wrap(err, "failed to create a new entry") } if err = db.NewEntry(e); err != nil { return nil, errors.Wrap(err, "failed to insert a new entry") } r, err := guestbook.NewReply(e.ID, testRMsg) if err != nil { return nil, errors.Wrap(err, "failed to create a new reply") } if err = db.NewReply(r); err != nil { return nil, errors.Wrap(err, "failed to insert a new reply") } return db, nil } func TestSqliteInsertAndGetAll(t *testing.T) { db, err := genTestDB() if err != nil { t.Error(err) } defer func() { if err = db.Close(); err != nil { t.Error(err) } }() es, err := db.Entries(1, 30) if err != nil { t.Error(err) } if c, err := db.Count(); err != nil || int64(len(es)) != c { t.Errorf("entries count mismatch (%d != %d). Error: %s", len(es), c, err) } if es[0].Reply.Message != testRMsg { t.Error("reply isn't", testRMsg) } } func TestSqliteEditEntry(t *testing.T) { db, err := genTestDB() if err != nil { t.Error(err) } defer func() { if err = db.Close(); err != nil { t.Error(err) } }() es0, err := db.Entries(1, 30) if err != nil { t.Error("failed to obtain entries. Error:", err) } me := es0[0] me.Name = "NotSoAnonymous" err = db.EditEntry(me) if err != nil { t.Error(err) } es0, err = db.Entries(1, 30) if es0[0].Name != me.Name { t.Error("name wasn't changed", es0[0].Name, "!=", me.Name, es0[0].ID, me.ID) } } func TestSqliteEditReply(t *testing.T) { db, err := genTestDB() if err != nil { t.Error(err) } defer func() { if err = db.Close(); err != nil { t.Error(err) } }() es0, err := db.Entries(1, 30) if err != nil { t.Error("failed to obtain entries. Error:", err) } mr := es0[0].Reply mr.ID = es0[0].ID mr.Message = "bur" err = db.EditReply(mr) if err != nil { t.Error(err) } } func TestSqliteDeleteEntry(t *testing.T) { db, err := genTestDB() if err != nil { t.Error(err) } defer func() { if err = db.Close(); err != nil { t.Error(err) } }() if err = db.DeleteEntry(1); err != nil { t.Error("cannot delete entry", err) } }