ransack 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d33a76673ff5b03a95d1b2ea72c5fcc552fc24a3
4
- data.tar.gz: 061c963998e43b654a28e0b3e7e9501feee14192
3
+ metadata.gz: c740816de011eb6b10728dc32b58e179304fad94
4
+ data.tar.gz: 07fb384c320453fe1176fc9c51261721318fe708
5
5
  SHA512:
6
- metadata.gz: aa17a37043b1924961e17631865374576b78584068785c91331c06567b285ce10764b837c78f54f740570696e2ffd620e6681a391600074f2cc33d5d73956a1c
7
- data.tar.gz: 7f3253f6d31f941546e0244389dcff4be6ec55e90511954c0eb0151447a27051b2c98a2d1b8e57ed89c279e98c1c608c5ee24a56115f8095aeed2038130ff7cb
6
+ metadata.gz: 6647e2d472b4efd1e0051bd293698011c5a89ffdd096456c75da5b44f58b8ac825d3a5292d41a174e6b01e43bfd0bfc996685ee0fd30a13af91eaabb920162e3
7
+ data.tar.gz: 09e01482d289cfca68527dfce6161a8cf028846da7d510d927b59e155792e1c82b2aa3fc02eec5a4667b47b0fa08a13eb0fb2d542f3e91b368917540d13ce7ed
data/CHANGELOG.md CHANGED
@@ -2,6 +2,32 @@
2
2
  This change log was started in August 2014. All notable changes to this project
3
3
  henceforth should be documented here.
4
4
 
5
+ ## Version 1.5.1 - 2014-10-30
6
+ ### Added
7
+
8
+ * Add base specs for search on fields with `_start` and `_end`.
9
+
10
+ *Jon Atack*
11
+
12
+ * Add a failing spec for detecting attribute fields containing `_and_` that
13
+ needs to be fixed. Method names containing `_and_` and `_or_` are still not
14
+ parsed/detected correctly.
15
+
16
+ *Jon Atack*
17
+
18
+ ### Fixed
19
+
20
+ * Fix a regression caused by incorrect string constants in context.rb.
21
+
22
+ *Kazuhiro NISHIYAMA*
23
+
24
+ ### Changed
25
+
26
+ * Remove duplicate code in spec/support/schema.rb.
27
+
28
+ *Jon Atack*
29
+
30
+
5
31
  ## Version 1.5.0 - 2014-10-26
6
32
  ### Added
7
33
 
@@ -48,14 +74,15 @@ henceforth should be documented here.
48
74
 
49
75
  *Jon Atack*
50
76
 
51
- * Improve `attribute_method?` parsing for method names containing `_and_` and
52
- `_or_`. Attributes named like `foo_and_bar` or `foo_or_bar` are recognized
53
- now instead of running failing checks for `foo` and `bar`.
77
+ * Improve `attribute_method?` parsing for attribute names containing `_and_`
78
+ and `_or_`. Attributes named like `foo_and_bar` or `foo_or_bar` are
79
+ recognized now instead of running failing checks for `foo` and `bar`.
80
+ CORRECTION October 28, 2014: this feature is still not working!
54
81
 
55
82
  *Joe Yates*
56
83
 
57
- * Improve `attribute_method?` parsing for method names ending with a
58
- predicate like `_start` and `_end`. For instance, a `life_start` attribute
84
+ * Improve `attribute_method?` parsing for attribute names ending with a
85
+ predicate like `_start` and `_end`. For instance, a `foo_start` attribute
59
86
  is now recognized instead of raising a NoMethodError.
60
87
 
61
88
  *Timo Schilling*, *Jon Atack*
@@ -158,7 +158,7 @@ module Ransack
158
158
  def get_association(str, parent = @base)
159
159
  klass = klassify parent
160
160
  ransackable_association?(str, klass) &&
161
- klass.reflect_on_all_associations.detect { |a| a.name.to_s == str }
161
+ klass.reflect_on_all_associations.detect { |a| a.name.to_s == str }
162
162
  end
163
163
 
164
164
  def join_dependency(relation)
@@ -175,13 +175,13 @@ module Ransack
175
175
  buckets = relation.joins_values.group_by do |join|
176
176
  case join
177
177
  when String
178
- STRING_JOIN
178
+ Ransack::Constants::STRING_JOIN
179
179
  when Hash, Symbol, Array
180
- ASSOCIATION_JOIN
180
+ Ransack::Constants::ASSOCIATION_JOIN
181
181
  when JoinDependency, JoinDependency::JoinAssociation
182
- STASHED_JOIN
182
+ Ransack::Constants::STASHED_JOIN
183
183
  when Arel::Nodes::Join
184
- JOIN_NODE
184
+ Ransack::Constants::JOIN_NODE
185
185
  else
186
186
  raise 'unknown class: %s' % join.class.name
187
187
  end
@@ -1,3 +1,3 @@
1
1
  module Ransack
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
@@ -130,15 +130,52 @@ module Ransack
130
130
  end
131
131
 
132
132
  it "should function correctly when using fields with % in them" do
133
- Person.create!(:name => "110%-er")
133
+ p = Person.create!(:name => "110%-er")
134
134
  s = Person.search(:name_cont => "10%")
135
- expect(s.result.exists?).to be true
135
+ expect(s.result.to_a).to eq [p]
136
136
  end
137
137
 
138
138
  it "should function correctly when using fields with backslashes in them" do
139
- Person.create!(:name => "\\WINNER\\")
139
+ p = Person.create!(:name => "\\WINNER\\")
140
140
  s = Person.search(:name_cont => "\\WINNER\\")
141
- expect(s.result.exists?).to be true
141
+ expect(s.result.to_a).to eq [p]
142
+ end
143
+
144
+ it "should function correctly when an attribute name ends with '_start'" do
145
+ p = Person.create!(:new_start => 'Bar and foo', :name => 'Xiang')
146
+
147
+ s = Person.search(:new_start_end => ' and foo')
148
+ expect(s.result.to_a).to eq [p]
149
+
150
+ s = Person.search(:name_or_new_start_start => 'Xia')
151
+ expect(s.result.to_a).to eq [p]
152
+
153
+ s = Person.search(:new_start_or_name_end => 'iang')
154
+ expect(s.result.to_a).to eq [p]
155
+ end
156
+
157
+ it "should function correctly when an attribute name ends with '_end'" do
158
+ p = Person.create!(:stop_end => 'Foo and bar', :name => 'Marianne')
159
+
160
+ s = Person.search(:stop_end_start => 'Foo and')
161
+ expect(s.result.to_a).to eq [p]
162
+
163
+ s = Person.search(:stop_end_or_name_end => 'anne')
164
+ expect(s.result.to_a).to eq [p]
165
+
166
+ s = Person.search(:name_or_stop_end_end => ' bar')
167
+ expect(s.result.to_a).to eq [p]
168
+ end
169
+
170
+ it "should function correctly when an attribute name has 'and' in it" do
171
+ # FIXME: this test does not pass!
172
+ p = Person.create!(:terms_and_conditions => true)
173
+ s = Person.search(:terms_and_conditions_eq => true)
174
+ # search is not detecting the attribute
175
+ puts "
176
+ FIXME: Search not detecting the `terms_and_conditions` attribute in
177
+ base_spec.rb, line 178: #{s.result.to_sql}"
178
+ # expect(s.result.to_a).to eq [p]
142
179
  end
143
180
 
144
181
  it 'allows sort by "only_sort" field' do
@@ -66,21 +66,6 @@ class Person < ActiveRecord::Base
66
66
  end
67
67
  end
68
68
 
69
- def self.ransackable_attributes(auth_object = nil)
70
- if auth_object == :admin
71
- column_names + _ransackers.keys - ['only_sort']
72
- else
73
- column_names + _ransackers.keys - ['only_sort', 'only_admin']
74
- end
75
- end
76
-
77
- def self.ransortable_attributes(auth_object = nil)
78
- if auth_object == :admin
79
- column_names + _ransackers.keys - ['only_search']
80
- else
81
- column_names + _ransackers.keys - ['only_search', 'only_admin']
82
- end
83
- end
84
69
  end
85
70
 
86
71
  class Article < ActiveRecord::Base
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ransack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernie Miller
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-10-26 00:00:00.000000000 Z
13
+ date: 2014-10-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack