diff --git a/engine/eventcost.go b/engine/eventcost.go index 4058ac224..590a2da11 100644 --- a/engine/eventcost.go +++ b/engine/eventcost.go @@ -292,8 +292,10 @@ func (ec *EventCost) AsCallCost(ToR, Tenant, Direction, Category, Account, Subje cBC = ec.Accounting[cBC.ExtraChargeUUID] // overwrite original balance so we can process it in one place } } - incr.BalanceInfo.Monetary = &MonetaryInfo{UUID: cBC.BalanceUUID} - incr.BalanceInfo.Monetary.RateInterval = ec.rateIntervalForRatingUUID(cBC.RatingUUID) + if cBC.ExtraChargeUUID != utils.META_NONE { + incr.BalanceInfo.Monetary = &MonetaryInfo{UUID: cBC.BalanceUUID} + incr.BalanceInfo.Monetary.RateInterval = ec.rateIntervalForRatingUUID(cBC.RatingUUID) + } } ts.Increments[j] = incr } diff --git a/engine/eventcost_test.go b/engine/eventcost_test.go index abeff732c..4c8206989 100644 --- a/engine/eventcost_test.go +++ b/engine/eventcost_test.go @@ -140,7 +140,7 @@ func TestNewEventCostFromCallCost(t *testing.T) { &TimeSpan{ TimeStart: time.Date(2017, 1, 9, 16, 19, 21, 0, time.UTC), TimeEnd: time.Date(2017, 1, 9, 16, 20, 21, 0, time.UTC), - Cost: 0.01, + Cost: 0.6, RateInterval: &RateInterval{ // standard rating Timing: &RITiming{ StartTime: "00:00:00", @@ -190,24 +190,24 @@ func TestNewEventCostFromCallCost(t *testing.T) { Charges: []*ChargingInterval{ &ChargingInterval{ StartTime: time.Date(2017, 1, 9, 16, 18, 21, 0, time.UTC), - RatingUUID: "bebf80cf-cba5-4e36-89dc-86673cff8cc4", + RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - BalanceChargeUUID: "716a278d-9ca5-451a-aa59-b6a43f4fb4ef", + BalanceChargeUUID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - BalanceChargeUUID: "8ee1f8ee-5783-487b-87e3-cb1bb6fd8f9f", + BalanceChargeUUID: "a555cde8-4bd0-408a-afbc-c3ba64888927", CompressFactor: 30, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - BalanceChargeUUID: "77c904d4-c579-4687-8c28-a1561e39dae2", + BalanceChargeUUID: "906bfd0f-035c-40a3-93a8-46f71627983e", CompressFactor: 30, }, }, @@ -215,12 +215,12 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, &ChargingInterval{ StartTime: time.Date(2017, 1, 9, 16, 19, 21, 0, time.UTC), - RatingUUID: "bebf80cf-cba5-4e36-89dc-86673cff8cc4", + RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ - Usage: time.Duration(0), + Usage: time.Duration(1 * time.Second), Cost: 0.01, - BalanceChargeUUID: "79463f6e-d70f-41ac-9345-76bd21714759", + BalanceChargeUUID: "c890a899-df43-497a-9979-38492713f57b", CompressFactor: 60, }, }, @@ -228,46 +228,46 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, }, Rating: Rating{ - "bebf80cf-cba5-4e36-89dc-86673cff8cc4": &RatingUnit{ + "4607d907-02c3-4f2b-bc08-95a0dcc7222c": &RatingUnit{ + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesUUID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", + RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + }, + "f2518464-68b8-42f4-acec-aef23d714314": &RatingUnit{ ConnectFee: 0.1, RoundingMethod: "*up", RoundingDecimals: 5, - TimingUUID: "3e4c7dd1-10f9-4fdc-b7df-8833724933dd", - RatesUUID: "5f04c792-5c79-4873-ba39-413342671595", - RatingFiltersUUID: "8fa45f23-5bb1-44ee-867c-ad09b2bae981", - }, - "2b7333c0-479c-4e5d-8d72-d089e93b2b6a": &RatingUnit{ - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "3e4c7dd1-10f9-4fdc-b7df-8833724933dd", - RatesUUID: "3246cb23-ef2e-4080-ba5b-45300cbede3f", - RatingFiltersUUID: "8fa45f23-5bb1-44ee-867c-ad09b2bae981", + TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesUUID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", + RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, }, Accounting: Accounting{ - "2afef931-eb94-46df-8fb4-3509954e771c": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - Units: 0.005, - }, - "716a278d-9ca5-451a-aa59-b6a43f4fb4ef": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - Units: 0.1, - }, - "77c904d4-c579-4687-8c28-a1561e39dae2": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - RatingUUID: "2b7333c0-479c-4e5d-8d72-d089e93b2b6a", - Units: 1, - ExtraChargeUUID: "2afef931-eb94-46df-8fb4-3509954e771c", - }, - "79463f6e-d70f-41ac-9345-76bd21714759": &BalanceCharge{ + "c890a899-df43-497a-9979-38492713f57b": &BalanceCharge{ AccountID: "cgrates.org:dan", BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", Units: 0.01, }, - "8ee1f8ee-5783-487b-87e3-cb1bb6fd8f9f": &BalanceCharge{ + "a894f8f1-206a-4457-99ce-df21a0c7fedc": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", + Units: 0.005, + }, + "44e97dec-8a7e-43d0-8b0a-736d46b5613e": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", + Units: 0.1, + }, + "906bfd0f-035c-40a3-93a8-46f71627983e": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", + RatingUUID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", + Units: 1, + ExtraChargeUUID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", + }, + "a555cde8-4bd0-408a-afbc-c3ba64888927": &BalanceCharge{ AccountID: "cgrates.org:dan", BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", Units: 1, @@ -275,7 +275,7 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, }, RatingFilters: RatingFilters{ - "8fa45f23-5bb1-44ee-867c-ad09b2bae981": RatingMatchedFilters{ + "7e73a00d-be53-4083-a1ee-8ee0b546c62a": RatingMatchedFilters{ "DestinationID": "GERMANY", "DestinationPrefix": "+49", "RatingPlanID": "RPL_RETAIL1", @@ -283,14 +283,14 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, }, Rates: ChargedRates{ - "3246cb23-ef2e-4080-ba5b-45300cbede3f": RateGroups{ + "6504fb84-6b27-47a8-a1c6-c0d843959f89": RateGroups{ &Rate{ GroupIntervalStart: time.Duration(0), Value: 0.01, RateIncrement: time.Duration(1 * time.Minute), RateUnit: time.Duration(1 * time.Second)}, }, - "5f04c792-5c79-4873-ba39-413342671595": RateGroups{ + "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4": RateGroups{ &Rate{ GroupIntervalStart: time.Duration(0), Value: 0.005, @@ -304,7 +304,7 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, }, Timings: ChargedTimings{ - "3e4c7dd1-10f9-4fdc-b7df-8833724933dd": &ChargedTiming{ + "27f1e5f8-05bb-4f1c-a596-bf1010ad296c": &ChargedTiming{ StartTime: "00:00:00", }, }, @@ -320,26 +320,43 @@ func TestNewEventCostFromCallCost(t *testing.T) { if len(ec.Charges) != len(eEC.Charges) { t.Errorf("Expecting: %+v, received: %+v", eEC, ec) } - for i := range eEC.Charges { + for i := range ec.Charges { // Make sure main rating is correct if cc.Timespans[i].RateInterval.Rating != nil && - !reflect.DeepEqual(cc.Timespans[i].RateInterval.Rating.Rates, ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) { - t.Errorf("For index: %d, expecting: %s, received: %s", - i, utils.ToJSON(cc.Timespans[i].RateInterval.Rating.Rates), ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) + !reflect.DeepEqual(cc.Timespans[i].RateInterval.Rating.Rates, + ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) { + t.Errorf("Index: %d, expecting: %s, received: %s", + i, utils.ToJSON(cc.Timespans[i].RateInterval.Rating.Rates), + ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) + } + // Make sure it matches also the expected rates + if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingUUID].RatesUUID], + ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) { + t.Errorf("Index: %d, expecting: %s, received: %s", i, + utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingUUID].RatesUUID]), + utils.ToJSON(ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID])) } if len(eEC.Charges[i].Increments) != len(ec.Charges[i].Increments) { - t.Errorf("At index %d, expecting: %+v, received: %+v", eEC.Charges[i].Increments, ec.Charges[i].Increments) + t.Errorf("Index %d, expecting: %+v, received: %+v", i, eEC.Charges[i].Increments, ec.Charges[i].Increments) } } if len(ec.Rating) != len(eEC.Rating) { t.Errorf("Expecting: %+v, received: %+v", eEC, ec) } + // Compare to original timestamp if !reflect.DeepEqual(cc.Timespans[0].Increments[2].BalanceInfo.Unit.RateInterval.Rating.Rates, ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID]) { t.Errorf("Expecting: %s, received: %s", utils.ToJSON(cc.Timespans[0].Increments[2].BalanceInfo.Unit.RateInterval.Rating.Rates), utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID])) } + // Compare to expected EC + if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID], + ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID]) { + t.Errorf("Expecting: %s, received: %s", + utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID]), + utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].BalanceChargeUUID].RatingUUID].RatesUUID])) + } if len(ec.Accounting) != len(eEC.Accounting) { t.Errorf("Expecting: %+v, received: %+v", eEC, ec) } @@ -360,24 +377,24 @@ func TestEventCostAsCallCost(t *testing.T) { Charges: []*ChargingInterval{ &ChargingInterval{ StartTime: time.Date(2017, 1, 9, 16, 18, 21, 0, time.UTC), - RatingUUID: "bebf80cf-cba5-4e36-89dc-86673cff8cc4", + RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - BalanceChargeUUID: "716a278d-9ca5-451a-aa59-b6a43f4fb4ef", + BalanceChargeUUID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - BalanceChargeUUID: "8ee1f8ee-5783-487b-87e3-cb1bb6fd8f9f", + BalanceChargeUUID: "a555cde8-4bd0-408a-afbc-c3ba64888927", CompressFactor: 30, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - BalanceChargeUUID: "77c904d4-c579-4687-8c28-a1561e39dae2", + BalanceChargeUUID: "906bfd0f-035c-40a3-93a8-46f71627983e", CompressFactor: 30, }, }, @@ -385,12 +402,12 @@ func TestEventCostAsCallCost(t *testing.T) { }, &ChargingInterval{ StartTime: time.Date(2017, 1, 9, 16, 19, 21, 0, time.UTC), - RatingUUID: "bebf80cf-cba5-4e36-89dc-86673cff8cc4", + RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ - Usage: time.Duration(0), + Usage: time.Duration(1 * time.Second), Cost: 0.01, - BalanceChargeUUID: "79463f6e-d70f-41ac-9345-76bd21714759", + BalanceChargeUUID: "c890a899-df43-497a-9979-38492713f57b", CompressFactor: 60, }, }, @@ -398,46 +415,46 @@ func TestEventCostAsCallCost(t *testing.T) { }, }, Rating: Rating{ - "bebf80cf-cba5-4e36-89dc-86673cff8cc4": &RatingUnit{ + "4607d907-02c3-4f2b-bc08-95a0dcc7222c": &RatingUnit{ + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesUUID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", + RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + }, + "f2518464-68b8-42f4-acec-aef23d714314": &RatingUnit{ ConnectFee: 0.1, RoundingMethod: "*up", RoundingDecimals: 5, - TimingUUID: "3e4c7dd1-10f9-4fdc-b7df-8833724933dd", - RatesUUID: "5f04c792-5c79-4873-ba39-413342671595", - RatingFiltersUUID: "8fa45f23-5bb1-44ee-867c-ad09b2bae981", - }, - "2b7333c0-479c-4e5d-8d72-d089e93b2b6a": &RatingUnit{ - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "3e4c7dd1-10f9-4fdc-b7df-8833724933dd", - RatesUUID: "3246cb23-ef2e-4080-ba5b-45300cbede3f", - RatingFiltersUUID: "8fa45f23-5bb1-44ee-867c-ad09b2bae981", + TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesUUID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", + RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, }, Accounting: Accounting{ - "2afef931-eb94-46df-8fb4-3509954e771c": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - Units: 0.005, - }, - "716a278d-9ca5-451a-aa59-b6a43f4fb4ef": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - Units: 0.1, - }, - "77c904d4-c579-4687-8c28-a1561e39dae2": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - RatingUUID: "2b7333c0-479c-4e5d-8d72-d089e93b2b6a", - Units: 1, - ExtraChargeUUID: "2afef931-eb94-46df-8fb4-3509954e771c", - }, - "79463f6e-d70f-41ac-9345-76bd21714759": &BalanceCharge{ + "c890a899-df43-497a-9979-38492713f57b": &BalanceCharge{ AccountID: "cgrates.org:dan", BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", Units: 0.01, }, - "8ee1f8ee-5783-487b-87e3-cb1bb6fd8f9f": &BalanceCharge{ + "a894f8f1-206a-4457-99ce-df21a0c7fedc": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", + Units: 0.005, + }, + "44e97dec-8a7e-43d0-8b0a-736d46b5613e": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", + Units: 0.1, + }, + "906bfd0f-035c-40a3-93a8-46f71627983e": &BalanceCharge{ + AccountID: "cgrates.org:dan", + BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", + RatingUUID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", + Units: 1, + ExtraChargeUUID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", + }, + "a555cde8-4bd0-408a-afbc-c3ba64888927": &BalanceCharge{ AccountID: "cgrates.org:dan", BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", Units: 1, @@ -445,7 +462,7 @@ func TestEventCostAsCallCost(t *testing.T) { }, }, RatingFilters: RatingFilters{ - "8fa45f23-5bb1-44ee-867c-ad09b2bae981": RatingMatchedFilters{ + "7e73a00d-be53-4083-a1ee-8ee0b546c62a": RatingMatchedFilters{ "DestinationID": "GERMANY", "DestinationPrefix": "+49", "RatingPlanID": "RPL_RETAIL1", @@ -453,14 +470,14 @@ func TestEventCostAsCallCost(t *testing.T) { }, }, Rates: ChargedRates{ - "3246cb23-ef2e-4080-ba5b-45300cbede3f": RateGroups{ + "6504fb84-6b27-47a8-a1c6-c0d843959f89": RateGroups{ &Rate{ GroupIntervalStart: time.Duration(0), Value: 0.01, RateIncrement: time.Duration(1 * time.Minute), RateUnit: time.Duration(1 * time.Second)}, }, - "5f04c792-5c79-4873-ba39-413342671595": RateGroups{ + "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4": RateGroups{ &Rate{ GroupIntervalStart: time.Duration(0), Value: 0.005, @@ -474,7 +491,7 @@ func TestEventCostAsCallCost(t *testing.T) { }, }, Timings: ChargedTimings{ - "3e4c7dd1-10f9-4fdc-b7df-8833724933dd": &ChargedTiming{ + "27f1e5f8-05bb-4f1c-a596-bf1010ad296c": &ChargedTiming{ StartTime: "00:00:00", }, }, @@ -522,9 +539,8 @@ func TestEventCostAsCallCost(t *testing.T) { &Increment{ // ConnectFee Cost: 0.1, BalanceInfo: &DebitInfo{ - Monetary: &MonetaryInfo{UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - ID: utils.META_DEFAULT, - Value: 9.9}, + Monetary: &MonetaryInfo{ + UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010"}, AccountID: "cgrates.org:dan", }, CompressFactor: 1, @@ -535,10 +551,7 @@ func TestEventCostAsCallCost(t *testing.T) { BalanceInfo: &DebitInfo{ Unit: &UnitInfo{ UUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", - ID: "free_mins", - Value: 0, Consumed: 1.0, - TOR: utils.VOICE, }, AccountID: "cgrates.org:dan", }, @@ -550,10 +563,7 @@ func TestEventCostAsCallCost(t *testing.T) { BalanceInfo: &DebitInfo{ Unit: &UnitInfo{ // Minutes with special price UUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - ID: "discounted_mins", - Value: 0, Consumed: 1.0, - TOR: utils.VOICE, RateInterval: &RateInterval{ Timing: &RITiming{ StartTime: "00:00:00", @@ -580,9 +590,7 @@ func TestEventCostAsCallCost(t *testing.T) { }, }, Monetary: &MonetaryInfo{ - UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - ID: utils.META_DEFAULT, - Value: 9.75}, + UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010"}, AccountID: "cgrates.org:dan", }, CompressFactor: 30, @@ -593,7 +601,7 @@ func TestEventCostAsCallCost(t *testing.T) { &TimeSpan{ TimeStart: time.Date(2017, 1, 9, 16, 19, 21, 0, time.UTC), TimeEnd: time.Date(2017, 1, 9, 16, 20, 21, 0, time.UTC), - Cost: 0.01, + Cost: 0.6, RateInterval: &RateInterval{ // standard rating Timing: &RITiming{ StartTime: "00:00:00", @@ -623,9 +631,8 @@ func TestEventCostAsCallCost(t *testing.T) { Cost: 0.01, Duration: time.Duration(1 * time.Second), BalanceInfo: &DebitInfo{ - Monetary: &MonetaryInfo{UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010", - ID: utils.META_DEFAULT, - Value: 9.15}, + Monetary: &MonetaryInfo{ + UUID: "8c54a9e9-d610-4c82-bcb5-a315b9a65010"}, AccountID: "cgrates.org:dan", }, CompressFactor: 60, @@ -635,8 +642,7 @@ func TestEventCostAsCallCost(t *testing.T) { }, } cc := ec.AsCallCost("*voice", "cgrates.org", "*out", "call", "dan", "dan", "+4986517174963") - if len(eCC.Timespans) != len(cc.Timespans) { - t.Errorf("Expecting: %+v, received: %+v", eCC, cc) + if !reflect.DeepEqual(eCC, cc) { + t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(eCC), utils.ToJSON(cc)) } - //fmt.Printf("Expecting: %s, \nreceived : %s\n", utils.ToJSON(eCC), utils.ToJSON(cc)) }