diff --git a/core/services/workflows/metering.go b/core/services/workflows/metering.go index 6fbbcc846b7..d9ac9d47405 100644 --- a/core/services/workflows/metering.go +++ b/core/services/workflows/metering.go @@ -43,7 +43,7 @@ func (v MeteringSpendValue) Div(value MeteringSpendValue) MeteringSpendValue { } func (v MeteringSpendValue) GreaterThan(value MeteringSpendValue) bool { - return v.value.GreaterThan(v.value) + return v.value.GreaterThan(value.value) } func (v MeteringSpendValue) String() string { diff --git a/core/services/workflows/metering_test.go b/core/services/workflows/metering_test.go index b4583ff83ed..6684335b62a 100644 --- a/core/services/workflows/metering_test.go +++ b/core/services/workflows/metering_test.go @@ -7,6 +7,7 @@ import ( "github.com/shopspring/decimal" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "golang.org/x/exp/maps" "github.com/smartcontractkit/chainlink/v2/core/services/workflows" ) @@ -39,7 +40,14 @@ func TestMeteringReport(t *testing.T) { testUnitB: testUnitB.DecimalToSpendValue(decimal.NewFromFloat(0.2)), } - assert.Equal(t, expected, report.MedianSpend()) + median := report.MedianSpend() + + require.Len(t, median, 2) + require.Contains(t, maps.Keys(median), testUnitA) + require.Contains(t, maps.Keys(median), testUnitB) + + assert.Equal(t, expected[testUnitA].String(), median[testUnitA].String()) + assert.Equal(t, expected[testUnitB].String(), median[testUnitB].String()) }) t.Run("MedianSpend returns median single spend value", func(t *testing.T) { @@ -58,7 +66,12 @@ func TestMeteringReport(t *testing.T) { testUnitA: testUnitA.IntToSpendValue(1), } - assert.Equal(t, expected, report.MedianSpend()) + median := report.MedianSpend() + + require.Len(t, median, 1) + require.Contains(t, maps.Keys(median), testUnitA) + + assert.Equal(t, expected[testUnitA].String(), median[testUnitA].String()) }) t.Run("MedianSpend returns median odd number of spend values", func(t *testing.T) { @@ -79,7 +92,12 @@ func TestMeteringReport(t *testing.T) { testUnitA: testUnitA.IntToSpendValue(2), } - assert.Equal(t, expected, report.MedianSpend()) + median := report.MedianSpend() + + require.Len(t, median, 1) + require.Contains(t, maps.Keys(median), testUnitA) + + assert.Equal(t, expected[testUnitA].String(), median[testUnitA].String()) }) t.Run("MedianSpend returns median as average for even number of spend values", func(t *testing.T) { @@ -101,6 +119,11 @@ func TestMeteringReport(t *testing.T) { testUnitA: testUnitA.DecimalToSpendValue(decimal.NewFromFloat(2.5)), } - assert.Equal(t, expected, report.MedianSpend()) + median := report.MedianSpend() + + require.Len(t, median, 1) + require.Contains(t, maps.Keys(median), testUnitA) + + assert.Equal(t, expected[testUnitA].String(), median[testUnitA].String()) }) }