Skip to content

Commit 1302429

Browse files
committed
test: add regression test for #32
Test that ValueChangeEvent fires when adding or removing an additional (either programatically or from the browser).
1 parent 129c207 commit 1302429

File tree

3 files changed

+58
-3
lines changed

3 files changed

+58
-3
lines changed

src/test/java/com/flowingcode/vaadin/addons/chipfield/integration/IntegrationView.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.lang.reflect.Method;
2323
import java.util.Arrays;
24+
import java.util.List;
2425
import java.util.Optional;
2526

2627
import com.flowingcode.vaadin.addons.chipfield.ChipField;
@@ -35,6 +36,7 @@
3536
public class IntegrationView extends Div implements IntegrationViewCallables {
3637

3738
public ChipField<String> field;
39+
private List<String> lastValueChange;
3840

3941
public IntegrationView() {
4042
setId("view");
@@ -111,4 +113,18 @@ public boolean hasItemWithLabel(String label) {
111113
}
112114
}
113115

114-
}
116+
@Override
117+
@ClientCallable
118+
public void addValueChangeListener() {
119+
field.addValueChangeListener(ev -> {
120+
lastValueChange = ev.getValue();
121+
});
122+
}
123+
124+
@Override
125+
@ClientCallable
126+
public JsonArrayList<String> getLastValueChange() {
127+
return JsonArrayList.fromStringArray(lastValueChange);
128+
}
129+
130+
}

src/test/java/com/flowingcode/vaadin/addons/chipfield/integration/IntegrationViewCallables.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ public interface IntegrationViewCallables {
2525

2626
void testCallable(boolean arg);
2727

28+
void addValueChangeListener();
29+
30+
JsonArrayList<String> getLastValueChange();
31+
2832
void allowAdditionalItems(boolean value);
2933

3034
void setFieldReadOnly(boolean value);

src/test/java/com/flowingcode/vaadin/addons/chipfield/integration/ViewIT.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,44 @@ public void testRemoveSelectedItem() {
186186
}
187187

188188
/**
189-
* Test that findItemByLabel returns the additional chip
189+
* Test that valueChangeListener detects when adding a or removing a chip programatically.
190190
*
191-
* @see https://github.com/FlowingCode/ChipFieldAddon/issues/35
191+
* @see https://github.com/FlowingCode/ChipFieldAddon/issues/32
192+
*/
193+
@Test
194+
public void testValueChangeEventOnSetValue() {
195+
$server.addValueChangeListener();
196+
$server.allowAdditionalItems(true);
197+
$server.useNewItemHandler(true);
198+
$server.setValue(LOREM, ADDITIONAL);
199+
assertThat($server.getLastValueChange(), isEqualTo(LOREM, ADDITIONAL));
200+
$server.setValue(LOREM);
201+
assertThat($server.getLastValueChange(), isEqualTo(LOREM));
202+
}
203+
204+
/**
205+
* Test that valueChangeListener catch the event when adding or removing an additional chip from the UI.
206+
*
207+
* @throws InterruptedException
208+
*
209+
* @see https://github.com/FlowingCode/ChipFieldAddon/issues/32
210+
*/
211+
@Test
212+
public void testValueChangeEventOnAdditionalItem() throws InterruptedException {
213+
$server.allowAdditionalItems(true);
214+
$server.useNewItemHandler(true);
215+
$server.addValueChangeListener();
216+
$server.setValue(LOREM);
217+
chipfield.sendKeys(ADDITIONAL, Keys.ENTER);
218+
assertThat($server.getLastValueChange(), isEqualTo(LOREM, ADDITIONAL));
219+
chipfield.sendKeys(Keys.BACK_SPACE);
220+
assertThat($server.getLastValueChange(), isEqualTo(LOREM));
221+
}
222+
223+
/**
224+
* Test that findItemByLabel returns the additional chips https://github.com/FlowingCode/ChipFieldAddon/issues/35
225+
*
226+
* @see https://github.com/FlowingCode/ChipFieldAddon/issues/36
192227
*/
193228
@Test
194229
public void testFindItemByLabel() {

0 commit comments

Comments
 (0)