changeset 1938:85d6dcfb7ef7

Fix SearchField actionEvent payload to contain latest search text PR3035 Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-June/019684.html
author Anirudhan Mukundan <amukunda@redhat.com>
date Thu, 23 Jun 2016 11:15:46 -0400
parents 4d83b41ff85b
children a09beb448a72
files client/swing/src/main/java/com/redhat/thermostat/client/swing/components/SearchField.java client/swing/src/test/java/com/redhat/thermostat/client/swing/components/SearchFieldTest.java
diffstat 2 files changed, 34 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/SearchField.java	Thu Jun 23 11:14:19 2016 -0400
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/SearchField.java	Thu Jun 23 11:15:46 2016 -0400
@@ -103,19 +103,18 @@
 
             @Override
             public void changedUpdate(DocumentEvent e) {
-                Document doc = e.getDocument();
                 if (!labelDisplayed.get()) {
-                    String filter = null;
                     try {
-                        filter = doc.getText(0, doc.getLength());
-                        if (!(filter.equals(previousText))) {
+                        Document doc = e.getDocument();
+                        String filter = doc.getText(0, doc.getLength());
+                        if (!filter.equals(previousText)) {
                             previousText = filter;
-                            fireViewAction(SearchAction.PERFORM_SEARCH, searchText.get());
+                            searchText.set(filter);
+                            fireViewAction(SearchAction.PERFORM_SEARCH, filter);
                         }
                     } catch (BadLocationException ble) {
                         // ignore
                     }
-                    searchText.set(filter);
                 }
             }
 
--- a/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/SearchFieldTest.java	Thu Jun 23 11:14:19 2016 -0400
+++ b/client/swing/src/test/java/com/redhat/thermostat/client/swing/components/SearchFieldTest.java	Thu Jun 23 11:15:46 2016 -0400
@@ -36,7 +36,9 @@
 
 package com.redhat.thermostat.client.swing.components;
 
+import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -206,13 +208,38 @@
         textBox.enterText(SEARCH_TEXT);
 
         verify(listener, times(SEARCH_TEXT.length())).actionPerformed(
-                new ActionEvent<SearchField.SearchAction>(searchField, SearchField.SearchAction.PERFORM_SEARCH));
+                new ActionEvent<>(searchField, SearchField.SearchAction.PERFORM_SEARCH));
 
         textBox.enterText("\n");
 
         verify(listener, times(SEARCH_TEXT.length() + 1)).actionPerformed(
-                new ActionEvent<SearchField.SearchAction>(searchField, SearchField.SearchAction.PERFORM_SEARCH));
+                new ActionEvent<>(searchField, SearchField.SearchAction.PERFORM_SEARCH));
+
+    }
+
+    @Category(GUITest.class)
+    @GUITest
+    @Test
+    public void testListenersReceiveCorrectSearchTextPayload() {
+        frameFixture.show();
+
+        final String SEARCH_TEXT = "test";
 
+        final String[] payload = new String[1];
+        ActionListener<SearchField.SearchAction> listener = new ActionListener<SearchField.SearchAction>() {
+            @Override
+            public void actionPerformed(ActionEvent<SearchField.SearchAction> actionEvent) {
+                payload[0] = (String) actionEvent.getPayload();
+            }
+        };
+
+        JTextComponentFixture textBox = frameFixture.textBox(SearchField.VIEW_NAME);
+
+        searchField.addSearchListener(listener);
+
+        textBox.enterText(SEARCH_TEXT);
+
+        assertThat(payload[0], is(SEARCH_TEXT));
     }
 
 }