mirror of
				https://github.com/nkanaev/yarr.git
				synced 2025-10-30 22:43:29 +00:00 
			
		
		
		
	start storage tests
This commit is contained in:
		| @@ -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,26 +123,23 @@ 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 | ||||
| 	var f Feed | ||||
| 	err := s.db.QueryRow(` | ||||
| 		select | ||||
| 			id, folder_id, title, 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, | ||||
| 		) | ||||
| 		return &f | ||||
| 	`, id).Scan( | ||||
| 		&f.Id, &f.FolderId, &f.Title, &f.Link, &f.FeedLink, | ||||
| 		&f.Icon, &f.HasIcon, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		if err != sql.ErrNoRows { | ||||
| 			log.Print(err) | ||||
| 		} | ||||
| 		return nil | ||||
| 	} | ||||
| 	return nil | ||||
| 	return &f | ||||
| } | ||||
|  | ||||
| func (s *Storage) ResetFeedErrors() { | ||||
|   | ||||
							
								
								
									
										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 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user