5d74f45bb92628894f8668682c9790f7ca0df67e
[cps.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.ncmp.impl.cmnotificationsubscription.dmi
22
23 import org.onap.cps.ncmp.impl.cmnotificationsubscription.models.DmiCmSubscriptionKey
24 import spock.lang.Specification
25
26 class DmiCmSubscriptionDetailsPerDmiMapperSpec extends Specification {
27
28     def objectUnderTest = new DmiCmSubscriptionDetailsPerDmiMapper()
29
30     def 'Check for grouping of Dmi Subscription Details'() {
31         given: 'details in the form of datastore , cmhandle and xpath'
32             def subscribersPerDmi = [
33                 'dmi-1': [
34                     new DmiCmSubscriptionKey('ncmp-datastore:passthrough-operational', 'ch-1', '/a/b'),
35                     new DmiCmSubscriptionKey('ncmp-datastore:passthrough-operational', 'ch-2', '/a/b')
36                 ],
37                 'dmi-2': [
38                     new DmiCmSubscriptionKey('ncmp-datastore:passthrough-running', 'ch-3', '/c/d'),
39                     new DmiCmSubscriptionKey('ncmp-datastore:passthrough-running', 'ch-3', '/e/f')
40                 ]
41             ]
42         when: 'we try to map the values based on datastore and xpath'
43             def result = objectUnderTest.toDmiCmSubscriptionsPerDmi(subscribersPerDmi)
44         then: 'the mapped values are grouped as expected for dmi-1'
45             assert result['dmi-1'].dmiCmSubscriptionPredicates.size() == 1
46             assert result['dmi-1'].dmiCmSubscriptionPredicates[0].targetCmHandleIds.containsAll(['ch-1', 'ch-2'])
47         and: 'similarly for dmi-2'
48             assert result['dmi-2'].dmiCmSubscriptionPredicates.size() == 2
49             assert result['dmi-2'].dmiCmSubscriptionPredicates[0].targetCmHandleIds.contains('ch-3')
50             assert result['dmi-2'].dmiCmSubscriptionPredicates[1].targetCmHandleIds.contains('ch-3')
51     }
52 }