package migrator import ( "os" "strings" "testing" "time" bolt "github.com/coreos/bbolt" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/umputun/remark/backend/app/store" "github.com/umputun/remark/backend/app/store/admin" "github.com/umputun/remark/backend/app/store/engine" "github.com/umputun/remark/backend/app/store/service" ) func TestWordPress_Import(t *testing.T) { siteID := "testWP" defer func() { _ = os.Remove("/tmp/remark-test.db") }() b, err := engine.NewBoltDB(bolt.Options{}, engine.BoltSite{FileName: "/tmp/remark-test.db", SiteID: siteID}) assert.NoError(t, err, "create store") dataStore := service.DataStore{Engine: b, AdminStore: admin.NewStaticStore("12345", nil, []string{}, "")} defer dataStore.Close() wp := WordPress{DataStore: &dataStore} size, err := wp.Import(strings.NewReader(xmlTestWP), siteID) assert.NoError(t, err) assert.Equal(t, 3, size) last, err := dataStore.Last(siteID, 10, time.Time{}, adminUser) assert.NoError(t, err) require.Equal(t, 3, len(last), "3 comments imported") c := last[0] assert.Equal(t, "14", c.ID) assert.Equal(t, store.Locator{URL: "https://realmenweardress.es/2010/07/do-you-rp/", SiteID: siteID}, c.Locator) assert.Equal(t, "wordpress_75b2b81081f82495d7af26759e67af6554ffda4a", c.User.ID) assert.Equal(t, "SuperUser3", c.User.Name) assert.Equal(t, "e8b1e92bbcf5b9bb88472f9bdb82d1b8c7ed39d6", c.User.IP) ts, _ := time.Parse(wpTimeLayout, "2010-08-18 15:19:14") assert.Equal(t, ts, c.Timestamp) assert.Equal(t, c.Text, "
Mekkatorque was over in that tent up to the right
\n") posts, err := dataStore.List(siteID, 0, 0) assert.NoError(t, err) require.Equal(t, 1, len(posts)) p := posts[0] assert.Equal(t, "https://realmenweardress.es/2010/07/do-you-rp/", p.URL) count, err := dataStore.Count(store.Locator{URL: "https://realmenweardress.es/2010/07/do-you-rp/", SiteID: siteID}) assert.NoError(t, err) assert.Equal(t, 3, count) } func TestWordPress_Convert(t *testing.T) { wp := WordPress{} ch := wp.convert(strings.NewReader(xmlTestWP), "testWP") comments := []store.Comment{} for c := range ch { comments = append(comments, c) } require.Equal(t, 3, len(comments), "3 comments exported, 1 excluded") exp1 := store.Comment{ ID: "13", Locator: store.Locator{ SiteID: "testWP", URL: "https://realmenweardress.es/2010/07/do-you-rp/", }, Text: `[…] I know I’m a bit loony with my attachment to my bankers. I’m glad I’m not the only one. […]
` + "\n", User: store.User{ Name: "Wednesday Reading « Cynwise's Battlefield Manual", ID: "wordpress_" + store.EncodeID("Wednesday Reading « Cynwise's Battlefield Manual"), IP: "74.200.244.101", }, } exp1.Timestamp, _ = time.Parse(wpTimeLayout, "2010-07-21 14:02:08") assert.Equal(t, exp1, comments[1]) } func TestWP_Convert_MD(t *testing.T) { wp := WordPress{} ch := wp.convert(strings.NewReader(xmlTestWPmd), "siteID") comments := []store.Comment{} for c := range ch { comments = append(comments, c) } require.Equal(t, 3, len(comments), "3 comments exported") assert.Equal(t, "Row1
\nRow2
Row4
\n", comments[0].Text) assert.Equal(t, "markdown text
Row1 Link http://releases.rancher.com/os/latest markdown text blah
Row3 markdownmd block
Meet Grokknomel?]]>