Implement ynab import in test and use pgtx

This commit is contained in:
Jan Bader 2022-04-05 16:11:11 +00:00
parent 4a66d9fdfc
commit 2d9c380cf4
2 changed files with 69 additions and 5 deletions

View File

@ -16,7 +16,7 @@ import (
) )
func init() { //nolint:gochecknoinits func init() { //nolint:gochecknoinits
txdb.Register("pgtx", "pgx", "postgres://budgeteer_test:budgeteer_test@localhost:5432/budgeteer_test") txdb.Register("pgtx", "pgx", "postgres://budgeteer:budgeteer@db:5432/budgeteer_test")
} }
func TestRegisterUser(t *testing.T) { //nolint:funlen func TestRegisterUser(t *testing.T) { //nolint:funlen

View File

@ -1,10 +1,13 @@
package server package server
import ( import (
"context"
"fmt" "fmt"
"io/fs" "io/fs"
"log" "log"
"net/http" "net/http"
"os"
"testing"
"git.javil.eu/jacob1123/budgeteer/bcrypt" "git.javil.eu/jacob1123/budgeteer/bcrypt"
"git.javil.eu/jacob1123/budgeteer/config" "git.javil.eu/jacob1123/budgeteer/config"
@ -13,13 +16,14 @@ import (
"git.javil.eu/jacob1123/budgeteer/web" "git.javil.eu/jacob1123/budgeteer/web"
) )
func TestMain() { func TestMain(t *testing.T) {
t.Parallel()
cfg := config.Config{ cfg := config.Config{
DatabaseConnection: "postgres://budgeteer:budgeteer@db:5432/budgeteer-testing", DatabaseConnection: "postgres://budgeteer:budgeteer@db:5432/budgeteer_test",
SessionSecret: "random string for JWT authorization", SessionSecret: "random string for JWT authorization",
} }
queries, err := postgres.Connect("pgx", cfg.DatabaseConnection) queries, err := postgres.Connect("pgtx", cfg.DatabaseConnection)
if err != nil { if err != nil {
log.Fatalf("Failed connecting to DB: %v", err) log.Fatalf("Failed connecting to DB: %v", err)
} }
@ -41,7 +45,28 @@ func TestMain() {
StaticFS: http.FS(static), StaticFS: http.FS(static),
} }
// create new budget ctx := context.Background()
createUserParams := postgres.CreateUserParams{
Email: "test@example.com",
Name: "test@example.com",
Password: "this is my dumb password",
}
user, err := handler.Service.CreateUser(ctx, createUserParams)
if err != nil {
fmt.Println(err)
t.Fail()
return
}
budget, err := handler.Service.NewBudget(ctx, "My nice Budget", user.ID)
if err != nil {
fmt.Println(err)
t.Fail()
return
}
handler.DoYNABImport(ctx, t, budget)
// import from YNAB // import from YNAB
@ -51,3 +76,42 @@ func TestMain() {
// check accounts // check accounts
} }
func (h Handler) DoYNABImport(ctx context.Context, t *testing.T, budget *postgres.Budget) {
t.Helper()
budgetID := budget.ID
ynab, err := postgres.NewYNABImport(ctx, h.Service.Queries, budgetID)
if err != nil {
fmt.Println(err)
t.Fail()
return
}
transactions, err := os.Open("../.vscode/Register.tsv")
if err != nil {
fmt.Println(err)
t.Fail()
return
}
assignments, err := os.Open("../.vscode/Budget.tsv")
if err != nil {
fmt.Println(err)
t.Fail()
return
}
err = ynab.ImportTransactions(ctx, transactions)
if err != nil {
fmt.Println(err)
t.Fail()
return
}
err = ynab.ImportAssignments(ctx, assignments)
if err != nil {
fmt.Println(err)
t.Fail()
return
}
}