rails3-jquery-autocomplete 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +30 -0
- data/integration/.rspec +1 -0
- data/integration/Gemfile +2 -0
- data/integration/autotest/discover.rb +2 -0
- data/integration/spec/acceptance/acceptance_helper.rb +15 -0
- data/integration/spec/acceptance/autocomplete_spec.rb +81 -0
- data/integration/spec/acceptance/support/helpers.rb +12 -0
- data/integration/spec/acceptance/support/paths.rb +33 -0
- data/integration/spec/spec_helper.rb +37 -0
- data/lib/rails3-jquery-autocomplete/version.rb +1 -1
- data/lib/steak/autocomplete.rb +12 -0
- metadata +11 -3
data/README.markdown
CHANGED
@@ -245,6 +245,35 @@ An example on how to use it:
|
|
245
245
|
|
246
246
|
I have only tested this using Capybara, no idea if it works with something else, to see it in action, check the [example app](http://github.com/crowdint/rails3-jquery-autocomplete-app).
|
247
247
|
|
248
|
+
# Steak
|
249
|
+
|
250
|
+
I have created a helper to test your autocomplete with Steak and Capybara, all you have to do is add the following lines to your *acceptance_helper.rb* file:
|
251
|
+
|
252
|
+
require 'steak/autocomplete'
|
253
|
+
|
254
|
+
Then you'll have access to the following helper:
|
255
|
+
|
256
|
+
choose_autocomplete_result
|
257
|
+
|
258
|
+
An example on how to use it:
|
259
|
+
|
260
|
+
scenario "Autocomplete" do
|
261
|
+
lambda do
|
262
|
+
Brand.create! [
|
263
|
+
{:name => "Alpha"},
|
264
|
+
{:name => "Beta"},
|
265
|
+
{:name => "Gamma"}
|
266
|
+
]
|
267
|
+
end.should change(Brand, :count).by(3)
|
268
|
+
|
269
|
+
visit home_page
|
270
|
+
fill_in "Brand name", :with => "al"
|
271
|
+
choose_autocomplete_result "Alpha"
|
272
|
+
find_field("Brand name").value.should include("Alpha")
|
273
|
+
end
|
274
|
+
|
275
|
+
I have only tested this using Capybara, no idea if it works with something else.
|
276
|
+
|
248
277
|
# Development
|
249
278
|
|
250
279
|
If you want to make changes to the gem, first install bundler 1.0.0:
|
@@ -277,6 +306,7 @@ integration folder:
|
|
277
306
|
|
278
307
|
# Changelog
|
279
308
|
|
309
|
+
* 0.7.2 Steak helper
|
280
310
|
* 0.7.1 Fixed joined scopes (Issue #43)
|
281
311
|
* 0.7.0 Scopes
|
282
312
|
* 0.6.6 ILIKE for postgres
|
data/integration/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/integration/Gemfile
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
require "steak"
|
3
|
+
require 'steak/autocomplete'
|
4
|
+
|
5
|
+
if defined?(ActiveRecord::Base)
|
6
|
+
begin
|
7
|
+
require 'database_cleaner'
|
8
|
+
DatabaseCleaner.strategy = :truncation
|
9
|
+
rescue LoadError => ignore_if_database_cleaner_not_present
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Put your acceptance spec helpers inside /spec/acceptance/support
|
14
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
15
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/acceptance_helper')
|
2
|
+
|
3
|
+
feature "Autocomplete", %q{
|
4
|
+
In order to do funky stuff
|
5
|
+
As a User
|
6
|
+
I want autocomplete!
|
7
|
+
} do
|
8
|
+
|
9
|
+
background do
|
10
|
+
enable_javascript
|
11
|
+
lambda do
|
12
|
+
Brand.create! [
|
13
|
+
{ :name => "Alpha" , :state => true },
|
14
|
+
{ :name => "Beta" , :state => false },
|
15
|
+
{ :name => "Gamma" , :state => false },
|
16
|
+
{ :name => "Kappa" , :state => true },
|
17
|
+
{ :name => "Kappler" , :state => false }
|
18
|
+
]
|
19
|
+
end.should change(Brand, :count).by(5)
|
20
|
+
lambda { Feature.create! [{:name => "Shiny"}, {:name => "Glowy"}] }.should change(Feature, :count).by(2)
|
21
|
+
end
|
22
|
+
|
23
|
+
context "Autocomplete" do
|
24
|
+
scenario "Autocomplete" do
|
25
|
+
visit home_page
|
26
|
+
fill_in "Brand name", :with => "al"
|
27
|
+
choose_autocomplete_result "Alpha"
|
28
|
+
find_field("Brand name").value.should include("Alpha")
|
29
|
+
end
|
30
|
+
|
31
|
+
scenario "Autocomplete, id_element option" do
|
32
|
+
visit new_id_element_page
|
33
|
+
fill_in "Brand name", :with => "al"
|
34
|
+
choose_autocomplete_result "Alpha"
|
35
|
+
find_field("Brand name").value.should include("Alpha")
|
36
|
+
find_field("Brand").value.should include(Brand.find_by_name("Alpha").id.to_s)
|
37
|
+
end
|
38
|
+
|
39
|
+
scenario "Autocomplete for a sub class" do
|
40
|
+
lambda { ForeignBrand.create! :name => "Omega" }.should change(ForeignBrand, :count)
|
41
|
+
|
42
|
+
visit new_sub_class_page
|
43
|
+
fill_in "Brand name", :with => "om"
|
44
|
+
choose_autocomplete_result "Omega"
|
45
|
+
find_field("Brand name").value.should include("Omega")
|
46
|
+
end
|
47
|
+
|
48
|
+
scenario "Multiple autocomplete" do
|
49
|
+
visit new_multiple_section_page
|
50
|
+
send_to("Brand name", "al")
|
51
|
+
choose_autocomplete_result "Alpha"
|
52
|
+
send_to("Brand name", "bet")
|
53
|
+
choose_autocomplete_result "Beta"
|
54
|
+
find_field("Brand name").value.should include("Alpha,Beta")
|
55
|
+
end
|
56
|
+
|
57
|
+
scenario "Autocomplete for Nested Models" do
|
58
|
+
visit new_nested_model_page
|
59
|
+
send_to("Feature Name", "sh")
|
60
|
+
choose_autocomplete_result "Shiny"
|
61
|
+
find_field("Feature Name").value.should include("Glowy,Shiny")
|
62
|
+
end
|
63
|
+
|
64
|
+
scenario "Autocomplete for simple_form" do
|
65
|
+
visit new_simple_form_page
|
66
|
+
fill_in("Brand name", :with => "al")
|
67
|
+
choose_autocomplete_result "Alpha"
|
68
|
+
find_field("Brand name").value.should include("Alpha")
|
69
|
+
end
|
70
|
+
|
71
|
+
scenario "Autocomplete with scope" do
|
72
|
+
kappa_brand = Brand.find_by_name('Kappa')
|
73
|
+
kappa_brand.address = Address.create!
|
74
|
+
kappa_brand.save!
|
75
|
+
visit new_scoped_cutocomplete_page
|
76
|
+
fill_in("Brand name", :with => "ka")
|
77
|
+
choose_autocomplete_result "Kappa"
|
78
|
+
find_field("Brand name").value.should include("Kappa")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module HelperMethods
|
2
|
+
def enable_javascript
|
3
|
+
Capybara.current_driver = :selenium
|
4
|
+
Capybara.default_wait_time = 1
|
5
|
+
end
|
6
|
+
|
7
|
+
def send_to(element, key)
|
8
|
+
find_field(element).native.send_keys(key)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configuration.include HelperMethods, :type => :acceptance
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module NavigationHelpers
|
2
|
+
# Put helper methods related to the paths in your application here.
|
3
|
+
|
4
|
+
def home_page
|
5
|
+
"/"
|
6
|
+
end
|
7
|
+
|
8
|
+
def new_id_element_page
|
9
|
+
"/id_elements/new"
|
10
|
+
end
|
11
|
+
|
12
|
+
def new_sub_class_page
|
13
|
+
"/sub_classes/new"
|
14
|
+
end
|
15
|
+
|
16
|
+
def new_multiple_section_page
|
17
|
+
"/multiple_selections/new"
|
18
|
+
end
|
19
|
+
|
20
|
+
def new_nested_model_page
|
21
|
+
"/nested_models/new"
|
22
|
+
end
|
23
|
+
|
24
|
+
def new_simple_form_page
|
25
|
+
"/simple_forms/new"
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_scoped_cutocomplete_page
|
29
|
+
"/scoped_autocompletes/new"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
RSpec.configuration.include NavigationHelpers, :type => :acceptance
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
3
|
+
require File.expand_path("../../config/environment", __FILE__)
|
4
|
+
require 'rspec/rails'
|
5
|
+
require 'capybara'
|
6
|
+
require 'capybara/rails'
|
7
|
+
require "capybara/dsl"
|
8
|
+
|
9
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
10
|
+
# in spec/support/ and its subdirectories.
|
11
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
|
12
|
+
|
13
|
+
RSpec.configure do |config|
|
14
|
+
# == Mock Framework
|
15
|
+
#
|
16
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
17
|
+
#
|
18
|
+
# config.mock_with :mocha
|
19
|
+
# config.mock_with :flexmock
|
20
|
+
# config.mock_with :rr
|
21
|
+
config.mock_with :rspec
|
22
|
+
|
23
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
24
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
25
|
+
|
26
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
27
|
+
# examples within a transaction, remove the following line or assign false
|
28
|
+
# instead of true.
|
29
|
+
config.use_transactional_fixtures = false
|
30
|
+
|
31
|
+
config.include Capybara
|
32
|
+
config.after(:each) do
|
33
|
+
Capybara.reset_sessions!
|
34
|
+
Capybara.use_default_driver
|
35
|
+
DatabaseCleaner.clean
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Steak
|
2
|
+
module Autocomplete
|
3
|
+
def choose_autocomplete_result(text, input_id="input[data-autocomplete]")
|
4
|
+
page.execute_script %Q{ $('#{input_id}').trigger("focus") }
|
5
|
+
page.execute_script %Q{ $('#{input_id}').trigger("keydown") }
|
6
|
+
sleep 1
|
7
|
+
page.execute_script %Q{ $('.ui-menu-item a:contains("#{text}")').trigger("mouseenter").trigger("click"); }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configuration.include Steak::Autocomplete, :type => :acceptance
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails3-jquery-autocomplete
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 2
|
10
|
+
version: 0.7.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Padilla
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- README.markdown
|
127
127
|
- Rakefile
|
128
128
|
- integration/.gitignore
|
129
|
+
- integration/.rspec
|
129
130
|
- integration/Gemfile
|
130
131
|
- integration/Gemfile.lock
|
131
132
|
- integration/README
|
@@ -157,6 +158,7 @@ files:
|
|
157
158
|
- integration/app/views/scoped_autocompletes/new.html.haml
|
158
159
|
- integration/app/views/simple_forms/new.html.haml
|
159
160
|
- integration/app/views/sub_classes/new.html.haml
|
161
|
+
- integration/autotest/discover.rb
|
160
162
|
- integration/config.ru
|
161
163
|
- integration/config/application.rb
|
162
164
|
- integration/config/boot.rb
|
@@ -208,6 +210,11 @@ files:
|
|
208
210
|
- integration/public/stylesheets/sass/application.sass
|
209
211
|
- integration/script/cucumber
|
210
212
|
- integration/script/rails
|
213
|
+
- integration/spec/acceptance/acceptance_helper.rb
|
214
|
+
- integration/spec/acceptance/autocomplete_spec.rb
|
215
|
+
- integration/spec/acceptance/support/helpers.rb
|
216
|
+
- integration/spec/acceptance/support/paths.rb
|
217
|
+
- integration/spec/spec_helper.rb
|
211
218
|
- lib/cucumber/autocomplete.rb
|
212
219
|
- lib/generators/autocomplete_generator.rb
|
213
220
|
- lib/generators/templates/autocomplete-rails.js
|
@@ -218,6 +225,7 @@ files:
|
|
218
225
|
- lib/rails3-jquery-autocomplete/helpers.rb
|
219
226
|
- lib/rails3-jquery-autocomplete/simple_form_plugin.rb
|
220
227
|
- lib/rails3-jquery-autocomplete/version.rb
|
228
|
+
- lib/steak/autocomplete.rb
|
221
229
|
- rails3-jquery-autocomplete.gemspec
|
222
230
|
- test/form_helper_test.rb
|
223
231
|
- test/generators/generator_test.rb
|