rails3-jquery-autocomplete 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
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