test(server): add tests for /upcoming-dates endpoints
This commit is contained in:
parent
e2fc77f767
commit
32874f9748
1 changed files with 153 additions and 0 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue