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
|
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,27 +123,24 @@ func (s *Storage) ListFeeds() []Feed {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Storage) GetFeed(id int64) *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
|
var f Feed
|
||||||
row.Scan(
|
err := s.db.QueryRow(`
|
||||||
&f.Id,
|
select
|
||||||
&f.FolderId,
|
id, folder_id, title, link, feed_link,
|
||||||
&f.Title,
|
icon, ifnull(icon, '') != '' as has_icon
|
||||||
&f.Description,
|
from feeds where id = ?
|
||||||
&f.Link,
|
`, id).Scan(
|
||||||
&f.FeedLink,
|
&f.Id, &f.FolderId, &f.Title, &f.Link, &f.FeedLink,
|
||||||
&f.Icon,
|
&f.Icon, &f.HasIcon,
|
||||||
&f.HasIcon,
|
|
||||||
)
|
)
|
||||||
return &f
|
if err != nil {
|
||||||
|
if err != sql.ErrNoRows {
|
||||||
|
log.Print(err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return &f
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Storage) ResetFeedErrors() {
|
func (s *Storage) ResetFeedErrors() {
|
||||||
if _, err := s.db.Exec(`delete from feed_errors`); err != nil {
|
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