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} }