add event base intelligency
This commit is contained in:
@@ -26,7 +26,7 @@ func (m *MockPricingProfile) IsPurchasable() bool {
|
||||
return m.Purchased
|
||||
}
|
||||
|
||||
func (m *MockPricingProfile) GetPrice(amount float64, explicitDuration float64, start time.Time, end time.Time, _ ...string) (float64, error) {
|
||||
func (m *MockPricingProfile) GetPriceHT(amount float64, explicitDuration float64, start time.Time, end time.Time, variations []*pricing.PricingVariation, _ ...string) (float64, error) {
|
||||
if m.ReturnErr {
|
||||
return 0, errors.New("mock error")
|
||||
}
|
||||
@@ -72,14 +72,21 @@ func TestGetAndSetLocationStartEnd(t *testing.T) {
|
||||
|
||||
func TestGetExplicitDurationInS(t *testing.T) {
|
||||
t.Run("uses explicit duration if set", func(t *testing.T) {
|
||||
r := &resources.PricedResource{ExplicitBookingDurationS: 3600}
|
||||
r := &resources.PricedResource{BookingConfiguration: &resources.BookingConfiguration{
|
||||
ExplicitBookingDurationS: 3600,
|
||||
},
|
||||
}
|
||||
assert.Equal(t, 3600.0, r.GetExplicitDurationInS())
|
||||
})
|
||||
|
||||
t.Run("computes duration from start and end", func(t *testing.T) {
|
||||
start := time.Now()
|
||||
end := start.Add(2 * time.Hour)
|
||||
r := &resources.PricedResource{UsageStart: &start, UsageEnd: &end}
|
||||
r := &resources.PricedResource{
|
||||
BookingConfiguration: &resources.BookingConfiguration{
|
||||
UsageStart: &start, UsageEnd: &end,
|
||||
},
|
||||
}
|
||||
assert.InDelta(t, 7200.0, r.GetExplicitDurationInS(), 0.1)
|
||||
})
|
||||
|
||||
@@ -89,10 +96,10 @@ func TestGetExplicitDurationInS(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetPrice(t *testing.T) {
|
||||
func TestGetPriceHT(t *testing.T) {
|
||||
t.Run("returns error if no pricing profile", func(t *testing.T) {
|
||||
r := &resources.PricedResource{ResourceID: "no-profile"}
|
||||
price, err := r.GetPrice()
|
||||
price, err := r.GetPriceHT()
|
||||
require.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "pricing profile must be set")
|
||||
assert.Equal(t, 0.0, price)
|
||||
@@ -102,24 +109,28 @@ func TestGetPrice(t *testing.T) {
|
||||
start := time.Now()
|
||||
end := start.Add(30 * time.Minute)
|
||||
r := &resources.PricedResource{
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
BookingConfiguration: &resources.BookingConfiguration{
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
},
|
||||
}
|
||||
price, err := r.GetPrice()
|
||||
price, err := r.GetPriceHT()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 42.0, price)
|
||||
})
|
||||
|
||||
t.Run("returns error if profile GetPrice fails", func(t *testing.T) {
|
||||
t.Run("returns error if profile GetPriceHT fails", func(t *testing.T) {
|
||||
start := time.Now()
|
||||
end := start.Add(1 * time.Hour)
|
||||
mock := &MockPricingProfile{ReturnErr: true}
|
||||
r := &resources.PricedResource{
|
||||
SelectedPricing: mock,
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
BookingConfiguration: &resources.BookingConfiguration{
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
},
|
||||
}
|
||||
price, err := r.GetPrice()
|
||||
price, err := r.GetPriceHT()
|
||||
require.Error(t, err)
|
||||
assert.Equal(t, 0.0, price)
|
||||
})
|
||||
@@ -130,10 +141,12 @@ func TestGetPrice(t *testing.T) {
|
||||
mock := &MockPricingProfile{ReturnCost: 10.0}
|
||||
r := &resources.PricedResource{
|
||||
SelectedPricing: mock,
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
BookingConfiguration: &resources.BookingConfiguration{
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
},
|
||||
}
|
||||
price, err := r.GetPrice()
|
||||
price, err := r.GetPriceHT()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 10.0, price)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user