fix pricing (km instead of meters)

This commit is contained in:
Arnaud Delcasse 2025-10-08 14:48:19 +02:00
parent 9b091bc041
commit a81c1eb33c
2 changed files with 38 additions and 37 deletions

View File

@ -16,12 +16,12 @@ func (s *MMS43PricingService) Prices(params PricingParams) (map[string]Price, er
// Trip is free
passengerAmount = 0.0
} else {
// Price is 0.15€/km for passenger distance (convert meters to km)
passengerAmount = 0.15 * (float64(params.SharedMobility.PassengerDistance) / 1000.0)
// Price is 0.15€/km for passenger distance
passengerAmount = 0.15 * float64(params.SharedMobility.PassengerDistance)
}
// Driver indemnification is always 0.30€/km for driver distance (convert meters to km)
driverAmount := 0.30 * (float64(params.SharedMobility.DriverDistance) / 1000.0)
// Driver indemnification is always 0.30€/km for driver distance
driverAmount := 0.30 * float64(params.SharedMobility.DriverDistance)
return map[string]Price{
"passenger": {

View File

@ -21,8 +21,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 10000, // 10km in meters
DriverDistance: 15000, // 15km in meters
PassengerDistance: 10, // 10km in meters
DriverDistance: 15, // 15km in meters
},
},
expectedPrices: map[string]Price{
@ -39,8 +39,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 20000, // 20km in meters
DriverDistance: 25000, // 25km in meters
PassengerDistance: 20, // 20km in meters
DriverDistance: 25, // 25km in meters
},
},
expectedPrices: map[string]Price{
@ -57,8 +57,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 10000, // 10km in meters
DriverDistance: 10000, // 10km in meters
PassengerDistance: 10, // 10km in meters
DriverDistance: 10, // 10km in meters
},
},
expectedPrices: map[string]Price{
@ -75,8 +75,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 30000, // 30km in meters
DriverDistance: 35000, // 35km in meters
PassengerDistance: 30, // 30km in meters
DriverDistance: 35, // 35km in meters
},
},
expectedPrices: map[string]Price{
@ -111,8 +111,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 100000, // 100km in meters
DriverDistance: 120000, // 120km in meters
PassengerDistance: 100, // 100km in meters
DriverDistance: 120, // 120km in meters
},
},
expectedPrices: map[string]Price{
@ -129,8 +129,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 4000, // 4km in meters
DriverDistance: 5000, // 5km in meters
PassengerDistance: 4, // 4km in meters
DriverDistance: 5, // 5km in meters
},
},
expectedPrices: map[string]Price{
@ -147,8 +147,8 @@ func TestMMS43Prices(t *testing.T) {
Priority: false,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 2000, // 2km in meters
DriverDistance: 3000, // 3km in meters
PassengerDistance: 2, // 2km in meters
DriverDistance: 3, // 3km in meters
},
},
expectedPrices: map[string]Price{
@ -189,8 +189,8 @@ func TestMMS43PricingEdgeCases(t *testing.T) {
History: -1, // Edge case: negative history
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 10000,
DriverDistance: 10000,
PassengerDistance: 10,
DriverDistance: 10,
},
}
@ -207,8 +207,8 @@ func TestMMS43PricingEdgeCases(t *testing.T) {
History: 100,
},
SharedMobility: SharedMobilityParams{
PassengerDistance: 10000,
DriverDistance: 10000,
PassengerDistance: 10,
DriverDistance: 10,
},
}
@ -219,3 +219,4 @@ func TestMMS43PricingEdgeCases(t *testing.T) {
assert.InDelta(t, 3.0, prices["driver"].Amount, 0.001)
})
}