Align document handlers/repo with contract updates
This commit is contained in:
@@ -36,16 +36,13 @@ func NewDocumentHandler(documentService *services.DocumentService, storageServic
|
||||
func (h *DocumentHandler) ListDocuments(c echo.Context) error {
|
||||
user := c.Get(middleware.AuthUserKey).(*models.User)
|
||||
|
||||
// Build filter from query params (matching KMP DocumentApi parameters)
|
||||
// Build filter from supported query params.
|
||||
var filter *repositories.DocumentFilter
|
||||
if c.QueryParam("residence") != "" || c.QueryParam("document_type") != "" ||
|
||||
c.QueryParam("category") != "" || c.QueryParam("contractor") != "" ||
|
||||
c.QueryParam("is_active") != "" || c.QueryParam("expiring_soon") != "" ||
|
||||
c.QueryParam("tags") != "" || c.QueryParam("search") != "" {
|
||||
c.QueryParam("search") != "" {
|
||||
filter = &repositories.DocumentFilter{
|
||||
DocumentType: c.QueryParam("document_type"),
|
||||
Category: c.QueryParam("category"),
|
||||
Tags: c.QueryParam("tags"),
|
||||
Search: c.QueryParam("search"),
|
||||
}
|
||||
if rid := c.QueryParam("residence"); rid != "" {
|
||||
@@ -54,12 +51,6 @@ func (h *DocumentHandler) ListDocuments(c echo.Context) error {
|
||||
filter.ResidenceID = &residenceID
|
||||
}
|
||||
}
|
||||
if cid := c.QueryParam("contractor"); cid != "" {
|
||||
if parsed, err := strconv.ParseUint(cid, 10, 32); err == nil {
|
||||
contractorID := uint(parsed)
|
||||
filter.ContractorID = &contractorID
|
||||
}
|
||||
}
|
||||
if ia := c.QueryParam("is_active"); ia != "" {
|
||||
isActive := ia == "true" || ia == "1"
|
||||
filter.IsActive = &isActive
|
||||
|
||||
@@ -31,7 +31,9 @@ func TestDocumentHandler_ListDocuments(t *testing.T) {
|
||||
handler, e, db := setupDocumentHandler(t)
|
||||
user := testutil.CreateTestUser(t, db, "owner", "owner@test.com", "password")
|
||||
residence := testutil.CreateTestResidence(t, db, user.ID, "Test House")
|
||||
testutil.CreateTestDocument(t, db, residence.ID, user.ID, "Test Doc")
|
||||
activeDoc := testutil.CreateTestDocument(t, db, residence.ID, user.ID, "Test Doc")
|
||||
inactiveDoc := testutil.CreateTestDocument(t, db, residence.ID, user.ID, "Old Doc")
|
||||
require.NoError(t, db.Model(&inactiveDoc).Update("is_active", false).Error)
|
||||
|
||||
authGroup := e.Group("/api/documents")
|
||||
authGroup.Use(testutil.MockAuthMiddleware(user))
|
||||
@@ -45,7 +47,18 @@ func TestDocumentHandler_ListDocuments(t *testing.T) {
|
||||
err := json.Unmarshal(w.Body.Bytes(), &response)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, response, 1)
|
||||
assert.Equal(t, "Test Doc", response[0]["title"])
|
||||
assert.Equal(t, activeDoc.Title, response[0]["title"])
|
||||
})
|
||||
|
||||
t.Run("can list inactive documents when requested", func(t *testing.T) {
|
||||
w := testutil.MakeRequest(e, "GET", "/api/documents/?is_active=false", nil, "test-token")
|
||||
testutil.AssertStatusCode(t, w, http.StatusOK)
|
||||
|
||||
var response []map[string]interface{}
|
||||
err := json.Unmarshal(w.Body.Bytes(), &response)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, response, 1)
|
||||
assert.Equal(t, inactiveDoc.Title, response[0]["title"])
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user