init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View File

@@ -0,0 +1,119 @@
package handlers
import (
"context"
"errors"
"net/http"
"net/http/httptest"
"testing"
"github.com/gofiber/fiber/v2"
filemanager "wucher/internal/domain/file_manager"
"wucher/internal/shared/pkg/attachmentresolver"
"wucher/internal/shared/pkg/uuidv7"
)
func TestAttachmentResolverHelpers(t *testing.T) {
app := fiber.New()
app.Get("/invalid-attachment", func(c *fiber.Ctx) error {
raw := "bad"
_, handled := resolveAttachmentIDFromInput(c, attachmentresolver.Params{
RawAttachmentID: &raw,
AttachmentField: "attachment_id",
FileField: "file_uuid",
}, "Update failed")
if !handled {
t.Fatalf("expected handled invalid attachment")
}
return nil
})
app.Get("/invalid-file", func(c *fiber.Ctx) error {
raw := "bad"
_, handled := resolveAttachmentIDFromInput(c, attachmentresolver.Params{
RawFileID: &raw,
FileManager: &fileManagerAttachmentHandlerServiceMock{},
}, "Update failed")
if !handled {
t.Fatalf("expected handled invalid file")
}
return nil
})
app.Get("/cannot-resolve", func(c *fiber.Ctx) error {
raw := mustUUIDStringContact(t, uuidv7.MustBytes())
_, handled := resolveAttachmentIDFromInput(c, attachmentresolver.Params{
RawFileID: &raw,
FileManager: &fileManagerAttachmentHandlerServiceMock{
createAttachmentFn: func(context.Context, filemanager.CreateAttachmentParams) (*filemanager.Attachment, error) {
return nil, filemanager.ErrAttachmentAlreadyExists
},
listAttachmentsFn: func(context.Context, filemanager.ListAttachmentsParams) ([]filemanager.Attachment, int64, error) {
return nil, 0, nil
},
},
}, "Update failed")
if !handled {
t.Fatalf("expected handled cannot resolve")
}
return nil
})
app.Get("/not-ready", func(c *fiber.Ctx) error {
raw := mustUUIDStringContact(t, uuidv7.MustBytes())
_, handled := resolveAttachmentIDFromInput(c, attachmentresolver.Params{
RawFileID: &raw,
FileManager: &fileManagerAttachmentHandlerServiceMock{
createAttachmentFn: func(context.Context, filemanager.CreateAttachmentParams) (*filemanager.Attachment, error) {
return nil, filemanager.ErrFileNotReadyForAttachment
},
getFileFn: func(context.Context, []byte) (*filemanager.File, error) {
return &filemanager.File{Status: filemanager.FileStatusUploaded}, nil
},
},
}, "Update failed")
if !handled {
t.Fatalf("expected handled file-not-ready")
}
return nil
})
app.Get("/bad-request", func(c *fiber.Ctx) error {
raw := mustUUIDStringContact(t, uuidv7.MustBytes())
_, handled := resolveAttachmentIDFromInput(c, attachmentresolver.Params{
RawAttachmentID: &raw,
ValidateAttachmentExists: true,
AttachmentExists: func(context.Context, []byte) (bool, error) {
return false, errors.New("db down")
},
}, "Update failed")
if !handled {
t.Fatalf("expected handled bad request")
}
return nil
})
for _, path := range []string{"/invalid-attachment", "/invalid-file", "/cannot-resolve", "/not-ready", "/bad-request"} {
resp, err := app.Test(httptest.NewRequest(http.MethodGet, path, nil), 30000)
if err != nil {
t.Fatalf("%s err: %v", path, err)
}
if resp.StatusCode == http.StatusOK {
t.Fatalf("expected non-200 for %s", path)
}
}
}
func TestOptionalStringHelpers(t *testing.T) {
if hasNonEmptyOptionalString(nil) || hasBlankOptionalString(nil) {
t.Fatalf("nil optional helpers should be false")
}
blank := " "
if hasNonEmptyOptionalString(&blank) || !hasBlankOptionalString(&blank) {
t.Fatalf("blank optional helper mismatch")
}
val := "x"
if !hasNonEmptyOptionalString(&val) || hasBlankOptionalString(&val) {
t.Fatalf("non-blank optional helper mismatch")
}
if fieldOrDefault("", "a") != "a" || fieldOrDefault("x", "a") != "x" {
t.Fatalf("fieldOrDefault mismatch")
}
}