tsk-24: Fixed tests (#25)

Closes #24

Reviewed-on: phoenix/textsender-api#25
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-11-10 17:42:41 +00:00
committed by phoenix
parent 44e00684cc
commit 77c950d299
8 changed files with 63 additions and 28 deletions
+2 -2
View File
@@ -64,12 +64,12 @@ func main() {
contactStore := store.NewContactStore(db.Pool)
messageStore := store.NewMessageStore(db.Pool)
schStore := store.NewScheduledMessageStore(db.Pool)
schMsgEvent := store.NewScheduledMessageEventStore(db.Pool)
schMsgEventStore := store.NewScheduledMessageEventStore(db.Pool)
contactHandler := handler.NewContactHandler(contactStore)
messageHandler := handler.NewMessageHandler(messageStore)
scheduledMessageHandler := handler.NewScheduledMessageHandler(schStore)
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEvent)
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEventStore)
router := chi.NewRouter()
+36 -7
View File
@@ -4,6 +4,7 @@ import (
"context"
"flag"
"fmt"
"net/http"
"os"
"path"
"testing"
@@ -15,6 +16,8 @@ import (
"git.kundeng.us/phoenix/textsender-api/internal/db"
"git.kundeng.us/phoenix/textsender-api/internal/handler"
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
mdlware "git.kundeng.us/phoenix/textsender-api/internal/middleware"
"git.kundeng.us/phoenix/textsender-api/internal/services"
"git.kundeng.us/phoenix/textsender-api/internal/store"
)
@@ -23,25 +26,51 @@ var testRouter *mux.Router
func TestMain(m *testing.M) {
cfg := load()
db, err := db.NewDatabase(cfg.GetDBConnString())
database, err := db.NewDatabase(cfg.GetDBConnString())
if err != nil {
fmt.Println(err.Error())
panic("Failed to initialize database")
}
defer db.Close()
defer database.Close()
ctx := context.Background()
err = db.ResetDatabase(ctx)
if err != nil {
fmt.Println(err.Error())
panic("Failed to initialize database")
if cfg.ResetDB {
if err = database.ResetDatabase(ctx); err != nil {
fmt.Println(err.Error())
panic("Failed to initialize database")
}
} else {
if exists, err := db.TableExists(ctx, database.Pool, "contacts "); err == nil && !exists {
fmt.Println("Resetting database")
err = database.ResetDatabase(ctx)
if err != nil {
fmt.Printf("Error:%v", err)
}
} else {
fmt.Printf("Error:%v", err)
}
}
contactStore := store.NewContactStore(db.Pool)
jwtService := services.NewJWTService(cfg.JWTSecret)
contactStore := store.NewContactStore(database.Pool)
messageStore := store.NewMessageStore(db.Pool)
schStore := store.NewScheduledMessageStore(db.Pool)
schMsgEventStore := store.NewScheduledMessageEventStore(db.Pool)
contactHandler := handler.NewContactHandler(contactStore)
messageHandler := handler.NewMessageHandler(messageStore)
scheduledMessageHandler := handler.NewScheduledMessageHandler(schStore)
scheduledMessageEventHandler := handler.NewScheduledMessageEventHandler(schMsgEventStore)
testRouter = mux.NewRouter()
testRouter.HandleFunc(endpoint.ADD_CONTACT_ENDPOINT, contactHandler.AddContact).Methods("POST")
testRouter.Handle(endpoint.GET_CONTACT, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(contactHandler.GetContact)))
testRouter.Handle(endpoint.ADD_MESSAGE, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(messageHandler.AddMessage)))
testRouter.Handle(endpoint.GET_MESSAGE, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(messageHandler.GetMessage)))
testRouter.Handle(endpoint.ScheduleMessageEndpoint, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(scheduledMessageHandler.AddScheduledMessage)))
testRouter.Handle(endpoint.AddEventToScheduledMessageEndpoint, mdlware.AuthMiddleware(jwtService)(http.HandlerFunc(scheduledMessageEventHandler.AddScheduledMessageEvent)))
code := m.Run()
os.Exit(code)
+3 -2
View File
@@ -15,6 +15,7 @@ import (
"git.kundeng.us/phoenix/textsender-api/internal/db"
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
)
type Request struct {
@@ -23,7 +24,7 @@ type Request struct {
}
func TestCreateContactWithMock(t *testing.T) {
mockstore := NewMockContactStore()
mockstore := mock.NewMockContactStore()
handler := NewContactHandler(mockstore)
testUserId := uuid.New()
@@ -47,7 +48,7 @@ func TestCreateContactWithMock(t *testing.T) {
}
func TestGetContactWithMock(t *testing.T) {
mockstore := NewMockContactStore()
mockstore := mock.NewMockContactStore()
testUserId := uuid.New()
testCon := contact.Contact{PhoneNumber: "+12335403383", UserId: testUserId}
+3 -2
View File
@@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/assert"
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
)
type CreateMessageRequest struct {
@@ -21,7 +22,7 @@ type CreateMessageRequest struct {
}
func TestCreateMessageWithMock(t *testing.T) {
mockStore := NewMockMessageStore()
mockStore := mock.NewMockMessageStore()
handler := NewMessageHandler(mockStore)
testUserId := uuid.New()
@@ -45,7 +46,7 @@ func TestCreateMessageWithMock(t *testing.T) {
}
func TestGetMessageWithMock(t *testing.T) {
mockstore := NewMockMessageStore()
mockstore := mock.NewMockMessageStore()
testUserId := uuid.New()
testCon := message.Message{Content: "Who is the one that benefits?", UserId: testUserId}
@@ -15,6 +15,7 @@ import (
"github.com/stretchr/testify/assert"
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
)
type CreateScheduledMessageEventRequest struct {
@@ -26,10 +27,11 @@ type CreateScheduledMessageEventRequest struct {
func TestCreateScheduledMessageEventWithMock(t *testing.T) {
now := time.Now()
mockStore := NewMockScheduledMessageEventStore()
contactStore := NewMockContactStore()
messageStore := NewMockMessageStore()
schMsgStore := NewMockScheduledMessageStore()
mockStore := mock.NewMockScheduledMessageEventStore()
contactStore := mock.NewMockContactStore()
messageStore := mock.NewMockMessageStore()
schMsgStore := mock.NewMockScheduledMessageStore()
handler := NewScheduledMessageEventHandler(mockStore)
recipientId := uuid.New()
@@ -50,7 +52,7 @@ func TestCreateScheduledMessageEventWithMock(t *testing.T) {
schMsg := scheduling.ScheduledMessage{}
schMsg.Id = scheduledMessageId
schMsg.UserId = testUserId
schMsg.Scheduled = now.Add(20*time.Minute)
schMsg.Scheduled = now.Add(20 * time.Minute)
ctx := t.Context()
+2 -1
View File
@@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/assert"
"git.kundeng.us/phoenix/textsender-api/internal/handler/endpoint"
"git.kundeng.us/phoenix/textsender-api/internal/store/mock"
)
type CreateScheduledMessageRequest struct {
@@ -23,7 +24,7 @@ type CreateScheduledMessageRequest struct {
func TestCreateScheduledMessageWithMock(t *testing.T) {
now := time.Now()
mockStore := NewMockScheduledMessageStore()
mockStore := mock.NewMockScheduledMessageStore()
handler := NewScheduledMessageHandler(mockStore)
testUserId := uuid.New()
@@ -1,10 +1,11 @@
package handler
package mock
import (
"context"
"errors"
"fmt"
"sync"
"time"
"github.com/google/uuid"
@@ -272,12 +273,12 @@ func (m *MockScheduledMessageEventStore) CreateScheduledMessageEvent(ctx context
event.Id = uuid.New()
}
if exists, err := m.Exists(ctx, event); err != nil {
return err
} else if exists {
key := ScheduledMessageEventKey{RecipientId: event.RecipientId, MessageId: event.MessageId, ScheduledMessageId: event.ScheduledMessageId}
if _, exists := m.ScheduledMessageEventsByKey[key]; exists {
return fmt.Errorf("Already exists")
} else {
key := ScheduledMessageEventKey{RecipientId: event.RecipientId, MessageId: event.MessageId, ScheduledMessageId: event.ScheduledMessageId}
event.Created = time.Now()
m.ScheduledMessageEvents[event.Id] = event
m.ScheduledMessageEventsByKey[key] = event
return nil
+4 -4
View File
@@ -2,19 +2,19 @@ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
DROP TABLE IF EXISTS contacts CASCADE;
CREATE TABLE contacts (
CREATE TABLE IF NOT EXISTS contacts (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
phone_number TEXT NOT NULL,
user_id UUID NOT NULL
);
CREATE TABLE messages (
CREATE TABLE IF NOT EXISTS messages (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
content TEXT NOT NULL,
user_id UUID NOT NULL
);
CREATE TABLE scheduled_messages (
CREATE TABLE IF NOT EXISTS scheduled_messages (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
scheduled timestamptz NOT NULL,
created timestamptz DEFAULT now(),
@@ -22,7 +22,7 @@ CREATE TABLE scheduled_messages (
user_id UUID NOT NULL
);
CREATE TABLE scheduled_message_events (
CREATE TABLE IF NOT EXISTS scheduled_message_events (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
recipient_id UUID NOT NULL,
message_id UUID NOT NULL,