Improved code coverage for record filter strategies 81/135381/2
authorToineSiebelink <toine.siebelink@est.tech>
Wed, 12 Jul 2023 16:05:41 +0000 (17:05 +0100)
committerToine Siebelink <toine.siebelink@est.tech>
Wed, 12 Jul 2023 16:45:24 +0000 (16:45 +0000)
(the semi-integration test dont cover all scenarios)

Issue-ID: CPS-475
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Change-Id: I717946cddec315a1e69ca8d104b07f91691c1b63

cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/async/RecordFilterStrategiesSpec.groovy [new file with mode: 0644]

diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/async/RecordFilterStrategiesSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/async/RecordFilterStrategiesSpec.groovy
new file mode 100644 (file)
index 0000000..4189a8b
--- /dev/null
@@ -0,0 +1,41 @@
+package org.onap.cps.ncmp.api.impl.async
+
+import spock.lang.Specification
+import org.apache.kafka.common.header.Header
+import org.apache.kafka.common.header.Headers
+
+import java.nio.charset.Charset
+
+class RecordFilterStrategiesSpec extends Specification {
+
+    def objectUnderTest = new RecordFilterStrategies()
+
+    def headers = Mock(Headers)
+    def header = Mock(Header)
+
+    def 'Determining cloud event using ce_type header for a #scenario.'() {
+        given: 'headers contain a header for key: #key'
+            headers.lastHeader(key) >> header
+        expect: 'the check for cloud events returns #expectedResult'
+            assert objectUnderTest.isCloudEvent(headers) == expectedResult
+        where: 'the following headers (keys) are defined'
+            scenario          | key       || expectedResult
+            'cloud event'     | 'ce_type' || true
+            'non-cloud event' | 'other'   || false
+    }
+
+    def 'Excluding cloud event of given type only with  #scenario.'() {
+        given: 'headers contain a header for key: #key and value: #value'
+            header.value() >> value.getBytes(Charset.defaultCharset())
+            headers.lastHeader(key) >> header
+        expect: 'the event would (not) be excluded: #expectedToBeExcluded'
+            assert objectUnderTest.isNotCloudEventOfType(headers,'requiredType') == expectedToBeExcluded
+        where: 'the following headers are defined'
+            scenario                | key       | value                            || expectedToBeExcluded
+            'required type'         | 'ce_type' | 'requiredType'                   || false
+            'contains requiredType' | 'ce_type' | 'Contains requiredType and more' || false
+            'other type'            | 'ce_type' | 'other'                          || true
+            'no ce_type header'     | 'other'   | 'irrelevant'                     || true
+    }
+
+}