start storage tests

This commit is contained in:
Nazar Kanaev 2021-04-05 19:02:31 +01:00
parent 2e5ccc3158
commit 09bfc47ef0
3 changed files with 85 additions and 20 deletions

View File

@ -1,6 +1,7 @@
package storage package storage
import ( import (
"database/sql"
"html" "html"
"log" "log"
"net/url" "net/url"
@ -59,11 +60,19 @@ func (s *Storage) CreateFeed(title, description, link, feedLink string, folderId
} }
func (s *Storage) DeleteFeed(feedId int64) bool { func (s *Storage) DeleteFeed(feedId int64) bool {
_, err := s.db.Exec(`delete from feeds where id = ?`, feedId) result, err := s.db.Exec(`delete from feeds where id = ?`, feedId)
if err != nil { if err != nil {
log.Print(err) log.Print(err)
return false
} }
return err == nil nrows, err := result.RowsAffected()
if err != nil {
if err != sql.ErrNoRows {
log.Print(err)
}
return false
}
return nrows == 1
} }
func (s *Storage) RenameFeed(feedId int64, newTitle string) bool { func (s *Storage) RenameFeed(feedId int64, newTitle string) bool {
@ -114,26 +123,23 @@ func (s *Storage) ListFeeds() []Feed {
} }
func (s *Storage) GetFeed(id int64) *Feed { func (s *Storage) GetFeed(id int64) *Feed {
row := s.db.QueryRow(` var f Feed
select id, folder_id, title, description, link, feed_link, icon, err := s.db.QueryRow(`
ifnull(icon, '') != '' as has_icon select
id, folder_id, title, link, feed_link,
icon, ifnull(icon, '') != '' as has_icon
from feeds where id = ? from feeds where id = ?
`, id) `, id).Scan(
if row != nil { &f.Id, &f.FolderId, &f.Title, &f.Link, &f.FeedLink,
var f Feed &f.Icon, &f.HasIcon,
row.Scan( )
&f.Id, if err != nil {
&f.FolderId, if err != sql.ErrNoRows {
&f.Title, log.Print(err)
&f.Description, }
&f.Link, return nil
&f.FeedLink,
&f.Icon,
&f.HasIcon,
)
return &f
} }
return nil return &f
} }
func (s *Storage) ResetFeedErrors() { func (s *Storage) ResetFeedErrors() {

41
src/storage/feed_test.go Normal file
View File

@ -0,0 +1,41 @@
package storage
import (
"reflect"
"testing"
)
func TestCreateFeed(t *testing.T) {
db := testDB()
feed1 := db.CreateFeed("title", "", "http://example.com", "http://example.com/feed.xml", nil)
if feed1 == nil || feed1.Id == 0 {
t.Fatal("expected feed")
}
feed2 := db.GetFeed(feed1.Id)
if feed2 == nil || !reflect.DeepEqual(feed1, feed2) {
t.Fatal("invalid feed")
}
}
func TestReadFeed(t *testing.T) {
db := testDB()
if db.GetFeed(100500) != nil {
t.Fatal("cannot get nonexistent feed")
}
}
func TestDeleteFeed(t *testing.T) {
db := testDB()
feed1 := db.CreateFeed("title", "", "http://example.com", "http://example.com/feed.xml", nil)
if db.DeleteFeed(100500) {
t.Error("cannot delete what does not exist")
}
if !db.DeleteFeed(feed1.Id) {
t.Fatal("did not delete existing feed")
}
if db.GetFeed(feed1.Id) != nil {
t.Fatal("feed still exists")
}
}

View File

@ -0,0 +1,18 @@
package storage
import (
"io"
"log"
"os"
)
func testDB() *Storage {
log.SetOutput(io.Discard)
db, err := New(":memory:")
if err != nil {
os.Stderr.WriteString(err.Error())
os.Exit(1)
}
log.SetOutput(os.Stderr)
return db
}