aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/groovy
diff options
context:
space:
mode:
authorputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-05-06 16:12:44 +0100
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-05-13 11:20:07 +0100
commitd31d8e1cc167abf7835a1771b5ddc8d78aba9ac6 (patch)
tree056a897594706613f71316e87075a93c7d9d6ab7 /src/test/groovy
parent26af9368115f5f7296aa4123f38b4e1c81a40b8d (diff)
Implement service and repository layers for storing temporal data
1. Basic structure created 2. Basic tests added 3. lombok.config included for coverage Issue-ID: CPS-194 Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca> Change-Id: Icf23c2e647106f7985dff14d9901806f7c4aa55a
Diffstat (limited to 'src/test/groovy')
-rw-r--r--src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy (renamed from src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy)0
-rw-r--r--src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy70
-rw-r--r--src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy45
3 files changed, 115 insertions, 0 deletions
diff --git a/src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy b/src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy
index f718bf4..f718bf4 100644
--- a/src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy
+++ b/src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy
diff --git a/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy b/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy
new file mode 100644
index 0000000..ec976ee
--- /dev/null
+++ b/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy
@@ -0,0 +1,70 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2021 Bell Canada.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.temporal.repository
+
+
+import org.onap.cps.temporal.domain.NetworkData
+import org.onap.cps.temporal.repository.containers.TimescaleContainer
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.testcontainers.junit.jupiter.Testcontainers
+import spock.lang.Shared
+import spock.lang.Specification
+
+import java.time.OffsetDateTime
+
+@SpringBootTest
+@Testcontainers
+class NetworkDataRepositorySpec extends Specification {
+
+ def observedTimestamp = OffsetDateTime.now()
+ def dataspaceName = 'TEST_DATASPACE'
+ def schemaSetName = 'TEST_SCHEMA_SET'
+ def anchorName = 'TEST_ANCHOR'
+ def payload = '{ \"message\": \"Hello World!\" }'
+
+ @Autowired
+ NetworkDataRepository networkDataRepository
+
+ def networkData = NetworkData.builder().observedTimestamp(observedTimestamp).dataspace(dataspaceName)
+ .schemaSet(schemaSetName).anchor(anchorName).payload(payload).build()
+
+ @Shared
+ def databaseTestContainer = TimescaleContainer.getInstance()
+
+ def setupSpec() {
+ databaseTestContainer.start()
+ }
+
+ def 'Store latest network data in timeseries database.'() {
+ when: 'a new Network Data is stored'
+ NetworkData savedData = networkDataRepository.save(networkData)
+ then: ' the saved Network Data is returned'
+ savedData.getDataspace() == networkData.getDataspace()
+ savedData.getSchemaSet() == networkData.getSchemaSet()
+ savedData.getAnchor() == networkData.getAnchor()
+ savedData.getPayload() == networkData.getPayload()
+ savedData.getObservedTimestamp() == networkData.getObservedTimestamp()
+ and: ' createdTimestamp is auto populated by db '
+ networkData.getCreatedTimestamp() == null
+ savedData.getCreatedTimestamp() != null
+ and: ' the CreationTimestamp is ahead of ObservedTimestamp'
+ savedData.getCreatedTimestamp() > networkData.getObservedTimestamp()
+ }
+}
diff --git a/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy b/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy
new file mode 100644
index 0000000..70ac2bc
--- /dev/null
+++ b/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy
@@ -0,0 +1,45 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2021 Bell Canada.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.temporal.service
+
+import java.time.OffsetDateTime
+import org.onap.cps.temporal.domain.NetworkData
+import org.onap.cps.temporal.repository.NetworkDataRepository
+import spock.lang.Specification
+
+class NetworkDataServiceImplSpec extends Specification {
+
+ def objectUnderTest = new NetworkDataServiceImpl()
+
+ def mockNetworkDataRepository = Mock(NetworkDataRepository)
+
+ def networkData = new NetworkData()
+
+ def setup() {
+ objectUnderTest.networkDataRepository = mockNetworkDataRepository
+ }
+
+ def 'Add network data in timeseries database.'() {
+ when: 'a new network data is added'
+ objectUnderTest.addNetworkData(networkData)
+ then: ' repository service is called with the correct parameters'
+ 1 * mockNetworkDataRepository.save(networkData)
+ }
+
+}