mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
start storage tests
This commit is contained in:
parent
2e5ccc3158
commit
09bfc47ef0
@ -1,6 +1,7 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"html"
|
||||
"log"
|
||||
"net/url"
|
||||
@ -59,11 +60,19 @@ func (s *Storage) CreateFeed(title, description, link, feedLink string, folderId
|
||||
}
|
||||
|
||||
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 {
|
||||
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 {
|
||||
@ -114,27 +123,24 @@ func (s *Storage) ListFeeds() []Feed {
|
||||
}
|
||||
|
||||
func (s *Storage) GetFeed(id int64) *Feed {
|
||||
row := s.db.QueryRow(`
|
||||
select id, folder_id, title, description, link, feed_link, icon,
|
||||
ifnull(icon, '') != '' as has_icon
|
||||
from feeds where id = ?
|
||||
`, id)
|
||||
if row != nil {
|
||||
var f Feed
|
||||
row.Scan(
|
||||
&f.Id,
|
||||
&f.FolderId,
|
||||
&f.Title,
|
||||
&f.Description,
|
||||
&f.Link,
|
||||
&f.FeedLink,
|
||||
&f.Icon,
|
||||
&f.HasIcon,
|
||||
err := s.db.QueryRow(`
|
||||
select
|
||||
id, folder_id, title, link, feed_link,
|
||||
icon, ifnull(icon, '') != '' as has_icon
|
||||
from feeds where id = ?
|
||||
`, id).Scan(
|
||||
&f.Id, &f.FolderId, &f.Title, &f.Link, &f.FeedLink,
|
||||
&f.Icon, &f.HasIcon,
|
||||
)
|
||||
return &f
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
log.Print(err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return &f
|
||||
}
|
||||
|
||||
func (s *Storage) ResetFeedErrors() {
|
||||
if _, err := s.db.Exec(`delete from feed_errors`); err != nil {
|
||||
|
41
src/storage/feed_test.go
Normal file
41
src/storage/feed_test.go
Normal 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")
|
||||
}
|
||||
}
|
18
src/storage/storage_test.go
Normal file
18
src/storage/storage_test.go
Normal 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user