diff --git a/TODO.md b/TODO.md index 3a85103..b8429fd 100644 --- a/TODO.md +++ b/TODO.md @@ -16,7 +16,7 @@ - [x] `Switch` and `Case` components - [x] Fix bug with multiline nested component attributes. - [x] `Each` with `Map` -- [ ] `WhenNotEmpty` with `Map` +- [x] `WhenNotEmpty` with `Map` ## 0.1.0 - [x] figure out how to make the GroovyClassLoader consistent between the groovy compiler configuration and the wvc diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy index b19ce6e..72395ff 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy @@ -5,7 +5,7 @@ import groowt.view.component.runtime.DefaultComponentWriter class WhenNotEmpty extends DelegatingWebViewComponent { - private final Collection items + private final Object items WhenNotEmpty(Map attr) { items = attr.items @@ -14,7 +14,7 @@ class WhenNotEmpty extends DelegatingWebViewComponent { @Override protected View getDelegate() { return { Writer w -> - if (!items.empty) { + if (items instanceof Collection && !items.empty || items instanceof Map && !items.isEmpty()) { def cw = new DefaultComponentWriter(w, context.renderContext, context) children.each { cw << it } } diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/lib/WhenNotEmptyTests.groovy b/web-view-components/src/test/groovy/groowt/view/component/web/lib/WhenNotEmptyTests.groovy new file mode 100644 index 0000000..91af6ec --- /dev/null +++ b/web-view-components/src/test/groovy/groowt/view/component/web/lib/WhenNotEmptyTests.groovy @@ -0,0 +1,27 @@ +package groowt.view.component.web.lib + +import org.junit.jupiter.api.Test + +class WhenNotEmptyTests extends AbstractWebViewComponentTests { + + @Test + void emptyCollection() { + doTest('Hello, World!', '') + } + + @Test + void emptyMap() { + doTest('Hello, World!', '') + } + + @Test + void nonEmptyCollection() { + doTest('012', '012') + } + + @Test + void nonEmptyMap() { + doTest('a: 0', 'a: 0') + } + +}