Skip to content

Commit

Permalink
Merge pull request #25 from jamiefdhurst/v0.2.1
Browse files Browse the repository at this point in the history
v0.2.1
  • Loading branch information
jamiefdhurst authored Aug 3, 2018
2 parents 7d29f6a + 5c5983e commit 607bc20
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 8 deletions.
2 changes: 2 additions & 0 deletions internal/app/controller/apiv1/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (

func TestCreate_Run(t *testing.T) {
db := &database.MockSqlite{}
db.Result = &database.MockResult{}
db.Rows = &database.MockRowsEmpty{}
container := &app.Container{Db: db}
response := controller.NewMockResponse()
response.Reset()
Expand Down
1 change: 1 addition & 0 deletions internal/app/controller/web/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ func (c *Index) Run(response http.ResponseWriter, request *http.Request) {
js := model.Journals{Container: c.Super.Container.(*app.Container), Gs: &model.Giphys{Container: c.Super.Container.(*app.Container)}}
c.Journals = js.FetchAll()
query := request.URL.Query()
c.Saved = false
if query["saved"] != nil {
c.Saved = true
}
Expand Down
6 changes: 6 additions & 0 deletions internal/app/controller/web/index_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,10 @@ func TestIndex_Run(t *testing.T) {
if !strings.Contains(response.Content, "Journal saved") {
t.Error("Expected saved banner to be displayed on screen")
}
response.Reset()
request, _ = http.NewRequest("GET", "/", strings.NewReader(""))
controller.Run(response, request)
if strings.Contains(response.Content, "Journal saved") {
t.Error("Expected saved banner to be hidden, but it is showing")
}
}
2 changes: 1 addition & 1 deletion internal/app/controller/web/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func (c *New) Run(response http.ResponseWriter, request *http.Request) {
}

js := model.Journals{Container: c.Super.Container.(*app.Container), Gs: &model.Giphys{Container: c.Super.Container.(*app.Container)}}
journal := model.Journal{ID: 0, Slug: model.Slugify(request.FormValue("title")), Title: model.Slugify(request.FormValue("title")), Date: request.FormValue("date"), Content: request.FormValue("content")}
journal := model.Journal{ID: 0, Slug: model.Slugify(request.FormValue("title")), Title: request.FormValue("title"), Date: request.FormValue("date"), Content: request.FormValue("content")}
js.Save(journal)

http.Redirect(response, request, "/?saved=1", 302)
Expand Down
2 changes: 2 additions & 0 deletions internal/app/controller/web/new_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (

func TestNew_Run(t *testing.T) {
db := &database.MockSqlite{}
db.Result = &database.MockResult{}
db.Rows = &database.MockRowsEmpty{}
container := &app.Container{Db: db}
response := controller.NewMockResponse()
controller := &New{}
Expand Down
19 changes: 19 additions & 0 deletions internal/app/model/journal.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,21 @@ func (js *Journals) CreateTable() error {
return err
}

// EnsureUniqueSlug Make sure the current slug is unique
func (js *Journals) EnsureUniqueSlug(slug string, addition int) string {
newSlug := slug
if addition > 0 {
newSlug = strings.Join([]string{slug, "-", strconv.Itoa(addition)}, "")
}
exists := js.FindBySlug(newSlug)
if exists.ID > 0 {
addition++
return js.EnsureUniqueSlug(slug, addition)
}

return newSlug
}

// FetchAll Get all journals
func (js *Journals) FetchAll() []Journal {
rows, err := js.Container.Db.Query("SELECT * FROM `" + journalTable + "` ORDER BY `date` DESC")
Expand Down Expand Up @@ -94,8 +109,12 @@ func (js *Journals) Save(j Journal) Journal {

// Convert content for saving
j.Content = js.Gs.ExtractContentsAndSearchAPI(j.Content)
if j.Slug == "" {
j.Slug = Slugify(j.Title)
}

if j.ID == 0 {
j.Slug = js.EnsureUniqueSlug(j.Slug, 0)
res, _ = js.Container.Db.Exec("INSERT INTO `"+journalTable+"` (`slug`, `title`, `date`, `content`) VALUES(?,?,?,?)", j.Slug, j.Title, j.Date, j.Content)
} else {
res, _ = js.Container.Db.Exec("UPDATE `"+journalTable+"` SET `slug` = ?, `title` = ?, `date` = ?, `content` = ? WHERE `id` = ?", j.Slug, j.Title, j.Date, j.Content, strconv.Itoa(j.ID))
Expand Down
30 changes: 30 additions & 0 deletions internal/app/model/journal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,35 @@ func TestJournals_CreateTable(t *testing.T) {
}
}

func TestJournals_EnsureUniqueSlug(t *testing.T) {
db := &database.MockSqlite{}
db.ErrorMode = false
container := &app.Container{Db: db}
js := Journals{Container: container}

// Test no result
db.Rows = &database.MockRowsEmpty{}
actual := js.EnsureUniqueSlug("test", 0)
if actual != "test" {
t.Errorf("Expected EnsureUniqueSlug() to produce result of '%s', got '%s'", "test", actual)
}

// Test simple
db.Rows = &database.MockJournal_SingleRow{}
db.ExpectedArgument = "test"
actual = js.EnsureUniqueSlug("test", 0)
if actual != "test-1" {
t.Errorf("Expected EnsureUniqueSlug() to produce result of '%s', got '%s'", "test-1", actual)
}

db.Rows = &database.MockJournal_SingleRow{}
db.ExpectedArgument = "test-2"
actual = js.EnsureUniqueSlug("test", 2)
if actual != "test-3" {
t.Errorf("Expected EnsureUniqueSlug() to produce result of '%s', got '%s'", "test-3", actual)
}
}

func TestJournals_FetchAll(t *testing.T) {

// Test error
Expand Down Expand Up @@ -123,6 +152,7 @@ func TestJournals_FindBySlug(t *testing.T) {

func TestJournals_Save(t *testing.T) {
db := &database.MockSqlite{Result: &database.MockResult{}}
db.Rows = &database.MockRowsEmpty{}
gs := &database.MockGiphyExtractor{}
container := &app.Container{Db: db}
js := Journals{Container: container, Gs: gs}
Expand Down
2 changes: 1 addition & 1 deletion journal.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
)

func main() {
const version = "0.2"
const version = "0.2.1"

// Command line flags
var (
Expand Down
12 changes: 6 additions & 6 deletions journal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func TestApiV1Single_NotFound(t *testing.T) {
func TestApiV1Create(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("POST", server.URL+"/api/v1/post", strings.NewReader(`{"title":"Test 4","date":"2018-06-01T00:00:00Z","content":"<p>Test 4!</p>"}`))
request, err := http.NewRequest("PUT", server.URL+"/api/v1/post", strings.NewReader(`{"title":"Test 4","date":"2018-06-01T00:00:00Z","content":"<p>Test 4!</p>"}`))

res, err := http.DefaultClient.Do(request)

Expand All @@ -151,7 +151,7 @@ func TestApiV1Create(t *testing.T) {
func TestApiV1Create_InvalidRequest(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("POST", server.URL+"/api/v1/post", nil)
request, err := http.NewRequest("PUT", server.URL+"/api/v1/post", nil)

res, err := http.DefaultClient.Do(request)

Expand All @@ -167,7 +167,7 @@ func TestApiV1Create_InvalidRequest(t *testing.T) {
func TestApiV1Create_MissingData(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("POST", server.URL+"/api/v1/post", strings.NewReader(`{"title":"Test 4"}`))
request, err := http.NewRequest("PUT", server.URL+"/api/v1/post", strings.NewReader(`{"title":"Test 4"}`))

res, err := http.DefaultClient.Do(request)

Expand All @@ -183,7 +183,7 @@ func TestApiV1Create_MissingData(t *testing.T) {
func TestApiV1Update(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("PUT", server.URL+"/api/v1/post/test", strings.NewReader(`{"title":"A different title"}`))
request, err := http.NewRequest("POST", server.URL+"/api/v1/post/test", strings.NewReader(`{"title":"A different title"}`))

res, err := http.DefaultClient.Do(request)

Expand All @@ -208,7 +208,7 @@ func TestApiV1Update(t *testing.T) {
func TestApiV1Update_NotFound(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("PUT", server.URL+"/api/v1/post/random", strings.NewReader(`{"title":"A different title"}`))
request, err := http.NewRequest("POST", server.URL+"/api/v1/post/random", strings.NewReader(`{"title":"A different title"}`))

res, err := http.DefaultClient.Do(request)

Expand All @@ -224,7 +224,7 @@ func TestApiV1Update_NotFound(t *testing.T) {
func TestApiV1Update_InvalidRequest(t *testing.T) {
fixtures(t)

request, err := http.NewRequest("PUT", server.URL+"/api/v1/post/test", nil)
request, err := http.NewRequest("POST", server.URL+"/api/v1/post/test", nil)

res, err := http.DefaultClient.Do(request)

Expand Down

0 comments on commit 607bc20

Please sign in to comment.