JPA concepts for TOSCA
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / simple / concepts / JpaToscaCapabilityAssignmentTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2020 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.policy.models.tosca.simple.concepts;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27
28 import java.util.ArrayList;
29 import java.util.LinkedHashMap;
30 import java.util.List;
31 import java.util.Map;
32 import org.junit.Test;
33 import org.onap.policy.models.base.PfConceptKey;
34 import org.onap.policy.models.base.PfValidationResult;
35 import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityAssignment;
36
37 /**
38  * DAO test for JpaToscaCapabilityAssignment.
39  */
40 public class JpaToscaCapabilityAssignmentTest {
41
42     private static final String KEY_IS_NULL = "key is marked .*on.*ull but is null";
43
44     @Test
45     public void testPropertyPojo() {
46         assertNotNull(new JpaToscaCapabilityAssignment());
47         assertNotNull(new JpaToscaCapabilityAssignment(new PfConceptKey()));
48         assertNotNull(new JpaToscaCapabilityAssignment(new JpaToscaCapabilityAssignment()));
49         assertNotNull(new JpaToscaCapabilityAssignment(new ToscaCapabilityAssignment()));
50
51         assertThatThrownBy(() -> new JpaToscaCapabilityAssignment((PfConceptKey) null)).hasMessageMatching(KEY_IS_NULL);
52         assertThatThrownBy(() -> new JpaToscaCapabilityAssignment((JpaToscaCapabilityAssignment) null))
53                 .hasMessageMatching("copyConcept is marked .*on.*ull but is null");
54         assertThatThrownBy(() -> new JpaToscaCapabilityAssignment((ToscaCapabilityAssignment) null))
55                 .hasMessageMatching("authorativeConcept is marked .*on.*ull but is null");
56
57         PfConceptKey caKey = new PfConceptKey("tParentKey", "0.0.1");
58
59         JpaToscaCapabilityAssignment caNull = new JpaToscaCapabilityAssignment(caKey);
60         caNull.setProperties(null);
61         caNull.setAttributes(null);
62         caNull.setOccurrences(null);
63
64         assertEquals(caNull, new JpaToscaCapabilityAssignment(caNull));
65
66         JpaToscaCapabilityAssignment ca = new JpaToscaCapabilityAssignment(caKey);
67
68         assertEquals(ca, new JpaToscaCapabilityAssignment(ca));
69         assertEquals(caKey, ca.getKeys().get(0));
70
71         ca.clean();
72         ca.validate(new PfValidationResult());
73         assertThat(ca.getProperties()).isNullOrEmpty();
74         assertThat(ca.getAttributes()).isNullOrEmpty();
75
76         ca.setProperties(null);
77         ca.setAttributes(null);
78         ca.setOccurrences(null);
79         ca.clean();
80         ca.validate(new PfValidationResult());
81         assertEquals(null, ca.getProperties());
82         assertEquals(null, ca.getAttributes());
83
84         Map<String, String> properties = new LinkedHashMap<>();
85         properties.put("Key0", "  Untrimmed Value  ");
86         ca.setProperties(properties);
87
88         Map<String, String> attributes = new LinkedHashMap<>();
89         attributes.put("Key0", "  Untrimmed Value  ");
90         ca.setAttributes(attributes);
91
92         List<Integer> occurrences = new ArrayList<>();
93         occurrences.add(12345);
94         ca.setOccurrences(occurrences);
95
96         ca.clean();
97         ca.validate(new PfValidationResult());
98         assertEquals("Untrimmed Value", ca.getProperties().get("Key0"));
99         assertEquals("Untrimmed Value", ca.getAttributes().get("Key0"));
100
101         ca.getProperties().put("Key1", null);
102         ca.getAttributes().put("Key1", null);
103         ca.getOccurrences().add(null);
104         ca.getOccurrences().add(-12345);
105         PfValidationResult result = ca.validate(new PfValidationResult());
106         assertThat(result.toString()).contains("capability assignment property Key1 value may not be null");
107         assertThat(result.toString()).contains("capability assignment attribute Key1 value may not be null");
108         assertThat(result.toString()).contains("capability assignment occurrence value may not be negative");
109     }
110
111     @Test
112     public void testCompareTo() {
113         assertEquals(-1, new JpaToscaCapabilityAssignment().compareTo(null));
114         assertEquals(0, new JpaToscaCapabilityAssignment().compareTo(new JpaToscaCapabilityAssignment()));
115
116         JpaToscaCapabilityAssignment ca = new JpaToscaCapabilityAssignment();
117         assertEquals(0, ca.compareTo(ca));
118         assertEquals(18, ca.compareTo(new PfConceptKey()));
119
120         JpaToscaCapabilityAssignment ca2 = new JpaToscaCapabilityAssignment();
121         ca2.getKey().setName("ca2");
122         assertEquals(-21, ca.compareTo(ca2));
123
124         ca.getKey().setName("ca");
125         ca2.getKey().setName("ca");
126
127         ca.setProperties(new LinkedHashMap<>());
128         ca2.setProperties(new LinkedHashMap<>());
129         ca.getProperties().put("Key0", "Value0");
130         assertEquals(-1737938642, ca.compareTo(ca2));
131         ca2.getProperties().put("Key0", "Value0");
132         assertEquals(0, ca.compareTo(ca2));
133
134         ca.setAttributes(new LinkedHashMap<>());
135         ca2.setAttributes(new LinkedHashMap<>());
136         ca.getAttributes().put("Key0", "Value0");
137         assertEquals(-1737938642, ca.compareTo(ca2));
138         ca2.getAttributes().put("Key0", "Value0");
139         assertEquals(0, ca.compareTo(ca2));
140
141         ca.setOccurrences(new ArrayList<>());
142         ca2.setOccurrences(new ArrayList<>());
143         ca.getOccurrences().add(12345);
144         assertEquals(12375, ca.compareTo(ca2));
145         ca2.getOccurrences().add(12345);
146         assertEquals(0, ca.compareTo(ca2));
147     }
148
149     @Test
150     public void testAuthorative() {
151         ToscaCapabilityAssignment tca =
152                 new JpaToscaCapabilityAssignment(new ToscaCapabilityAssignment()).toAuthorative();
153
154         JpaToscaCapabilityAssignment jtca = new JpaToscaCapabilityAssignment(tca);
155         ToscaCapabilityAssignment tca2 = jtca.toAuthorative();
156         assertEquals(tca, tca2);
157     }
158 }