1
0
Fork 0

test(server): add tests for /upcoming-dates endpoints

This commit is contained in:
Vojtěch Mareš 2024-05-14 21:52:25 +02:00
parent e2fc77f767
commit 32874f9748
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D

View file

@ -482,4 +482,157 @@ func TestServer(t *testing.T) {
assert.Equal(t, len(trainingDates), 0)
})
t.Run("List upcoming training dates for training", func(t *testing.T) {
tr := &training.Training{
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
Type: training.OpenTrainingPrice,
},
},
}
_ = handlers.trainingRepository.Create(tr)
now := time.Now()
upcomingTrainingCount := 5
for i := -4; i <= 5; i++ {
date := now.AddDate(0, 0, i)
td := &training.TrainingDate{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
Days: tr.Days,
IsOnline: false,
Location: "NYC",
StartTime: date,
Price: money.Price{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
},
}
_ = handlers.trainingDateRepository.Create(tr.ID, td)
}
rr, _ := doGet(t, app, "/v1/trainings/"+tr.ID.String()+"/upcoming-dates")
assert.Equal(t, http.StatusOK, rr.StatusCode)
var trainingDatesReturned []TrainingDate
err := json.NewDecoder(rr.Body).Decode(&trainingDatesReturned)
assert.NoError(t, err, "error unmarshalling response")
assert.Equal(t, len(trainingDatesReturned), upcomingTrainingCount)
})
t.Run("List all upcoming training dates", func(t *testing.T) {
tr1 := &training.Training{
Name: "Testing Training for training date 1",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
Type: training.OpenTrainingPrice,
},
},
}
_ = handlers.trainingRepository.Create(tr1)
tr2 := &training.Training{
Name: "Testing Training for training date 2",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
Type: training.OpenTrainingPrice,
},
},
}
_ = handlers.trainingRepository.Create(tr2)
tr3 := &training.Training{
Name: "Testing Training for training date 3",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
Type: training.OpenTrainingPrice,
},
},
}
_ = handlers.trainingRepository.Create(tr3)
allTrainings, _ := handlers.trainingRepository.FindAll()
now := time.Now()
upcomingTrainingCount := 5
for i := -4; i <= upcomingTrainingCount; i++ {
date := now.AddDate(0, 0, i)
td1 := &training.TrainingDate{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
Days: tr1.Days,
IsOnline: false,
Location: "NYC",
StartTime: date,
Price: money.Price{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
},
}
_ = handlers.trainingDateRepository.Create(tr1.ID, td1)
td2 := &training.TrainingDate{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
Days: tr2.Days,
IsOnline: false,
Location: "NYC",
StartTime: date,
Price: money.Price{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
},
}
_ = handlers.trainingDateRepository.Create(tr2.ID, td2)
td3 := &training.TrainingDate{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
Days: tr3.Days,
IsOnline: false,
Location: "NYC",
StartTime: date,
Price: money.Price{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
},
}
_ = handlers.trainingDateRepository.Create(tr3.ID, td3)
}
rr, _ := doGet(t, app, "/v1/trainings/upcoming-dates")
assert.Equal(t, http.StatusOK, rr.StatusCode)
var trainingDatesReturned ListAllUpcomingTrainingDatesResponse
err := json.NewDecoder(rr.Body).Decode(&trainingDatesReturned)
assert.NoError(t, err, "error unmarshalling response")
assert.Equal(t, len(allTrainings), len(trainingDatesReturned))
for _, tdr := range trainingDatesReturned {
if tdr.TrainingID == tr1.ID || tdr.TrainingID == tr2.ID || tdr.TrainingID == tr3.ID {
assert.Equal(t, len(tdr.Dates), upcomingTrainingCount)
}
}
})
}