Closes #57 Reviewed-on: phoenix/textsender-api#65 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
package handler
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.kundeng.us/phoenix/textsender-models/tx0/contact"
|
|
"git.kundeng.us/phoenix/textsender-models/tx0/message"
|
|
"git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling"
|
|
"github.com/google/uuid"
|
|
"github.com/joho/godotenv"
|
|
|
|
"git.kundeng.us/phoenix/textsender-api/internal/app"
|
|
"git.kundeng.us/phoenix/textsender-api/internal/config"
|
|
"git.kundeng.us/phoenix/textsender-api/internal/db"
|
|
)
|
|
|
|
func GetApp() (*app.App, error) {
|
|
cwd, _ := os.Getwd()
|
|
envPath := path.Join(cwd, ".env")
|
|
|
|
err := godotenv.Load(envPath)
|
|
if err != nil {
|
|
envPath = path.Join(cwd, "../..", ".env")
|
|
if err := godotenv.Load(envPath); err != nil {
|
|
panic("Error loading .env file: " + err.Error())
|
|
}
|
|
}
|
|
|
|
if tCfg, err := config.TwilioConfig(); err != nil {
|
|
return nil, fmt.Errorf("Error: %v", err)
|
|
} else {
|
|
return &app.App{TwilioConfig: tCfg}, nil
|
|
}
|
|
}
|
|
|
|
func ResetTestDB(t *testing.T, tableName string) {
|
|
t.Helper()
|
|
_, err := db.Pool.Exec(context.Background(), fmt.Sprintf("DELETE FROM ", tableName))
|
|
if err != nil {
|
|
t.Fatalf("Failed to reset test database: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestContact(id uuid.UUID, userId uuid.UUID) contact.Contact {
|
|
if id == uuid.Nil {
|
|
id = uuid.New()
|
|
return contact.Contact{Id: &id, PhoneNumber: "+10123456789", UserId: &userId}
|
|
} else {
|
|
return contact.Contact{Id: &id, PhoneNumber: "+10123456789", UserId: &userId}
|
|
}
|
|
}
|
|
|
|
func TestMessage(id uuid.UUID, userId uuid.UUID) message.Message {
|
|
if id == uuid.Nil {
|
|
return message.Message{Id: uuid.New(), Content: "Oh how the mighty have fallen", UserId: userId}
|
|
} else {
|
|
return message.Message{Id: id, Content: "Oh how the mighty have fallen", UserId: userId}
|
|
}
|
|
}
|
|
|
|
func TestScheduledMessage(id uuid.UUID, userId uuid.UUID, now time.Time) scheduling.ScheduledMessage {
|
|
if id == uuid.Nil {
|
|
return scheduling.ScheduledMessage{Id: uuid.New(), UserId: userId, Scheduled: now.Add(20 * time.Minute), Status: scheduling.Pending}
|
|
} else {
|
|
return scheduling.ScheduledMessage{Id: id, UserId: userId, Scheduled: now.Add(20 * time.Minute), Status: scheduling.Pending}
|
|
}
|
|
}
|
|
|
|
func TestScheduledMessageEvent(messageId, contactId, scheduledMessageId uuid.UUID) scheduling.ScheduledMessageEvent {
|
|
return scheduling.ScheduledMessageEvent{MessageId: messageId, ContactId: contactId, ScheduledMessageId: scheduledMessageId}
|
|
}
|