Skip to content

Commit 77b62fc

Browse files
committed
test: Redo tests for the GetChildEntriesByUid function
1 parent ec96ed6 commit 77b62fc

File tree

3 files changed

+107
-66
lines changed

3 files changed

+107
-66
lines changed

cmd/api/get-child-entries.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package api
22

33
import (
44
"github.com/Dobefu/csb/cmd/cs_sdk/structs"
5-
"github.com/Dobefu/csb/cmd/database/query"
65
db_structs "github.com/Dobefu/csb/cmd/database/structs"
76
)
87

@@ -25,7 +24,7 @@ func GetChildEntriesByUid(uid string, locale string, includeUnpublished bool) ([
2524
})
2625
}
2726

28-
rows, err := query.QueryRows(
27+
rows, err := queryQueryRows(
2928
"routes",
3029
[]string{"*"},
3130
where,

cmd/api/get-child-entries_test.go

+62-64
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,83 @@
11
package api
22

33
import (
4-
"os"
4+
"database/sql"
55
"testing"
66
"time"
77

8-
"github.com/Dobefu/csb/cmd/database"
8+
"github.com/DATA-DOG/go-sqlmock"
99
"github.com/Dobefu/csb/cmd/database/query"
1010
db_structs "github.com/Dobefu/csb/cmd/database/structs"
11-
"github.com/Dobefu/csb/cmd/init_env"
12-
"github.com/Dobefu/csb/cmd/migrate_db"
11+
12+
"github.com/Dobefu/csb/cmd/cs_sdk/structs"
1313
"github.com/stretchr/testify/assert"
1414
)
1515

16-
func TestGetChildEntriesByUid(t *testing.T) {
17-
init_env.Main("../../.env.test")
18-
err := database.Connect()
19-
assert.Equal(t, nil, err)
16+
func setupGetChildEntriesTest(t *testing.T) (sqlmock.Sqlmock, func()) {
17+
db, mock, err := sqlmock.New()
18+
assert.NoError(t, err)
19+
20+
queryQueryRows = func(table string, fields []string, where []db_structs.QueryWhere) (*sql.Rows, error) {
21+
return db.Query("SELECT (.+) FROM routes", nil)
22+
}
2023

21-
err = migrate_db.Main(true)
22-
assert.Equal(t, nil, err)
24+
return mock, func() {
25+
db.Close()
26+
queryQueryRows = query.QueryRows
27+
}
28+
}
2329

24-
oldDb := os.Getenv("DB_CONN")
25-
os.Setenv("DB_CONN", "file:/")
26-
err = database.Connect()
27-
assert.Equal(t, nil, err)
30+
func TestGetChildEntriesByUidSuccess(t *testing.T) {
31+
mock, cleanup := setupGetChildEntriesTest(t)
32+
defer cleanup()
2833

29-
_, err = GetChildEntriesByUid("", "", false)
30-
assert.NotEqual(t, nil, err)
34+
cols := []string{"id", "uid", "content_type", "locale", "slug", "url", "parent", "updated_at", "exclude_sitemap", "published"}
35+
mock.ExpectQuery("SELECT (.+) FROM routes").WillReturnRows(
36+
sqlmock.NewRows(cols).AddRow("id", "uid", "content_type", "locale", "slug", "url", "parent", time.Time{}, true, true),
37+
)
3138

32-
os.Setenv("DB_CONN", oldDb)
33-
err = database.Connect()
34-
assert.Equal(t, nil, err)
39+
routes, err := GetChildEntriesByUid("uid", "en", false)
40+
assert.NoError(t, err)
41+
assert.Equal(t, []structs.Route{{
42+
Id: "id",
43+
Uid: "uid",
44+
Title: "",
45+
ContentType: "content_type",
46+
Locale: "locale",
47+
Slug: "slug",
48+
Url: "url",
49+
Parent: "parent",
50+
Version: 0,
51+
UpdatedAt: time.Time{},
52+
ExcludeSitemap: true,
53+
Published: true,
54+
}}, routes)
55+
assert.NoError(t, mock.ExpectationsWereMet())
56+
}
3557

36-
err = insertPage("testingen", "testing", "parent_uid")
37-
assert.Equal(t, nil, err)
58+
func TestGetChildEntriesByUidErrQuery(t *testing.T) {
59+
mock, cleanup := setupGetChildEntriesTest(t)
60+
defer cleanup()
3861

39-
err = insertPage("parent_uiden", "parent_uid", "")
40-
assert.Equal(t, nil, err)
62+
mock.ExpectQuery("SELECT (.+) FROM routes").WillReturnError(sql.ErrNoRows)
4163

42-
_, err = GetChildEntriesByUid("parent_uid", "en", true)
43-
assert.Equal(t, nil, err)
64+
routes, err := GetChildEntriesByUid("uid", "en", false)
65+
assert.EqualError(t, err, sql.ErrNoRows.Error())
66+
assert.Equal(t, []structs.Route([]structs.Route{}), routes)
67+
assert.NoError(t, mock.ExpectationsWereMet())
4468
}
4569

46-
func insertPage(id string, uid string, parent string) error {
47-
return query.Insert("routes", []db_structs.QueryValue{
48-
{
49-
Name: "id",
50-
Value: id,
51-
},
52-
{
53-
Name: "uid",
54-
Value: uid,
55-
},
56-
{
57-
Name: "title",
58-
Value: "Title",
59-
},
60-
{
61-
Name: "content_type",
62-
Value: "basic_page",
63-
},
64-
{
65-
Name: "locale",
66-
Value: "en",
67-
},
68-
{
69-
Name: "slug",
70-
Value: "/testing",
71-
},
72-
{
73-
Name: "url",
74-
Value: "/testing",
75-
},
76-
{
77-
Name: "parent",
78-
Value: parent,
79-
},
80-
{
81-
Name: "updated_at",
82-
Value: time.Now(),
83-
},
84-
})
70+
func TestGetChildEntriesByUidErrScan(t *testing.T) {
71+
mock, cleanup := setupGetChildEntriesTest(t)
72+
defer cleanup()
73+
74+
cols := []string{"locacle"}
75+
mock.ExpectQuery("SELECT (.+) FROM routes").WillReturnRows(
76+
sqlmock.NewRows(cols).AddRow("locale"),
77+
)
78+
79+
routes, err := GetChildEntriesByUid("uid", "en", false)
80+
assert.NoError(t, err)
81+
assert.Equal(t, []structs.Route([]structs.Route(nil)), routes)
82+
assert.NoError(t, mock.ExpectationsWereMet())
8583
}

cmd/api/get-entry-by-url_test.go

+44
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ package api
33
import (
44
"os"
55
"testing"
6+
"time"
67

78
"github.com/Dobefu/csb/cmd/database"
9+
"github.com/Dobefu/csb/cmd/database/query"
10+
db_structs "github.com/Dobefu/csb/cmd/database/structs"
811
"github.com/Dobefu/csb/cmd/init_env"
912
"github.com/Dobefu/csb/cmd/migrate_db"
1013
"github.com/stretchr/testify/assert"
@@ -36,3 +39,44 @@ func TestGetEntryByUrl(t *testing.T) {
3639
_, err = GetEntryByUrl("/testing", "en", true)
3740
assert.Equal(t, nil, err)
3841
}
42+
43+
func insertPage(id string, uid string, parent string) error {
44+
return query.Insert("routes", []db_structs.QueryValue{
45+
{
46+
Name: "id",
47+
Value: id,
48+
},
49+
{
50+
Name: "uid",
51+
Value: uid,
52+
},
53+
{
54+
Name: "title",
55+
Value: "Title",
56+
},
57+
{
58+
Name: "content_type",
59+
Value: "basic_page",
60+
},
61+
{
62+
Name: "locale",
63+
Value: "en",
64+
},
65+
{
66+
Name: "slug",
67+
Value: "/testing",
68+
},
69+
{
70+
Name: "url",
71+
Value: "/testing",
72+
},
73+
{
74+
Name: "parent",
75+
Value: parent,
76+
},
77+
{
78+
Name: "updated_at",
79+
Value: time.Now(),
80+
},
81+
})
82+
}

0 commit comments

Comments
 (0)