Skip to content

Commit

Permalink
✨ Add query parameter GET /requests?created_by
Browse files Browse the repository at this point in the history
  • Loading branch information
H1rono committed Dec 26, 2024
1 parent d8215a4 commit d078af9
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
24 changes: 17 additions & 7 deletions router/request.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,24 @@ func (h Handlers) GetRequests(c echo.Context) error {
g := c.QueryParam("group")
group = &g
}
var cratedBy *uuid.UUID
if c.QueryParam("created_by") != "" {
u, err := uuid.Parse(c.QueryParam("created_by"))
if err != nil {
h.Logger.Info("could not parse query parameter `created_by` as UUID", zap.Error(err))
return echo.NewHTTPError(http.StatusBadRequest, err)
}
cratedBy = &u
}
query := model.RequestQuery{
Sort: sort,
Target: target,
Status: ss,
Since: since,
Until: until,
Tag: tag,
Group: group,
Sort: sort,
Target: target,
Status: ss,
Since: since,
Until: until,
Tag: tag,
Group: group,
CreatedBy: cratedBy,
}

modelrequests, err := h.Repository.GetRequests(ctx, query)
Expand Down
53 changes: 53 additions & 0 deletions router/request_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,59 @@ func TestHandlers_GetRequests(t *testing.T) {
}
})

t.Run("Success7", func(t *testing.T) {
t.Parallel()
ctrl := gomock.NewController(t)

date := time.Now().Round(time.Second)
request := &model.RequestResponse{
ID: uuid.New(),
Status: model.Submitted,
CreatedBy: uuid.New(),
Title: random.AlphaNumeric(t, 20),
Content: random.AlphaNumeric(t, 50),
CreatedAt: date,
UpdatedAt: date,
}
modelRequests := []*model.RequestResponse{request}

e := echo.New()
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("/api/requests?created_by=%s", request.CreatedBy.String()), nil)
require.NoError(t, err)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)

h, err := NewTestHandlers(t, ctrl)
require.NoError(t, err)
h.Repository.MockRequestRepository.
EXPECT().
GetRequests(c.Request().Context(), model.RequestQuery{CreatedBy: &request.CreatedBy}).
Return(modelRequests, nil)
err = h.Handlers.GetRequests(c)
if !assert.NoError(t, err) {
return
}
require.Equal(t, http.StatusOK, rec.Code)
var res []*RequestResponse
err = json.Unmarshal(rec.Body.Bytes(), &res)
require.NoError(t, err)
expectedBody := []*RequestResponse{
{
ID: request.ID,
Status: request.Status,
CreatedAt: date,
UpdatedAt: date,
CreatedBy: request.CreatedBy,
Title: request.Title,
Content: request.Content,
Tags: []*TagOverview{},
Targets: []*TargetOverview{},
Comments: []*CommentDetail{},
},
}
require.Equal(t, expectedBody, res)
})

t.Run("InvaildStatus", func(t *testing.T) {
t.Parallel()
ctrl := gomock.NewController(t)
Expand Down

0 comments on commit d078af9

Please sign in to comment.