2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021-2023 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.policy.clamp.models.acm.persistence.concepts;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.jupiter.api.Assertions.assertEquals;
26 import static org.junit.jupiter.api.Assertions.assertNotEquals;
27 import static org.junit.jupiter.api.Assertions.assertNotNull;
28 import static org.junit.jupiter.api.Assertions.assertTrue;
30 import java.util.ArrayList;
31 import java.util.LinkedHashMap;
32 import java.util.UUID;
33 import org.junit.jupiter.api.Test;
34 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
35 import org.onap.policy.clamp.models.acm.concepts.DeployState;
36 import org.onap.policy.clamp.models.acm.concepts.LockState;
37 import org.onap.policy.models.base.PfConceptKey;
40 * Test the{@link JpaAutomationCompositionTest} class.
42 class JpaAutomationCompositionTest {
44 private static final String NULL_INSTANCE_ID_ERROR = "instanceId is marked .*ull but is null";
45 private static final String NULL_TEXT_ERROR = " is marked .*ull but is null";
46 private static final String INSTANCE_ID = "709c62b3-8918-41b9-a747-d21eb79c6c20";
47 private static final String COMPOSITION_ID = "709c62b3-8918-41b9-a747-e21eb79c6c41";
50 void testJpaAutomationCompositionConstructor() {
51 assertThatThrownBy(() -> {
52 new JpaAutomationComposition((JpaAutomationComposition) null);
53 }).hasMessageMatching("copyConcept is marked .*ull but is null");
55 assertThatThrownBy(() -> {
56 new JpaAutomationComposition((AutomationComposition) null);
57 }).hasMessageMatching("authorativeConcept is marked .*ull but is null");
59 assertThatThrownBy(() -> {
60 new JpaAutomationComposition(null, null, null, null, null, null);
61 }).hasMessageMatching(NULL_INSTANCE_ID_ERROR);
63 assertThatThrownBy(() -> {
64 new JpaAutomationComposition(INSTANCE_ID, null, null, new ArrayList<>(),
65 DeployState.UNDEPLOYED, LockState.LOCKED);
66 }).hasMessageMatching("key" + NULL_TEXT_ERROR);
68 assertThatThrownBy(() -> {
69 new JpaAutomationComposition(INSTANCE_ID, new PfConceptKey(), null,
70 new ArrayList<>(), DeployState.UNDEPLOYED, LockState.LOCKED);
71 }).hasMessageMatching("compositionId" + NULL_TEXT_ERROR);
73 assertThatThrownBy(() -> {
74 new JpaAutomationComposition(INSTANCE_ID, new PfConceptKey(), COMPOSITION_ID.toString(),
75 null, DeployState.UNDEPLOYED, LockState.LOCKED);
76 }).hasMessageMatching("elements" + NULL_TEXT_ERROR);
78 assertThatThrownBy(() -> {
79 new JpaAutomationComposition(INSTANCE_ID, new PfConceptKey(), COMPOSITION_ID.toString(),
80 new ArrayList<>(), null, LockState.LOCKED);
81 }).hasMessageMatching("deployState" + NULL_TEXT_ERROR);
83 assertThatThrownBy(() -> {
84 new JpaAutomationComposition(INSTANCE_ID, new PfConceptKey(), COMPOSITION_ID.toString(),
85 new ArrayList<>(), DeployState.UNDEPLOYED, null);
86 }).hasMessageMatching("lockState" + NULL_TEXT_ERROR);
88 assertNotNull(new JpaAutomationComposition());
89 assertNotNull(new JpaAutomationComposition(INSTANCE_ID, new PfConceptKey(), COMPOSITION_ID.toString(),
90 new ArrayList<>(), DeployState.UNDEPLOYED, LockState.LOCKED));
94 void testJpaAutomationComposition() {
95 var testJpaAutomationComposition = createJpaAutomationCompositionInstance();
97 var participant = createAutomationCompositionInstance();
98 assertEquals(participant, testJpaAutomationComposition.toAuthorative());
100 assertThatThrownBy(() -> {
101 testJpaAutomationComposition.fromAuthorative(null);
102 }).hasMessageMatching("automationComposition is marked .*ull but is null");
104 assertThatThrownBy(() -> new JpaAutomationComposition((JpaAutomationComposition) null))
105 .isInstanceOf(NullPointerException.class);
107 var testJpaAutomationCompositionFa = new JpaAutomationComposition();
108 testJpaAutomationCompositionFa.setInstanceId(null);
109 testJpaAutomationCompositionFa.fromAuthorative(participant);
110 assertEquals(testJpaAutomationComposition, testJpaAutomationCompositionFa);
112 assertEquals("automation-composition", testJpaAutomationComposition.getName());
113 assertEquals("automation-composition",
114 new JpaAutomationComposition(createAutomationCompositionInstance()).getName());
116 var testJpaAutomationComposition2 = new JpaAutomationComposition(testJpaAutomationComposition);
117 assertEquals(testJpaAutomationComposition, testJpaAutomationComposition2);
121 void testJpaAutomationCompositionValidation() {
122 var testJpaAutomationComposition = createJpaAutomationCompositionInstance();
124 assertThatThrownBy(() -> testJpaAutomationComposition.validate(null))
125 .hasMessageMatching("fieldName is marked .*ull but is null");
127 assertTrue(testJpaAutomationComposition.validate("").isValid());
131 void testJpaAutomationCompositionCompareTo() {
132 var testJpaAutomationComposition = createJpaAutomationCompositionInstance();
134 var otherJpaAutomationComposition = new JpaAutomationComposition(testJpaAutomationComposition);
135 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
136 assertEquals(-1, testJpaAutomationComposition.compareTo(null));
137 assertEquals(0, testJpaAutomationComposition.compareTo(testJpaAutomationComposition));
138 assertNotEquals(0, testJpaAutomationComposition.compareTo(new DummyJpaAutomationCompositionChild()));
140 testJpaAutomationComposition.setInstanceId("BadValue");
141 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
142 testJpaAutomationComposition.setInstanceId(INSTANCE_ID);
143 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
145 testJpaAutomationComposition.setCompositionId(UUID.randomUUID().toString());
146 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
147 testJpaAutomationComposition.setCompositionId(COMPOSITION_ID);
148 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
150 testJpaAutomationComposition.setName("BadValue");
151 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
152 testJpaAutomationComposition.setName("automation-composition");
153 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
155 testJpaAutomationComposition.setVersion("0.0.0");
156 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
157 testJpaAutomationComposition.setVersion("0.0.1");
158 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
160 testJpaAutomationComposition.setDeployState(DeployState.DEPLOYED);
161 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
162 testJpaAutomationComposition.setDeployState(DeployState.UNDEPLOYED);
163 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
165 testJpaAutomationComposition.setLockState(LockState.UNLOCKED);
166 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
167 testJpaAutomationComposition.setLockState(LockState.NONE);
168 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
170 testJpaAutomationComposition.setDescription("A description");
171 assertNotEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
172 testJpaAutomationComposition.setDescription(null);
173 assertEquals(0, testJpaAutomationComposition.compareTo(otherJpaAutomationComposition));
175 assertEquals(testJpaAutomationComposition, new JpaAutomationComposition(testJpaAutomationComposition));
179 void testJpaAutomationCompositionLombok() {
180 assertNotNull(new AutomationComposition());
181 var ac0 = new JpaAutomationComposition();
182 ac0.setCompositionId(COMPOSITION_ID);
184 assertThat(ac0.toString()).contains("JpaAutomationComposition(");
185 assertThat(ac0.hashCode()).isNotZero();
186 assertEquals(ac0, ac0);
187 assertNotEquals(null, ac0);
189 var ac1 = new JpaAutomationComposition();
191 ac1.setCompositionId(UUID.randomUUID().toString());
192 ac1.setDescription("Description");
193 ac1.setElements(new ArrayList<>());
194 ac1.setInstanceId(INSTANCE_ID);
196 assertThat(ac1.toString()).contains("AutomationComposition(");
197 assertNotEquals(0, ac1.hashCode());
198 assertNotEquals(ac1, ac0);
199 assertNotEquals(null, ac1);
201 assertNotEquals(ac1, ac0);
203 var ac2 = new JpaAutomationComposition();
204 ac2.setCompositionId(COMPOSITION_ID);
205 ac2.setInstanceId(ac0.getInstanceId());
206 assertEquals(ac2, ac0);
209 private JpaAutomationComposition createJpaAutomationCompositionInstance() {
210 var testAutomationComposition = createAutomationCompositionInstance();
211 var testJpaAutomationComposition = new JpaAutomationComposition();
212 testJpaAutomationComposition.fromAuthorative(testAutomationComposition);
214 return testJpaAutomationComposition;
217 private AutomationComposition createAutomationCompositionInstance() {
218 var testAutomationComposition = new AutomationComposition();
219 testAutomationComposition.setName("automation-composition");
220 testAutomationComposition.setInstanceId(UUID.fromString(INSTANCE_ID));
221 testAutomationComposition.setVersion("0.0.1");
222 testAutomationComposition.setCompositionId(UUID.fromString(COMPOSITION_ID));
223 testAutomationComposition.setElements(new LinkedHashMap<>());
225 return testAutomationComposition;