diff --git a/app/migrator/remark_test.go b/app/migrator/remark_test.go
index 2c9a02d0..b967ba42 100644
--- a/app/migrator/remark_test.go
+++ b/app/migrator/remark_test.go
@@ -2,6 +2,7 @@ package migrator
import (
"bytes"
+ "fmt"
"log"
"os"
"testing"
@@ -57,6 +58,28 @@ func TestRemark_Import(t *testing.T) {
assert.Equal(t, "efbc17f177ee1a1c0ee6e1e025749966ec071adc", comments[1].ParentID)
}
+func TestRemark_ImportManyWithError(t *testing.T) {
+ goodRec := `{"id":"%d","pid":"","text":"some text, link","user":{"name":"user name","id":"user1","picture":"","profile":"","admin":false},"locator":{"site":"radio-t","url":"https://radio-t.com"},"score":0,"votes":{},"time":"2017-12-20T15:18:22-06:00"}` + "\n"
+
+ buf := &bytes.Buffer{}
+ for i := 0; i < 1200; i++ {
+ buf.WriteString(fmt.Sprintf(goodRec, i))
+ }
+ buf.WriteString("bad1\n")
+ buf.WriteString("bad2\n")
+
+ os.Remove(testDb)
+ b, err := engine.NewBoltDB(bolt.Options{}, engine.BoltSite{SiteID: "radio-t", FileName: testDb})
+ assert.Nil(t, err)
+ r := Remark{DataStore: &service.DataStore{Interface: b}}
+ n, err := r.Import(buf, "radio-t")
+ assert.EqualError(t, err, "failed to save 2 comments")
+ assert.Equal(t, 1200, n)
+ comments, err := b.Find(store.Locator{SiteID: "radio-t", URL: "https://radio-t.com"}, "time")
+ assert.Nil(t, err)
+ assert.Equal(t, 1200, len(comments))
+}
+
// makes new boltdb, put two records
func prep(t *testing.T) *service.DataStore {
os.Remove(testDb)
diff --git a/app/store/engine/bolt_test.go b/app/store/engine/bolt_test.go
index 1f0ac59e..ee0ba4aa 100644
--- a/app/store/engine/bolt_test.go
+++ b/app/store/engine/bolt_test.go
@@ -214,6 +214,27 @@ func TestBoltDB_GetForUser(t *testing.T) {
}
+func TestBoltDB_Ref(t *testing.T) {
+ b := BoltDB{}
+ comment := store.Comment{
+ ID: "12345",
+ Text: `some text, link`,
+ Timestamp: time.Date(2017, 12, 20, 15, 18, 22, 0, time.Local),
+ Locator: store.Locator{URL: "https://radio-t.com/2", SiteID: "radio-t"},
+ User: store.User{ID: "user1", Name: "user name"},
+ }
+ res := b.makeRef(comment)
+ assert.Equal(t, "https://radio-t.com/2!!12345", string(res))
+
+ url, id, err := b.parseRef([]byte("https://radio-t.com/2!!12345"))
+ assert.Nil(t, err)
+ assert.Equal(t, "https://radio-t.com/2", url)
+ assert.Equal(t, "12345", id)
+
+ _, _, err = b.parseRef([]byte("https://radio-t.com/2"))
+ assert.NotNil(t, err)
+}
+
// makes new boltdb, put two records
func prep(t *testing.T) *BoltDB {
os.Remove(testDb)