You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2021/03/09 14:30:14 UTC

[aries-component-dsl] 01/02: Add test for refreshWhen nodes depending on other refreshWhen nodes

This is an automated email from the ASF dual-hosted git repository.

csierra pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-component-dsl.git

commit 58f9e92a33c233b638c3cfe924543f8ad474bcc0
Author: Carlos Sierra Andrés <ca...@liferay.com>
AuthorDate: Tue Mar 9 15:17:24 2021 +0100

    Add test for refreshWhen nodes depending on other refreshWhen nodes
---
 .../apache/aries/component/dsl/test/DSLTest.java   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/itests/src/main/java/org/apache/aries/component/dsl/test/DSLTest.java b/itests/src/main/java/org/apache/aries/component/dsl/test/DSLTest.java
index f644a3c..289bf12 100644
--- a/itests/src/main/java/org/apache/aries/component/dsl/test/DSLTest.java
+++ b/itests/src/main/java/org/apache/aries/component/dsl/test/DSLTest.java
@@ -2204,6 +2204,55 @@ public class DSLTest {
     }
 
     @Test
+    public void testRefreshWhenDoesNotPropagateUpdates() {
+        ArrayList<String> effects = new ArrayList<>();
+        ArrayList<String> updateEffects = new ArrayList<>();
+
+        ServiceRegistration<Service> serviceRegistration =
+            bundleContext.registerService(
+                Service.class, new Service(),
+                new Hashtable<String, Object>() {{
+                    put("property", "original");
+                }});
+
+        try {
+            OSGi<?> program =
+                serviceReferences(
+                    Service.class, __ -> false
+                ).effects(
+                    __ -> effects.add("effect"), //should not repeat by last __ -> true
+                    __ -> {},
+                    __ -> updateEffects.add("first")
+                ).then(
+                    refreshWhen(
+                        serviceReferences(
+                            Service.class, __ -> false
+                        ).effects(
+                            __ -> {},
+                            __ -> {},
+                            __ -> updateEffects.add("second") //should never fire because refresh is true
+                        )
+                        , __ -> true)
+                );
+
+            program.run(bundleContext);
+
+            assertEquals(Collections.singletonList("effect"), effects);
+
+            serviceRegistration.setProperties(
+                new Hashtable<String, Object>() {{
+                    put("property", "updated");
+                }});
+
+            assertEquals(Collections.singletonList("effect"), effects);
+            assertEquals(Collections.singletonList("first"), updateEffects);
+        }
+        finally {
+            serviceRegistration.unregister();
+        }
+    }
+
+    @Test
     public void testUpdateEffectsOrder() {
         ArrayList<String> updateEffects = new ArrayList<>();