review
This commit is contained in:
parent
6ffc0d2c99
commit
6153017b62
22 changed files with 835 additions and 100 deletions
125
backend/test_review_endpoint.go
Normal file
125
backend/test_review_endpoint.go
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/danyel/go-guess/backend/internal/security"
|
||||
"github.com/danyel/go-guess/backend/internal/service/model"
|
||||
"github.com/danyel/go-guess/backend/internal/web/handler"
|
||||
"github.com/danyel/go-guess/backend/internal/web/router"
|
||||
)
|
||||
|
||||
type mockInvitationService struct{}
|
||||
|
||||
func (m mockInvitationService) List(ctx context.Context, jobID uint) ([]model.Invitation, error) {
|
||||
return []model.Invitation{{ID: 1}}, nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) Create(ctx context.Context, jobID, participantID uint) (model.Invitation, error) {
|
||||
return model.Invitation{}, nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) Review(ctx context.Context, jobID, invitationID uint) (model.Interview, error) {
|
||||
return model.Interview{
|
||||
Invitation: model.Invitation{ID: 1, ParticipantName: "Test", ParticipantEmail: "test@example.com", Status: "completed"},
|
||||
Job: model.JobPosting{ID: 1, Title: "Job"},
|
||||
Answers: map[uint]string{1: "My answer"},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) GetInterview(ctx context.Context, token string) (model.Interview, error) {
|
||||
return model.Interview{}, nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) Accept(ctx context.Context, token string) (model.Interview, error) {
|
||||
return model.Interview{}, nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) SaveAnswer(ctx context.Context, token string, questionID uint, answer string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m mockInvitationService) Finish(ctx context.Context, token string) (model.Interview, error) {
|
||||
return model.Interview{}, nil
|
||||
}
|
||||
|
||||
type mockStubs struct{}
|
||||
|
||||
func (mockStubs) Login(context.Context, string, string) (string, model.User, error) {
|
||||
return "", model.User{}, nil
|
||||
}
|
||||
|
||||
func (mockStubs) List(context.Context) ([]model.JobPosting, error) {
|
||||
return []model.JobPosting{}, nil
|
||||
}
|
||||
func (mockStubs) Get(context.Context, uint) (model.JobPosting, error) {
|
||||
return model.JobPosting{}, nil
|
||||
}
|
||||
func (mockStubs) Create(context.Context, model.JobPosting) (model.JobPosting, error) {
|
||||
return model.JobPosting{}, nil
|
||||
}
|
||||
func (mockStubs) Update(context.Context, uint, string, int) (model.JobPosting, error) {
|
||||
return model.JobPosting{}, nil
|
||||
}
|
||||
func (mockStubs) AttachQuestion(context.Context, uint, uint) error { return nil }
|
||||
func (mockStubs) DetachQuestion(context.Context, uint, uint) error { return nil }
|
||||
func (mockStubs) Candidates(context.Context, uint) ([]model.CandidateMatch, error) {
|
||||
return []model.CandidateMatch{}, nil
|
||||
}
|
||||
|
||||
func (mockStubs) List2(context.Context) ([]model.Participant, error) { return nil, nil }
|
||||
func (mockStubs) Get2(context.Context, uint) (model.Participant, error) {
|
||||
return model.Participant{}, nil
|
||||
}
|
||||
func (mockStubs) Create2(context.Context, model.Participant) (model.Participant, error) {
|
||||
return model.Participant{}, nil
|
||||
}
|
||||
|
||||
func (mockStubs) List3(context.Context, string) ([]model.Question, error) { return nil, nil }
|
||||
func (mockStubs) Create3(context.Context, model.Question) (model.Question, error) {
|
||||
return model.Question{}, nil
|
||||
}
|
||||
func (mockStubs) Update3(context.Context, uint, model.Question) (model.Question, error) {
|
||||
return model.Question{}, nil
|
||||
}
|
||||
func (mockStubs) SetDeprecated(context.Context, uint, bool) (model.Question, error) {
|
||||
return model.Question{}, nil
|
||||
}
|
||||
|
||||
func TestReviewEndpoint(t *testing.T) {
|
||||
// Setup
|
||||
mockAuth := mockStubs{}
|
||||
mockJobs := mockStubs{}
|
||||
mockQuestions := mockStubs{}
|
||||
mockParticipants := mockStubs{}
|
||||
mockInvitations := mockInvitationService{}
|
||||
|
||||
h := handler.New(mockAuth, mockJobs, mockQuestions, mockParticipants, mockInvitations, 10, "http://localhost:5173")
|
||||
tokens := security.NewTokenManager("01234567890123456789012345678901", time.Hour)
|
||||
r := router.New(h, tokens, "http://localhost:5173")
|
||||
|
||||
// Create a valid token
|
||||
token, err := tokens.Issue(1, "test@example.com", "interviewer")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create token: %v", err)
|
||||
}
|
||||
|
||||
// Test the review endpoint
|
||||
req := httptest.NewRequest(http.MethodGet, "/api/jobs/1/invitations/1", nil)
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
r.ServeHTTP(w, req)
|
||||
|
||||
if w.Code != http.StatusOK {
|
||||
t.Errorf("Expected 200, got %d. Response: %s", w.Code, w.Body.String())
|
||||
}
|
||||
|
||||
if w.Header().Get("Content-Type") != "application/json" {
|
||||
t.Errorf("Expected JSON content type, got %s", w.Header().Get("Content-Type"))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue