From b6f189334e6ef91da6f22b2b32d0224899a99a33 Mon Sep 17 00:00:00 2001 From: Edwardro22 Date: Fri, 24 Feb 2017 20:45:10 +0200 Subject: [PATCH] Added sharedgroup method and test +A small fix --- migrator/accounts.go | 2 +- migrator/sharedgroup.go | 41 ++++++++++++++++++++++++++++++ migrator/sharedgroup_test.go | 48 ++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 migrator/sharedgroup.go create mode 100644 migrator/sharedgroup_test.go diff --git a/migrator/accounts.go b/migrator/accounts.go index 6121f4e68..9bcb46d19 100644 --- a/migrator/accounts.go +++ b/migrator/accounts.go @@ -74,7 +74,7 @@ func (b *v1Balance) IsDefault() bool { } func (v1Acc v1Account) AsAccount() (ac engine.Account) { - // transfer data into new structurse + // transfer data into new structure ac = engine.Account{ ID: v1Acc.Id, BalanceMap: make(map[string]engine.Balances, len(v1Acc.BalanceMap)), diff --git a/migrator/sharedgroup.go b/migrator/sharedgroup.go new file mode 100644 index 000000000..e728e46db --- /dev/null +++ b/migrator/sharedgroup.go @@ -0,0 +1,41 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ +package migrator + +import ( + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/utils" +) + +type v1SharedGroup struct { + Id string + AccountParameters map[string]*engine.SharingParameters + MemberIds []string +} + +func (v1SG v1SharedGroup) AsSharedGroup() (sg engine.SharedGroup) { + sg = engine.SharedGroup{ + Id: v1SG.Id, + AccountParameters: v1SG.AccountParameters, + MemberIds: make(utils.StringMap), + } + for _, accID := range v1SG.MemberIds { + sg.MemberIds[accID] = true + } + return +} diff --git a/migrator/sharedgroup_test.go b/migrator/sharedgroup_test.go new file mode 100644 index 000000000..bc7085b16 --- /dev/null +++ b/migrator/sharedgroup_test.go @@ -0,0 +1,48 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ +package migrator + +import ( + "reflect" + "testing" + + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/utils" +) + +func TestV1SharedGroupAsSharedGroup(t *testing.T) { + v1sg := &v1SharedGroup{ + Id: "Test", + AccountParameters: map[string]*engine.SharingParameters{ + "test": &engine.SharingParameters{Strategy: "*highest"}, + }, + MemberIds: []string{"1", "2", "3"}, + } + sg := &engine.SharedGroup{ + Id: "Test", + AccountParameters: map[string]*engine.SharingParameters{ + "test": &engine.SharingParameters{Strategy: "*highest"}, + }, + MemberIds: utils.NewStringMap("1", "2", "3"), + } + newsg := v1sg.AsSharedGroup() + if !reflect.DeepEqual(*sg, newsg) { + t.Errorf("Expecting: %+v, received: %+v", *sg, newsg) + } + +}