Fix issue when using columns with AutoComplete
No selection event would be fired if selecting an auto-completed text
with "enter"
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
index 438296e..c880bf8 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
@@ -215,7 +215,7 @@
var suggestionSelected = typeof index === "number" && index > -1;
var autoCompleteAccepted = this.get( "autoComplete" )
&& currentSuggestions.length === 1
- && currentSuggestions[ 0 ] == this.get( "text" );
+ && getReplacementText( currentSuggestions[ 0 ] ) === this.get( "text" );
if( suggestionSelected || autoCompleteAccepted ) {
this.notify( "suggestionSelected" );
this.set( "suggestionsVisible", false );
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
index 3fe531b..1621095 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
@@ -498,7 +498,7 @@
model.set( "autoComplete", true );
model.addListener( "change:currentSuggestions", createClientListener( "AutoSuggest.js" ) );
- model.set( "currentSuggestions", [ "banana" ], { "action" : "typing" } );
+ model.set( "currentSuggestions", [ [ "banana", "foo" ] ], { "action" : "typing" } );
expect( model.get( "replacementText" ) ).toEqual( "banana" );
} );
@@ -509,7 +509,7 @@
model.set( "autoComplete", true );
model.addListener( "change:currentSuggestions", createClientListener( "AutoSuggest.js" ) );
- model.set( "currentSuggestions", [ [ "banana" ] ], { "action" : "typing" } );
+ model.set( "currentSuggestions", [ [ "banana", "foo" ] ], { "action" : "typing" } );
expect( model.get( "replacementText" ) ).toEqual( "banana" );
} );
@@ -611,7 +611,6 @@
model.set( "selectedSuggestionIndex", -1 );
model.addListener( "accept", createClientListener( "AutoSuggest.js" ) );
model.addListener( "suggestionSelected", logger );
-
} );
it( "fires suggestionSelected for selectedSuggestionIndex", function() {
@@ -624,16 +623,31 @@
expect( model.get( "suggestionsVisible" ) ).toBe( false );
} );
- it( "fires suggestionSelected when full auto complete is accepted", function() {
- model.set( "currentSuggestions", [ "banana" ] );
- model.set( "autoComplete", true );
- model.set( "userText", "ban" );
- model.set( "text", "banana" );
+ describe( "for full auto complete", function() {
- model.notify( "accept", { source : model, type : "accept" } );
+ beforeEach( function() {
+ model.set( "autoComplete", true );
+ model.set( "userText", "ban" );
+ model.set( "text", "banana" );
+ } );
- expect( log.length ).toBe( 1 );
- expect( model.get( "suggestionsVisible" ) ).toBe( false );
+ it( "fires suggestionSelected for simple suggestion", function() {
+ model.set( "currentSuggestions", [ "banana" ] );
+
+ model.notify( "accept", { source : model, type : "accept" } );
+
+ expect( log.length ).toBe( 1 );
+ expect( model.get( "suggestionsVisible" ) ).toBe( false );
+ } );
+
+ it( "fires suggestionSelected for array suggestion", function() {
+ model.set( "currentSuggestions", [ [ "banana", "foo" ] ] );
+ model.notify( "accept", { source : model, type : "accept" } );
+
+ expect( log.length ).toBe( 1 );
+ expect( model.get( "suggestionsVisible" ) ).toBe( false );
+ } );
+
} );
it( "does nothing when attempting accepting without selected suggestion or auto complete", function() {