Extend Modern UI for pnf usecase
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / pnf / pnf.reducers.spec.ts
1 import {
2   CreatePnfInstanceAction,
3   RemovePnfInstanceAction,
4   UpdatePnfPosition,
5   UpdatePnfInstanceAction,
6   PNFActions
7 } from "./pnf.actions";
8 import {pnfReducer} from "./pnf.reducers";
9 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
10 import {ActionOnFirstLevel} from "../firstLevel/firstLevel.actions";
11 import {PnfInstance} from "../../../models/pnfInstance";
12
13 describe('pnfReducer', () => {
14
15   test('#CREATE_PNF_INSTANCE', () => {
16     let pnfInstance: PnfInstance = new PnfInstance();
17     pnfInstance.isMissingData = false;
18     pnfInstance.instanceName = 'instanceName';
19     let pnfState = pnfReducer(<any>{
20         serviceInstance: {
21           'serviceModelId': {
22             pnfs: {}
23           }
24         }
25       },
26       <CreatePnfInstanceAction>{
27         type: PNFActions.CREATE_PNF_INSTANCE,
28         pnfInstance: pnfInstance,
29         pnfStoreKey: null,
30         pnfModelName: 'pnfModelName',
31         serviceUuid: 'serviceModelId'
32       }).serviceInstance['serviceModelId'].pnfs['pnfModelName'];
33
34     expect(pnfState).toBeDefined();
35     expect(pnfState.isMissingData).toBeFalsy();
36   });
37
38   test('#UPDATE_PNF_INSTANCE_NAME', () => {
39     let newInstanceName: string = "newInstanceName"
40     let pnfInstance: PnfInstance = new PnfInstance();
41     pnfInstance.isMissingData = false;
42     pnfInstance.instanceName = newInstanceName;
43
44     let pnfState = pnfReducer(<any>{
45         serviceInstance: {
46           'serviceModelId': {
47             pnfs: {
48               "pnfStoreKey": {
49                 instanceName: 'oldInstanceName'
50               }
51             },
52             existingNames: {
53               'oldinstancename': {}
54             }
55           }
56         }
57       },
58       <UpdatePnfInstanceAction>{
59         type: PNFActions.UPDATE_PNF_INSTANCE,
60         pnfInstance: pnfInstance,
61         pnfStoreKey: 'pnfStoreKey',
62         pnfModelName: 'pnfModelName',
63         serviceUuid: 'serviceModelId'
64       }).serviceInstance['serviceModelId'];
65
66     expect(pnfState).toBeDefined();
67     expect(pnfState.pnfs['pnfStoreKey'].instanceName).toEqual(newInstanceName);
68     expect(newInstanceName.toLowerCase() in pnfState.existingNames).toBeTruthy();
69   });
70
71   test('#DELETE_ACTION_PNF_INSTANCE', () => {
72     let pnfState = pnfReducer(<any>{
73         serviceInstance: {
74           'serviceModelId': {
75             pnfs: {
76               'pnfStoreKey': {
77                 isMissingData: true,
78                 action: 'None'
79               }
80             }
81           }
82         }
83       },
84       <ActionOnFirstLevel>{
85         type: PNFActions.DELETE_ACTION_PNF_INSTANCE,
86         firstLevelName: 'pnfs',
87         storeKey: 'pnfStoreKey',
88         serviceId: 'serviceModelId'
89       }).serviceInstance['serviceModelId'].pnfs['pnfStoreKey'];
90
91     expect(pnfState).toBeDefined();
92     expect(pnfState.action).toEqual(ServiceInstanceActions.None_Delete);
93   });
94
95   test('#UNDO_DELETE_ACTION_PNF_INSTANCE', () => {
96     let pnfState = pnfReducer(<any>{
97         serviceInstance: {
98           'serviceModelId': {
99             pnfs: {
100               'pnfStoreKey': {
101                 isMissingData: true,
102                 action: 'Update_Delete'
103               }
104             }
105           }
106         }
107       },
108       <ActionOnFirstLevel>{
109         type: PNFActions.UNDO_DELETE_ACTION_PNF_INSTANCE,
110         storeKey: 'pnfStoreKey',
111         firstLevelName: 'pnfs',
112         serviceId: 'serviceModelId'
113       }).serviceInstance['serviceModelId'].pnfs['pnfStoreKey'];
114
115     expect(pnfState).toBeDefined();
116     expect(pnfState.action).toEqual(ServiceInstanceActions.Update);
117   });
118
119   test('#REMOVE_PNF_INSTANCE', () => {
120     let pnfs = pnfReducer(<any>{
121         serviceInstance: {
122           'serviceModelId': {
123             pnfs: {
124               'pnfStoreKey': {
125                 isMissingData: true,
126                 action: 'Update_Delete'
127               },
128               'pnfStoreKey_1': {
129                 isMissingData: true,
130                 action: 'Update_Delete'
131               }
132             }
133           }
134         }
135       },
136       <RemovePnfInstanceAction>{
137         type: PNFActions.REMOVE_PNF_INSTANCE,
138         pnfStoreKey: 'pnfStoreKey',
139         serviceId: 'serviceModelId'
140       }).serviceInstance['serviceModelId'].pnfs;
141
142     expect(pnfs).toBeDefined();
143     expect(pnfs['pnfStoreKey']).toBeUndefined();
144     expect(pnfs['pnfStoreKey_1']).toBeDefined();
145   });
146
147   test('#UPDATE_PNF_POSITION', () => {
148     let pnfInstance: PnfInstance = new PnfInstance();
149     pnfInstance.isMissingData = false;
150     pnfInstance.instanceName = 'instanceName';
151     let pnfState = pnfReducer(<any>{
152         serviceInstance: {
153           'serviceModelId': {
154             pnfs: {
155               "pnfStoreKey": {}
156             }
157           }
158         }
159       },
160       <UpdatePnfPosition>{
161         type: PNFActions.UPDATE_PNF_POSITION,
162         node: <any>{
163           position: 2
164         },
165         pnfStoreKey: 'pnfStoreKey',
166         instanceId: 'serviceModelId'
167       }).serviceInstance['serviceModelId'].pnfs['pnfStoreKey'];
168
169     expect(pnfState).toBeDefined();
170     expect(pnfState.position).toEqual(2);
171   });
172 });