--- /dev/null
+// -
+// ========================LICENSE_START=================================
+// O-RAN-SC
+// %%
+// Copyright (C) 2021: Nordix Foundation
+// %%
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ========================LICENSE_END===================================
+//
+
+package repository
+
+import (
+ "errors"
+ "reflect"
+ "testing"
+
+ "oransc.org/usecase/oruclosedloop/mocks"
+)
+
+func TestNewLookupServiceImpl(t *testing.T) {
+ mockCsvFileHelper := &mocks.CsvFileHelper{}
+ type args struct {
+ fileHelper CsvFileHelper
+ fileName string
+ }
+ tests := []struct {
+ name string
+ args args
+ want *LookupServiceImpl
+ }{
+ {
+ name: "Should return populated service",
+ args: args{
+ fileHelper: mockCsvFileHelper,
+ fileName: "test.csv",
+ },
+ want: &LookupServiceImpl{
+ csvFileHelper: mockCsvFileHelper,
+ csvFileName: "test.csv",
+ oRuIdToODuIdMap: map[string]string{},
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := NewLookupServiceImpl(tt.args.fileHelper, tt.args.fileName); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("NewLookupServiceImpl() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func TestLookupServiceImpl_Init(t *testing.T) {
+ mockCsvFileHelper := &mocks.CsvFileHelper{}
+ mockCsvFileHelper.On("GetCsvFromFile", "./map.csv").Return([][]string{{"O-RU-ID", "O-DU-ID"}}, nil).Once()
+ mockCsvFileHelper.On("GetCsvFromFile", "foo.csv").Return(nil, errors.New("Error")).Once()
+ type fields struct {
+ csvFileHelper CsvFileHelper
+ csvFileName string
+ oRuIdToODuIdMap map[string]string
+ }
+ tests := []struct {
+ name string
+ fields fields
+ wantErr bool
+ }{
+ {
+ name: "Init with proper csv file should not return error",
+ fields: fields{
+ csvFileHelper: mockCsvFileHelper,
+ csvFileName: "./map.csv",
+ oRuIdToODuIdMap: map[string]string{}},
+ wantErr: false,
+ },
+ {
+ name: "Init with missing file should return error",
+ fields: fields{
+ csvFileHelper: mockCsvFileHelper,
+ csvFileName: "foo.csv",
+ oRuIdToODuIdMap: map[string]string{},
+ },
+ wantErr: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ s := LookupServiceImpl{
+ csvFileHelper: tt.fields.csvFileHelper,
+ csvFileName: tt.fields.csvFileName,
+ oRuIdToODuIdMap: tt.fields.oRuIdToODuIdMap,
+ }
+ if err := s.Init(); (err != nil) != tt.wantErr {
+ t.Errorf("LookupServiceImpl.Init() error = %v, wantErr %v", err, tt.wantErr)
+ } else if !tt.wantErr {
+ wantedMap := map[string]string{"O-RU-ID": "O-DU-ID"}
+ if !reflect.DeepEqual(wantedMap, s.oRuIdToODuIdMap) {
+ t.Errorf("LookupServiceImpl.Init() map not initialized, wanted map: %v, got map: %v", wantedMap, s.oRuIdToODuIdMap)
+ }
+ }
+ })
+ }
+ mockCsvFileHelper.AssertNumberOfCalls(t, "GetCsvFromFile", 2)
+}
+
+func TestLookupServiceImpl_GetODuID(t *testing.T) {
+ type fields struct {
+ csvFileHelper CsvFileHelper
+ csvFileName string
+ oRuIdToODuIdMap map[string]string
+ }
+ type args struct {
+ oRuId string
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ want string
+ wantErr error
+ }{
+ {
+ name: "Id mapped should return mapped id",
+ fields: fields{
+ csvFileHelper: nil,
+ csvFileName: "",
+ oRuIdToODuIdMap: map[string]string{"O-RU-ID": "O-DU-ID"},
+ },
+ args: args{
+ oRuId: "O-RU-ID",
+ },
+ want: "O-DU-ID",
+ wantErr: nil,
+ },
+ {
+ name: "Id not mapped should return IdNotMappedError",
+ fields: fields{
+ csvFileHelper: nil,
+ csvFileName: "",
+ oRuIdToODuIdMap: map[string]string{},
+ },
+ args: args{
+ oRuId: "O-RU-ID",
+ },
+ want: "",
+ wantErr: IdNotMappedError{Id: "O-RU-ID"},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ s := LookupServiceImpl{
+ csvFileHelper: tt.fields.csvFileHelper,
+ csvFileName: tt.fields.csvFileName,
+ oRuIdToODuIdMap: tt.fields.oRuIdToODuIdMap,
+ }
+ got, err := s.GetODuID(tt.args.oRuId)
+ if err != tt.wantErr {
+ t.Errorf("LookupServiceImpl.GetODuID() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if got != tt.want {
+ t.Errorf("LookupServiceImpl.GetODuID() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}