Skip to content

Commit

Permalink
--wip-- [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
EwenQuim committed Feb 14, 2024
1 parent f4eacf2 commit 719b707
Show file tree
Hide file tree
Showing 23 changed files with 299 additions and 207 deletions.
6 changes: 3 additions & 3 deletions cmd/fuego/templates/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (rs NewControllerRessources) getAllNewController(c fuego.ContextNoBody) ([]
return rs.NewControllerService.GetAllNewController()
}

func (rs NewControllerRessources) postNewController(c *fuego.ContextWithBody[NewControllerCreate]) (NewController, error) {
func (rs NewControllerRessources) postNewController(c fuego.Ctx[NewControllerCreate]) (NewController, error) {
body, err := c.Body()
if err != nil {
return NewController{}, err
Expand All @@ -57,7 +57,7 @@ func (rs NewControllerRessources) getNewController(c fuego.ContextNoBody) (NewCo
return rs.NewControllerService.GetNewController(id)
}

func (rs NewControllerRessources) putNewController(c *fuego.ContextWithBody[NewControllerUpdate]) (NewController, error) {
func (rs NewControllerRessources) putNewController(c fuego.Ctx[NewControllerUpdate]) (NewController, error) {
id := c.PathParam("id")

body, err := c.Body()
Expand All @@ -73,7 +73,7 @@ func (rs NewControllerRessources) putNewController(c *fuego.ContextWithBody[NewC
return new, nil
}

func (rs NewControllerRessources) deleteNewController(c *fuego.ContextNoBody) (any, error) {
func (rs NewControllerRessources) deleteNewController(c fuego.ContextNoBody) (any, error) {
return rs.NewControllerService.DeleteNewController(c.PathParam("id"))
}

Expand Down
69 changes: 69 additions & 0 deletions cmd/fuego/templates/controller/controller_controller_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package controller

import (
"net/http/httptest"
"strings"
"testing"

"github.com/go-fuego/fuego"
)

type MyContext struct {
fuego.BaseContext
}

// Controllers tests for /NewController
// Does not test the actual HTTP requests, only the controller logic.
// Beware of the Context, it is not exactly the same as the one used in the actual HTTP requests.

func TestNewControllerRessources_Routes(t *testing.T) {
s := fuego.NewServer()

rs := NewControllerRessources{
// Dependency Injection
NewControllerService: NewControllerServiceMock{
getAllNewControllerLength: 2,
},
}

rs.Routes(s)

t.Run("GET /newController", func(t *testing.T) {
t.Run("ok", func(t *testing.T) {
r := httptest.NewRequest("GET", "/newController", nil)

newControllers, err := rs.getAllNewController(fuego.BaseContext{
Req: r,
})
if err != nil {
t.Errorf("error: " + err.Error())
}
if len(newControllers) != 2 {
t.Errorf("error: newControllers is of wrong length, expected %d", 2)
}
})
})

t.Run("getNewController", func(t *testing.T) {
r := httptest.NewRequest("GET", "/newController/123", nil)
w := httptest.NewRecorder()

_, err := rs.getNewController(fuego.BaseContext{Req: r, Res: w})
if err != nil {
t.Errorf("error: " + err.Error())
}
})

t.Run("POST /newController", func(t *testing.T) {
body := `{"name": "hi"}`
r := httptest.NewRequest("GET", "/newController/123", strings.NewReader(body))
w := httptest.NewRecorder()

_, err := rs.postNewController(&fuego.BaseContextWithBody[NewControllerCreate]{
BaseContext: fuego.BaseContext{Req: r, Res: w},
})
if err != nil {
t.Errorf("error: " + err.Error())
}
})
}
66 changes: 66 additions & 0 deletions cmd/fuego/templates/controller/controller_http_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package controller

import (
"net/http/httptest"
"strings"
"testing"

"github.com/go-fuego/fuego"
)

// HTTP tests for /NewController
func TestNewControllerRessources_HttpRoutes(t *testing.T) {
s := fuego.NewServer()

rs := NewControllerRessources{
// Dependency Injection
NewControllerService: NewControllerServiceMock{
getAllNewControllerLength: 2,
},
}

rs.Routes(s)

t.Run("404", func(t *testing.T) {
r := httptest.NewRequest("GET", "/non-existing", nil)
w := httptest.NewRecorder()

s.Mux.ServeHTTP(w, r)

if w.Code != 404 {
t.Errorf("Expected status code 404, got %d", w.Code)
}
})

t.Run("GET /newController", func(t *testing.T) {
r := httptest.NewRequest("GET", "/newController/", nil)
w := httptest.NewRecorder()

s.Mux.ServeHTTP(w, r)

if w.Code != 200 {
t.Errorf("Expected status code 200, got %d", w.Code)
}
expectedBody := `[{"id":"","name":""},{"id":"","name":""}]`
actualBody := strings.TrimSpace(w.Body.String())
if expectedBody != actualBody {
t.Errorf("Expected body %s, got %s", expectedBody, actualBody)
}
})

t.Run("GET /newController/{id}", func(t *testing.T) {
r := httptest.NewRequest("GET", "/newController/123", nil)
w := httptest.NewRecorder()

s.Mux.ServeHTTP(w, r)

if w.Code != 200 {
t.Errorf("Expected status code 200, got %d", w.Code)
}
expectedBody := `{"id":"","name":""}`
actualBody := strings.TrimSpace(w.Body.String())
if expectedBody != actualBody {
t.Errorf("Expected body %s, got %s", expectedBody, actualBody)
}
})
}
43 changes: 43 additions & 0 deletions cmd/fuego/templates/controller/controller_mocks_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package controller

import "github.com/go-fuego/fuego"

type NewControllerServiceMock struct {
getAllNewControllerLength int
}

var _ NewControllerService = NewControllerServiceMock{}

// CreateNewController implements NewControllerService.
func (NewControllerServiceMock) CreateNewController(body NewControllerCreate) (NewController, error) {
return NewController{
ID: "randomID",
Name: body.Name,
}, nil
}

// DeleteNewController implements NewControllerService.
func (NewControllerServiceMock) DeleteNewController(id string) (any, error) {
return nil, nil
}

// GetNewController implements NewControllerService.
func (NewControllerServiceMock) GetNewController(id string) (NewController, error) {
if id == "404" {
return NewController{}, fuego.HTTPError{
Message: "not found",
StatusCode: 404,
}
}
return NewController{}, nil
}

// UpdateNewController implements NewControllerService.
func (NewControllerServiceMock) UpdateNewController(id string, input NewControllerUpdate) (NewController, error) {
return NewController{}, nil
}

func (m NewControllerServiceMock) GetAllNewController() ([]NewController, error) {
allNewController := make([]NewController, m.getAllNewControllerLength)
return allNewController, nil
}
Loading

0 comments on commit 719b707

Please sign in to comment.