rails3-jquery-autocomplete 1.0.6 → 1.0.7

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.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # rails3-jquery-autocomplete
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/crowdint/rails3-jquery-autocomplete.png)](http://travis-ci.org/crowdint/rails3-jquery-autocomplete)
4
+
3
5
  An easy way to use jQuery's autocomplete with Rails 3.
4
6
 
5
7
  Supports both ActiveRecord, [mongoid](http://github.com/mongoid/mongoid), and [MongoMapper](https://github.com/jnunemaker/mongomapper).
@@ -316,10 +318,18 @@ And then, install all your dependencies:
316
318
 
317
319
  ## Running the test suite
318
320
 
319
- You need to have an instance of MongoDB running on your computer or all the mongo tests will fail miserably.
321
+ <strike>You need to have an instance of MongoDB running on your computer or all the mongo tests will fail miserably.</strike>
322
+
323
+ To run all the tests once, simply use
320
324
 
321
325
  rake test
322
326
 
327
+ while you're developing, it is recommended that you run
328
+
329
+ bundle exec guard
330
+
331
+ to have the relevent test run every time you save a file.
332
+
323
333
  ## Integration tests
324
334
 
325
335
  If you make changes or add features to the jQuery part, please make sure
@@ -334,6 +344,17 @@ integration folder:
334
344
  rake db:migrate
335
345
  cucumber
336
346
 
347
+ ## Where to test what
348
+
349
+ If you're making or tweaking a plugin (such as the formastic plugin or
350
+ simple\_form plugin), check out the simple\_form\_plugin\_test for an
351
+ example of how to test it as part of the main `rake test` run.
352
+ Historically, plugins like these had been tested (shoddily) as part of
353
+ the integration tests. Feel free to remove them from the integration
354
+ suite and move them into the main suite. Your tests will run much
355
+ faster, and there will be less likelihood of your feature breaking in
356
+ the future. Thanks!
357
+
337
358
  # Thanks to
338
359
 
339
360
  Everyone on [this list](https://github.com/crowdint/rails3-jquery-autocomplete/contributors)
@@ -13,4 +13,4 @@
13
13
  * Example:
14
14
  * <input type="text" data-autocomplete="/url/to/autocomplete" data-id-element="#id_field">
15
15
  */
16
- (function(a){var b=null;a.fn.railsAutocomplete=function(){return this.live("focus",function(){this.railsAutoCompleter||(this.railsAutoCompleter=new a.railsAutocomplete(this))})},a.railsAutocomplete=function(a){_e=a,this.init(_e)},a.railsAutocomplete.fn=a.railsAutocomplete.prototype={railsAutocomplete:"0.0.1"},a.railsAutocomplete.fn.extend=a.railsAutocomplete.extend=a.extend,a.railsAutocomplete.fn.extend({init:function(b){function c(a){return a.split(b.delimiter)}function d(a){return c(a).pop().replace(/^\s+/,"")}b.delimiter=a(b).attr("data-delimiter")||null,a(b).autocomplete({source:function(c,f){a.getJSON(a(b).attr("data-autocomplete"),{term:d(c.term)},function(){a(arguments[0]).each(function(c,d){var f={};f[d.id]=d,a(b).data(f)}),f.apply(null,arguments)})},search:function(){var a=d(this.value);if(a.length<2)return!1},focus:function(){return!1},select:function(d,f){var g=c(this.value);g.pop(),g.push(f.item.value);if(b.delimiter!=null)g.push(""),this.value=g.join(b.delimiter);else{this.value=g.join(""),a(this).attr("data-id-element")&&a(a(this).attr("data-id-element")).val(f.item.id);if(a(this).attr("data-update-elements")){var h=a(this).data(f.item.id.toString()),i=a.parseJSON(a(this).attr("data-update-elements"));for(var j in i)a(i[j]).val(h[j])}}var k=this.value;return a(this).bind("keyup.clearId",function(){a(this).val().trim()!=k.trim()&&(a(a(this).attr("data-id-element")).val(""),a(this).unbind("keyup.clearId"))}),a(this).trigger("railsAutocomplete.select",f),!1}})}}),a(document).ready(function(){a("input[data-autocomplete]").railsAutocomplete()})})(jQuery)
16
+ (function(a){var b=null;a.fn.railsAutocomplete=function(){return this.live("focus",function(){this.railsAutoCompleter||(this.railsAutoCompleter=new a.railsAutocomplete(this))})},a.railsAutocomplete=function(a){_e=a,this.init(_e)},a.railsAutocomplete.fn=a.railsAutocomplete.prototype={railsAutocomplete:"0.0.1"},a.railsAutocomplete.fn.extend=a.railsAutocomplete.extend=a.extend,a.railsAutocomplete.fn.extend({init:function(b){function c(a){return a.split(b.delimiter)}function d(a){return c(a).pop().replace(/^\s+/,"")}b.delimiter=a(b).attr("data-delimiter")||null,a(b).autocomplete({source:function(c,f){a.getJSON(a(b).attr("data-autocomplete"),{term:d(c.term)},function(){a(arguments[0]).each(function(c,d){var f={};f[d.id]=d,a(b).data(f)}),f.apply(null,arguments)})},search:function(){var a=d(this.value);if(a.length<2)return!1},focus:function(){return!1},select:function(d,f){var g=c(this.value);g.pop(),g.push(f.item.value);if(b.delimiter!=null)g.push(""),this.value=g.join(b.delimiter);else{this.value=g.join(""),a(this).attr("data-id-element")&&a(a(this).attr("data-id-element")).val(f.item.id);if(a(this).attr("data-update-elements")){var h=a(this).data(f.item.id.toString()),i=a.parseJSON(a(this).attr("data-update-elements"));for(var j in i)a(i[j]).val(h[j])}}var k=this.value;return a(this).bind("keyup.clearId",function(){a(this).val().trim()!=k.trim()&&(a(a(this).attr("data-id-element")).val(""),a(this).unbind("keyup.clearId"))}),a(this).trigger("railsAutocomplete.select",f),!1}})}}),a(document).ready(function(){a("input[data-autocomplete]").railsAutocomplete()})})(jQuery);
@@ -1,8 +1,13 @@
1
1
  module SimpleForm
2
+
2
3
  module Inputs
3
4
  class AutocompleteInput < Base
4
5
  def input
5
- @builder.autocomplete_field(attribute_name, options[:url], input_html_options.merge(update_elements(options[:update_elements])))
6
+ @builder.autocomplete_field(
7
+ attribute_name,
8
+ options[:url],
9
+ html_options
10
+ )
6
11
  end
7
12
 
8
13
  protected
@@ -15,15 +20,22 @@ module SimpleForm
15
20
  placeholder_present?
16
21
  end
17
22
 
23
+ def html_options
24
+ input_html_options.merge update_elements options[:update_elements]
25
+ end
26
+
18
27
  def update_elements(elements)
19
- {'data-update-elements' => elements.to_json}
28
+ if elements
29
+ {'data-update-elements' => elements.to_json}
30
+ else
31
+ {}
32
+ end
20
33
  end
21
34
  end
22
35
  end
23
- end
24
36
 
25
- module SimpleForm
26
37
  class FormBuilder
27
38
  map_type :autocomplete, :to => SimpleForm::Inputs::AutocompleteInput
28
39
  end
40
+
29
41
  end
@@ -1,3 +1,3 @@
1
1
  module Rails3JQueryAutocomplete
2
- VERSION = '1.0.6'
2
+ VERSION = '1.0.7'
3
3
  end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+ require 'view_test_helper'
3
+
4
+ module Rails3JQueryAutocomplete
5
+ class SimpleFormPluginTest < ActionView::TestCase
6
+
7
+ should "apply a class of 'autocomplete'" do
8
+ with_input_for @user, :name, :autocomplete
9
+ assert_select "input#user_name.autocomplete[type=text][name='user[name]']"
10
+ end
11
+
12
+ should "add a data-autocomplete attribute with the provided :url" do
13
+ with_input_for @user, :name, :autocomplete, :url => '/test'
14
+ assert_select "input#user_name[data-autocomplete=/test]"
15
+ end
16
+
17
+ should "add a data-update-elements attribute with encoded data if passed an :update_elements option" do
18
+ with_input_for @user, :name, :autocomplete, :update_elements => { :id => '#this', :ego => '#that' }
19
+ assert_select "input#user_name[data-update-elements='{&quot;id&quot;:&quot;#this&quot;,&quot;ego&quot;:&quot;#that&quot;}']"
20
+ end
21
+
22
+ should "not add a data-update-elements attribute if not passed an :update_elements option" do
23
+ with_input_for @user, :name, :autocomplete, :url => '/test'
24
+ assert_no_select "input#user_name[data-update-elements]"
25
+ end
26
+
27
+ should "add arbitrary html options, if specified" do
28
+ with_input_for @user, :name, :autocomplete, :input_html => { :class => "superego" }
29
+ assert_select "input#user_name.superego"
30
+ end
31
+
32
+ end
33
+ end
data/test/test_helper.rb CHANGED
@@ -5,6 +5,11 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
6
 
7
7
  ENV["RAILS_ENV"] = "test"
8
+ module Rails
9
+ def self.env
10
+ ActiveSupport::StringInquirer.new("test")
11
+ end
12
+ end
8
13
 
9
14
  require 'rails/all'
10
15
  require 'mongoid'
@@ -0,0 +1,108 @@
1
+ class User
2
+ extend ActiveModel::Naming
3
+ include ActiveModel::Conversion
4
+
5
+ attr_accessor :id, :name, :description, :created_at, :updated_at
6
+
7
+ def initialize(options={})
8
+ @new_record = false
9
+ options.each do |key, value|
10
+ send("#{key}=", value)
11
+ end if options
12
+ end
13
+
14
+ def new_record!
15
+ @new_record = true
16
+ end
17
+
18
+ def persisted?
19
+ !@new_record
20
+ end
21
+ end
22
+
23
+ class MockController
24
+ attr_writer :action_name
25
+
26
+ def _routes
27
+ self
28
+ end
29
+
30
+ def action_name
31
+ defined?(@action_name) ? @action_name : "edit"
32
+ end
33
+
34
+ def url_for(*args)
35
+ "http://example.com"
36
+ end
37
+
38
+ def url_helpers
39
+ self
40
+ end
41
+
42
+ def hash_for_user_path(*args); end
43
+ def hash_for_users_path(*args); end
44
+ end
45
+
46
+ class MockResponse
47
+
48
+ def initialize(test_case)
49
+ @test_case = test_case
50
+ end
51
+
52
+ def content_type
53
+ 'text/html'
54
+ end
55
+
56
+ def body
57
+ @test_case.send :output_buffer
58
+ end
59
+ end
60
+
61
+ class ActionView::TestCase
62
+ include Rails3JQueryAutocomplete::Autocomplete
63
+ include SimpleForm::ActionViewExtensions::FormHelper
64
+
65
+ setup :set_controller
66
+ setup :set_response
67
+ setup :setup_new_user
68
+
69
+ def assert_no_select(selector, value = nil)
70
+ assert_select(selector, :text => value, :count => 0)
71
+ end
72
+
73
+ def with_concat_form_for(*args, &block)
74
+ concat simple_form_for(*args, &block)
75
+ end
76
+
77
+ def with_input_for(object, attribute_name, type, options={})
78
+ with_concat_form_for(object) do |f|
79
+ f.input(attribute_name, options.merge(:as => type))
80
+ end
81
+ end
82
+
83
+ def set_controller
84
+ @controller = MockController.new
85
+ end
86
+
87
+ def set_response
88
+ @response = MockResponse.new(self)
89
+ end
90
+
91
+ def setup_new_user
92
+ @user = User.new(
93
+ :id => 1,
94
+ :name => 'New in SimpleForm!',
95
+ :description => 'Hello!',
96
+ :created_at => Time.now
97
+ )
98
+ end
99
+
100
+ def protect_against_forgery?
101
+ false
102
+ end
103
+
104
+ def user_path(*args)
105
+ '/users'
106
+ end
107
+ alias :users_path :user_path
108
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails3-jquery-autocomplete
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-07 00:00:00.000000000 Z
12
+ date: 2012-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70131949113700 !ruby/object:Gem::Requirement
16
+ requirement: &70154298640540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70131949113700
24
+ version_requirements: *70154298640540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3-ruby
27
- requirement: &70131949113280 !ruby/object:Gem::Requirement
27
+ requirement: &70154298638880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70131949113280
35
+ version_requirements: *70154298638880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mongoid
38
- requirement: &70131949112740 !ruby/object:Gem::Requirement
38
+ requirement: &70154298635000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70131949112740
46
+ version_requirements: *70154298635000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mongo_mapper
49
- requirement: &70131949112240 !ruby/object:Gem::Requirement
49
+ requirement: &70154298653820 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,32 +54,76 @@ dependencies:
54
54
  version: '0.9'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70131949112240
57
+ version_requirements: *70154298653820
58
+ - !ruby/object:Gem::Dependency
59
+ name: mongo
60
+ requirement: &70154298665520 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 1.6.2
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70154298665520
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: bson_ext
60
- requirement: &70131949111780 !ruby/object:Gem::Requirement
71
+ requirement: &70154298664280 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
64
75
  - !ruby/object:Gem::Version
65
- version: 1.3.0
76
+ version: 1.6.2
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70131949111780
79
+ version_requirements: *70154298664280
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard
82
+ requirement: &70154298661600 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70154298661600
91
+ - !ruby/object:Gem::Dependency
92
+ name: guard-test
93
+ requirement: &70154298658700 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70154298658700
102
+ - !ruby/object:Gem::Dependency
103
+ name: test-unit
104
+ requirement: &70154298671440 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.2.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70154298671440
69
113
  - !ruby/object:Gem::Dependency
70
114
  name: shoulda
71
- requirement: &70131949111320 !ruby/object:Gem::Requirement
115
+ requirement: &70154298668460 !ruby/object:Gem::Requirement
72
116
  none: false
73
117
  requirements:
74
118
  - - ~>
75
119
  - !ruby/object:Gem::Version
76
- version: 2.11.1
120
+ version: 3.0.1
77
121
  type: :development
78
122
  prerelease: false
79
- version_requirements: *70131949111320
123
+ version_requirements: *70154298668460
80
124
  - !ruby/object:Gem::Dependency
81
125
  name: uglifier
82
- requirement: &70131949110940 !ruby/object:Gem::Requirement
126
+ requirement: &70154314667660 !ruby/object:Gem::Requirement
83
127
  none: false
84
128
  requirements:
85
129
  - - ! '>='
@@ -87,10 +131,10 @@ dependencies:
87
131
  version: '0'
88
132
  type: :development
89
133
  prerelease: false
90
- version_requirements: *70131949110940
134
+ version_requirements: *70154314667660
91
135
  - !ruby/object:Gem::Dependency
92
136
  name: rr
93
- requirement: &70131949110480 !ruby/object:Gem::Requirement
137
+ requirement: &70154314666660 !ruby/object:Gem::Requirement
94
138
  none: false
95
139
  requirements:
96
140
  - - ! '>='
@@ -98,7 +142,18 @@ dependencies:
98
142
  version: '0'
99
143
  type: :development
100
144
  prerelease: false
101
- version_requirements: *70131949110480
145
+ version_requirements: *70154314666660
146
+ - !ruby/object:Gem::Dependency
147
+ name: simple_form
148
+ requirement: &70154314664920 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '1.5'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *70154314664920
102
157
  description: Use jQuery's autocomplete plugin with Rails 3.
103
158
  email: david.padilla@crowdint.com
104
159
  executables: []
@@ -134,8 +189,10 @@ files:
134
189
  - test/lib/rails3-jquery-autocomplete/orm/active_record_test.rb
135
190
  - test/lib/rails3-jquery-autocomplete/orm/mongo_mapper_test.rb
136
191
  - test/lib/rails3-jquery-autocomplete/orm/mongoid_test.rb
192
+ - test/lib/rails3-jquery-autocomplete/simple_form_plugin_test.rb
137
193
  - test/lib/rails3-jquery-autocomplete_test.rb
138
194
  - test/test_helper.rb
195
+ - test/view_test_helper.rb
139
196
  homepage: http://github.com/crowdint/rails3-jquery-autocomplete
140
197
  licenses: []
141
198
  post_install_message:
@@ -148,12 +205,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
205
  - - ! '>='
149
206
  - !ruby/object:Gem::Version
150
207
  version: '0'
208
+ segments:
209
+ - 0
210
+ hash: -2709210459065488220
151
211
  required_rubygems_version: !ruby/object:Gem::Requirement
152
212
  none: false
153
213
  requirements:
154
214
  - - ! '>='
155
215
  - !ruby/object:Gem::Version
156
216
  version: '0'
217
+ segments:
218
+ - 0
219
+ hash: -2709210459065488220
157
220
  requirements: []
158
221
  rubyforge_project:
159
222
  rubygems_version: 1.8.11
@@ -168,5 +231,7 @@ test_files:
168
231
  - test/lib/rails3-jquery-autocomplete/orm/active_record_test.rb
169
232
  - test/lib/rails3-jquery-autocomplete/orm/mongo_mapper_test.rb
170
233
  - test/lib/rails3-jquery-autocomplete/orm/mongoid_test.rb
234
+ - test/lib/rails3-jquery-autocomplete/simple_form_plugin_test.rb
171
235
  - test/lib/rails3-jquery-autocomplete_test.rb
172
236
  - test/test_helper.rb
237
+ - test/view_test_helper.rb