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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.cps.ncmp.impl.cmnotificationsubscription.dmi
23 import org.onap.cps.ncmp.impl.cmnotificationsubscription.models.DmiCmSubscriptionKey
24 import spock.lang.Specification
26 class DmiCmSubscriptionDetailsPerDmiMapperSpec extends Specification {
28 def objectUnderTest = new DmiCmSubscriptionDetailsPerDmiMapper()
30 def 'Check for grouping of Dmi Subscription Details'() {
31 given: 'details in the form of datastore , cmhandle and xpath'
32 def subscribersPerDmi = [
34 new DmiCmSubscriptionKey('ncmp-datastore:passthrough-operational', 'ch-1', '/a/b'),
35 new DmiCmSubscriptionKey('ncmp-datastore:passthrough-operational', 'ch-2', '/a/b')
38 new DmiCmSubscriptionKey('ncmp-datastore:passthrough-running', 'ch-3', '/c/d'),
39 new DmiCmSubscriptionKey('ncmp-datastore:passthrough-running', 'ch-3', '/e/f')
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')