mirror of https://github.com/jlelse/GoBlog
178 lines
3.7 KiB
Go
178 lines
3.7 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_postsDb(t *testing.T) {
|
|
is := assert.New(t)
|
|
must := require.New(t)
|
|
|
|
app := &goBlog{
|
|
cfg: &config{
|
|
Blogs: map[string]*configBlog{
|
|
"en": {
|
|
Sections: map[string]*section{
|
|
"test": {},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
app.setInMemoryDatabase()
|
|
|
|
now := toLocalSafe(time.Now().String())
|
|
nowPlus1Hour := toLocalSafe(time.Now().Add(1 * time.Hour).String())
|
|
|
|
// Save post
|
|
err := app.db.savePost(&post{
|
|
Path: "/test/abc",
|
|
Content: "ABC",
|
|
Published: now,
|
|
Updated: nowPlus1Hour,
|
|
Blog: "en",
|
|
Section: "test",
|
|
Status: statusDraft,
|
|
Parameters: map[string][]string{
|
|
"title": {"Title"},
|
|
},
|
|
}, &postCreationOptions{new: true})
|
|
must.NoError(err)
|
|
|
|
// Check post
|
|
p, err := app.db.getPost("/test/abc")
|
|
is.NoError(err)
|
|
is.Equal("/test/abc", p.Path)
|
|
is.Equal("ABC", p.Content)
|
|
is.Equal(now, p.Published)
|
|
is.Equal(nowPlus1Hour, p.Updated)
|
|
is.Equal("en", p.Blog)
|
|
is.Equal("test", p.Section)
|
|
is.Equal(statusDraft, p.Status)
|
|
is.Equal("Title", p.Title())
|
|
|
|
// Check number of post paths
|
|
pp, err := app.db.allPostPaths(statusDraft)
|
|
is.NoError(err)
|
|
if is.Len(pp, 1) {
|
|
is.Equal("/test/abc", pp[0])
|
|
}
|
|
|
|
pp, err = app.db.allPostPaths(statusPublished)
|
|
is.NoError(err)
|
|
is.Len(pp, 0)
|
|
|
|
// Check drafts
|
|
drafts := app.db.getDrafts("en")
|
|
is.Len(drafts, 1)
|
|
|
|
// Delete post
|
|
_, err = app.db.deletePost("/test/abc")
|
|
must.NoError(err)
|
|
|
|
// Check that there is no post
|
|
count, err := app.db.countPosts(&postsRequestConfig{})
|
|
is.NoError(err)
|
|
is.Equal(0, count)
|
|
|
|
// Save published post
|
|
err = app.db.savePost(&post{
|
|
Path: "/test/abc",
|
|
Content: "ABC",
|
|
Published: "2021-06-10 10:00:00",
|
|
Updated: "2021-06-15 10:00:00",
|
|
Blog: "en",
|
|
Section: "test",
|
|
Status: statusPublished,
|
|
Parameters: map[string][]string{
|
|
"tags": {"Test", "Blog"},
|
|
},
|
|
}, &postCreationOptions{new: true})
|
|
must.NoError(err)
|
|
|
|
// Check that there is a new post
|
|
count, err = app.db.countPosts(&postsRequestConfig{})
|
|
if is.NoError(err) {
|
|
is.Equal(1, count)
|
|
}
|
|
|
|
// Check random post path
|
|
rp, err := app.getRandomPostPath("en")
|
|
if is.NoError(err) {
|
|
is.Equal("/test/abc", rp)
|
|
}
|
|
|
|
// Check taxonomies
|
|
tags, err := app.db.allTaxonomyValues("en", "tags")
|
|
if is.NoError(err) {
|
|
is.Len(tags, 2)
|
|
is.Equal([]string{"Test", "Blog"}, tags)
|
|
}
|
|
|
|
// Check based on date
|
|
count, err = app.db.countPosts(&postsRequestConfig{
|
|
publishedYear: 2020,
|
|
})
|
|
if is.NoError(err) {
|
|
is.Equal(0, count)
|
|
}
|
|
|
|
count, err = app.db.countPosts(&postsRequestConfig{
|
|
publishedYear: 2021,
|
|
})
|
|
if is.NoError(err) {
|
|
is.Equal(1, count)
|
|
}
|
|
|
|
// Check dates
|
|
dates, err := app.db.allPublishedDates("en")
|
|
if is.NoError(err) && is.NotEmpty(dates) {
|
|
is.Equal(publishedDate{year: 2021, month: 6, day: 10}, dates[0])
|
|
}
|
|
|
|
// Check based on tags
|
|
count, err = app.db.countPosts(&postsRequestConfig{
|
|
parameter: "tags",
|
|
parameterValue: "ABC",
|
|
})
|
|
if is.NoError(err) {
|
|
is.Equal(0, count)
|
|
}
|
|
|
|
count, err = app.db.countPosts(&postsRequestConfig{
|
|
parameter: "tags",
|
|
parameterValue: "Blog",
|
|
})
|
|
if is.NoError(err) {
|
|
is.Equal(1, count)
|
|
}
|
|
}
|
|
|
|
func Test_ftsWithoutTitle(t *testing.T) {
|
|
// Added because there was a bug where there were no search results without title
|
|
|
|
app := &goBlog{}
|
|
app.setInMemoryDatabase()
|
|
|
|
err := app.db.savePost(&post{
|
|
Path: "/test/abc",
|
|
Content: "ABC",
|
|
Published: toLocalSafe(time.Now().String()),
|
|
Updated: toLocalSafe(time.Now().Add(1 * time.Hour).String()),
|
|
Blog: "en",
|
|
Section: "test",
|
|
Status: statusDraft,
|
|
}, &postCreationOptions{new: true})
|
|
require.NoError(t, err)
|
|
|
|
ps, err := app.db.getPosts(&postsRequestConfig{
|
|
search: "ABC",
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, ps, 1)
|
|
}
|