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:
+2
-2
@@ -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
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user