hydra_attribute 0.1.3 → 0.2.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ **0.2.0 (June 13, 2012)**
2
+ * Implement `group` method for `ActiveRecord::Relation` object
3
+
1
4
  **0.1.3 (June 11, 2012)**
2
5
  * Fix bug when quoted column is passed to `ActiveRecord::Relation` method as a parameter
3
6
 
data/README.md CHANGED
@@ -114,6 +114,12 @@ SimpleProduct.select([:code, :price]).map(&:attributes)
114
114
  => [{"code"=>"100", "price"=>2.75}, {"code"=>"101", "price"=>3.75}, {"code"=>"102", "price"=>4.5}, {"code"=>"103", "price"=>4.5}, {"code"=>"104", "price"=>5.0}]
115
115
  ```
116
116
 
117
+ ##### "group"
118
+ ```shell
119
+ SimpleProduct.group(:name, :price).count
120
+ => {["Book", 2.75]=>1, ["Book", 3.75]=>1, ["Book", 4.5]=>2, ["Book", 5.0]=>1}
121
+ ```
122
+
117
123
  ## Contributing
118
124
 
119
125
  1. Fork it
@@ -24,12 +24,7 @@ Feature: helper methods for hydra attributes
24
24
  Then hydra attribute value before type cast should be returned
25
25
 
26
26
  Background: create models and describe hydra attributes
27
- Given removed constants if they exist:
28
- | name |
29
- | GroupProduct |
30
- | SimpleProduct |
31
- | Product |
32
- And create model class "Product"
27
+ Given create model class "Product"
33
28
  And create model class "SimpleProduct" as "Product" with hydra attributes:
34
29
  | type | name |
35
30
  | string | code |
@@ -5,12 +5,7 @@ Feature: define hydra attributes
5
5
  Model should not respond to hydra attribute if it isn't described in it class.
6
6
 
7
7
  Background: create models and describe hydra attributes
8
- Given removed constants if they exist:
9
- | name |
10
- | GroupProduct |
11
- | SimpleProduct |
12
- | Product |
13
- And create model class "Product"
8
+ Given create model class "Product"
14
9
  And create model class "SimpleProduct" as "Product" with hydra attributes:
15
10
  | type | name |
16
11
  | string | code |
@@ -6,12 +6,7 @@ Feature: hydra attribute associations
6
6
  Then hydra attribute association should not be loaded automatically
7
7
 
8
8
  Background: create models and describe hydra attributes
9
- Given removed constants if they exist:
10
- | name |
11
- | GroupProduct |
12
- | SimpleProduct |
13
- | Product |
14
- And create model class "Product"
9
+ Given create model class "Product"
15
10
  And create model class "SimpleProduct" as "Product" with hydra attributes:
16
11
  | type | name |
17
12
  | string | code |
@@ -0,0 +1,43 @@
1
+ Feature: group conditions by hydra attributes
2
+ When group by hydra attribute
3
+ Then correct table should be joined and group condition should be added
4
+
5
+ Background: create models and describe hydra attributes
6
+ Given create model class "Product"
7
+ And create model class "SimpleProduct" as "Product" with hydra attributes:
8
+ | type | name |
9
+ | integer | code |
10
+ | string | title |
11
+ | integer | total |
12
+ And create models:
13
+ | model | attributes |
14
+ | SimpleProduct | name=[string:a] code=[integer:1] title=[string:q] total=[integer:5] |
15
+ | SimpleProduct | name=[string:b] code=[integer:2] title=[string:w] total=[integer:5] |
16
+ | SimpleProduct | name=[string:b] code=[integer:3] title=[string:w] total=[nil:] |
17
+ | SimpleProduct | name=[string:c] code=[integer:4] title=[string:e] |
18
+
19
+ Scenario Outline: group by attributes
20
+ When group "SimpleProduct" by "<group by>"
21
+ Then total records should be "<total>"
22
+ And "first" record should have "<first attribute>"
23
+ And "last" record should have "<last attribute>"
24
+
25
+ Scenarios: group attributes
26
+ | group by | total | first attribute | last attribute |
27
+ | code | 4 | code=[integer:1] | code=[integer:4] |
28
+ | name | 3 | name=[string:a] code=[integer:1] | name=[string:c] code=[integer:4] |
29
+ | name title | 3 | name=[string:a] code=[integer:1] | name=[string:c] code=[integer:4] |
30
+
31
+ Scenario Outline: group by attributes with filter
32
+ When group "SimpleProduct" by "<group by>"
33
+ And filter records by "<filter>"
34
+ Then total records should be "<total>"
35
+ And "first" record should have "<first attribute>"
36
+ And "last" record should have "<last attribute>"
37
+
38
+ Scenarios: group attributes
39
+ | group by | filter | total | first attribute | last attribute |
40
+ | code | title=[string:w] | 2 | code=[integer:2] | code=[integer:3] |
41
+ | name | title=[string:w] | 1 | name=[string:b] title=[string:w] | name=[string:b] title=[string:w] |
42
+ | name title | title=[string:w] | 1 | name=[string:b] title=[string:w] | name=[string:b] title=[string:w] |
43
+ | name title | total=[nil:] | 2 | name=[string:b] title=[string:w] | name=[string:c] title=[string:e] |
@@ -12,12 +12,7 @@ Feature: order conditions by hydra attributes
12
12
  Then old hydra attributes should be removed and new should be added
13
13
 
14
14
  Background: create models and describe hydra attributes
15
- Given removed constants if they exist:
16
- | name |
17
- | GroupProduct |
18
- | SimpleProduct |
19
- | Product |
20
- And create model class "Product"
15
+ Given create model class "Product"
21
16
  And create model class "SimpleProduct" as "Product" with hydra attributes:
22
17
  | type | name |
23
18
  | integer | code |
@@ -3,12 +3,7 @@ Feature: select concrete attributes
3
3
  Then hydra attribute table should be joined and concrete attribute should be selected
4
4
 
5
5
  Background: create models and describe hydra attributes
6
- Given removed constants if they exist:
7
- | name |
8
- | GroupProduct |
9
- | SimpleProduct |
10
- | Product |
11
- And create model class "Product"
6
+ Given create model class "Product"
12
7
  And create model class "SimpleProduct" as "Product" with hydra attributes:
13
8
  | type | name |
14
9
  | integer | code |
@@ -6,12 +6,7 @@ Feature: hydra attribute where conditions
6
6
  Then records with nil value should be selected or records which don't have this hydra attribute
7
7
 
8
8
  Background: create models and describe hydra attributes
9
- Given removed constants if they exist:
10
- | name |
11
- | GroupProduct |
12
- | SimpleProduct |
13
- | Product |
14
- And create model class "Product"
9
+ Given create model class "Product"
15
10
  And create model class "SimpleProduct" as "Product" with hydra attributes:
16
11
  | type | name |
17
12
  | string | code |
@@ -0,0 +1,44 @@
1
+ When /^filter "([^"]+)" by:$/ do |klass, table|
2
+ condition = table.hashes.each_with_object({}) { |item, hash| hash[item[:field].to_sym] = typecast_value(item[:value]) }
3
+ @records = Object.const_get(klass).where(condition)
4
+ end
5
+
6
+ When /^filter "([^"]+)" records by "([^"]+)"$/ do |klass, attribute|
7
+ @records = Object.const_get(klass)
8
+ step %Q(filter records by "#{attribute}")
9
+ end
10
+
11
+ When /^filter records by "([^"]+)"$/ do |attribute|
12
+ name, value = typecast_attribute(attribute)
13
+ @records = @records.where(name => value)
14
+ end
15
+
16
+ When /^group "([^"]+)" by "([^"]+)"$/ do |klass, attributes|
17
+ @records = Object.const_get(klass)
18
+ step %Q(group by "#{attributes}")
19
+ end
20
+
21
+ When /^group by "([^"]+)"$/ do |attributes|
22
+ @records = @records.group(attributes.split)
23
+ end
24
+
25
+ When /^(order|reorder) "([^"]+)" records by "([^"]+)"$/ do |sort_method, klass, attributes|
26
+ @records = Object.const_get(klass)
27
+ step %Q(#{sort_method} records by "#{attributes}")
28
+ end
29
+
30
+ When /^(order|reorder) records by "([^"]+)"$/ do |sort_method, attributes|
31
+ reverse = false
32
+ fields = attributes.split.inject([]) do |items, attribute|
33
+ name, direction = attribute.split('=')
34
+ reverse = true if direction == 'desc'
35
+ items << name.to_sym
36
+ end
37
+
38
+ @records = @records.send(sort_method, fields)
39
+ @records = @records.reverse_order if reverse
40
+ end
41
+
42
+ When /^"([^"]+)" select only the following columns "([^"]+)"$/ do |klass, columns|
43
+ @records = Object.const_get(klass).select(columns.split(/\s+/).map(&:to_sym))
44
+ end
@@ -6,42 +6,6 @@ When /^select "(first|last)" "([^"]+)" record$/ do |method, klass|
6
6
  @record = Object.const_get(klass).send(method)
7
7
  end
8
8
 
9
- When /^filter "([^"]+)" by:$/ do |klass, table|
10
- condition = table.hashes.each_with_object({}) { |item, hash| hash[item[:field].to_sym] = typecast_value(item[:value]) }
11
- @records = Object.const_get(klass).where(condition)
12
- end
13
-
14
- When /^filter "([^"]+)" records by "([^"]+)"$/ do |klass, attribute|
15
- @records = Object.const_get(klass)
16
- step %Q(filter records by "#{attribute}")
17
- end
18
-
19
- When /^filter records by "([^"]+)"$/ do |attribute|
20
- name, value = typecast_attribute(attribute)
21
- @records = @records.where(name => value)
22
- end
23
-
24
- When /^(order|reorder) "([^"]+)" records by "([^"]+)"$/ do |sort_method, klass, attributes|
25
- @records = Object.const_get(klass)
26
- step %Q(#{sort_method} records by "#{attributes}")
27
- end
28
-
29
- When /^(order|reorder) records by "([^"]+)"$/ do |sort_method, attributes|
30
- reverse = false
31
- fields = attributes.split.inject([]) do |items, attribute|
32
- name, direction = attribute.split('=')
33
- reverse = true if direction == 'desc'
34
- items << name.to_sym
35
- end
36
-
37
- @records = @records.send(sort_method, fields)
38
- @records = @records.reverse_order if reverse
39
- end
40
-
41
- When /^"([^"]+)" select only the following columns "([^"]+)"$/ do |klass, columns|
42
- @records = Object.const_get(klass).select(columns.split(/\s+/).map(&:to_sym))
43
- end
44
-
45
9
  Then /^record should have the following ((?:hydra )?attributes(?: before type cast)?) "([^"]+)" in attribute hash$/ do |method, attributes|
46
10
  method = method.gsub(/\s+/, '_')
47
11
  typecast_attributes(attributes).each do |(name, value)|
@@ -55,8 +19,9 @@ Then /^record (read attribute(?: before type cast)?) "([^"]+)" and value should
55
19
  end
56
20
 
57
21
  Then /^"(first|last)" record should have "([^"]+)"$/ do |method, attribute|
58
- name, value = typecast_attribute(attribute)
59
- @records.send(method).send(name).should == value
22
+ typecast_attributes(attribute).each do |(name, value)|
23
+ @records.send(method).send(name).should == value
24
+ end
60
25
  end
61
26
 
62
27
  Then /^records should have the following attributes:$/ do |table|
@@ -82,7 +47,7 @@ Then /^records should raise "([^"]+)" when call the following "([^"]+)"$/ do |er
82
47
  end
83
48
 
84
49
  Then /^total records should be "([^"]+)"$/ do |count|
85
- @records.should have(count.to_i).items
50
+ @records.to_a.should have(count.to_i).items
86
51
  end
87
52
 
88
53
  Then /^records "(should|should_not)" have loaded associations:$/ do |should, table|
@@ -15,6 +15,9 @@ Before do
15
15
  const = HydraAttribute.config.associated_const_name(type)
16
16
  HydraAttribute.send(:remove_const, const) if HydraAttribute.const_defined?(const)
17
17
  end
18
+ [:Product, :SimpleProduct, :GroupProduct].each do |const|
19
+ Object.send(:remove_const, const) if Object.const_defined?(const)
20
+ end
18
21
  ActiveSupport::Dependencies::Reference.clear!
19
22
  DatabaseCleaner.start
20
23
  end
@@ -2,12 +2,7 @@ Feature: create model
2
2
  Model should be created with typecast hydra attributes.
3
3
 
4
4
  Background: create models and describe hydra attributes
5
- Given removed constants if they exist:
6
- | name |
7
- | GroupProduct |
8
- | SimpleProduct |
9
- | Product |
10
- And create model class "Product"
5
+ Given create model class "Product"
11
6
  And create model class "SimpleProduct" as "Product" with hydra attributes:
12
7
  | type | name |
13
8
  | string | code |
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/kostyantyn/Sites/github/gems/hydra_attribute
3
3
  specs:
4
- hydra_attribute (0.1.3.beta1)
4
+ hydra_attribute (0.2.0.beta1)
5
5
  activerecord (>= 3.1.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/kostyantyn/Sites/github/gems/hydra_attribute
3
3
  specs:
4
- hydra_attribute (0.1.3.beta1)
4
+ hydra_attribute (0.2.0.beta1)
5
5
  activerecord (>= 3.1.0)
6
6
 
7
7
  GEM
@@ -39,10 +39,11 @@ module HydraAttribute
39
39
  end
40
40
 
41
41
  def build_arel
42
- @order_values = build_order_values_for_arel(@order_values.uniq.reject(&:blank?))
42
+ @group_values = build_hydra_values_for_arel(@group_values.uniq.reject(&:blank?))
43
+ @order_values = build_hydra_values_for_arel(@order_values.uniq.reject(&:blank?))
43
44
 
44
45
  if instance_variable_defined?(:@reorder_value) and instance_variable_get(:@reorder_value).present? # for compatibility with 3.1.x
45
- @reorder_value = build_order_values_for_arel(@reorder_value.uniq.reject(&:blank?))
46
+ @reorder_value = build_hydra_values_for_arel(@reorder_value.uniq.reject(&:blank?))
46
47
  end
47
48
 
48
49
  @hydra_select_values, @select_values = @select_values.partition { |value| klass.hydra_attribute_names.include?(value.to_s) }
@@ -94,7 +95,7 @@ module HydraAttribute
94
95
  @hydra_attr_helper ||= Helper.new(self)
95
96
  end
96
97
 
97
- def build_order_values_for_arel(collection)
98
+ def build_hydra_values_for_arel(collection)
98
99
  collection.map do |attribute|
99
100
  attribute = attribute.respond_to?(:to_sql) ? attribute.to_sql : attribute.to_s
100
101
  if klass.hydra_attribute_names.include?(attribute)
@@ -5,11 +5,15 @@ module HydraAttribute
5
5
 
6
6
  included do
7
7
  include QueryMethods
8
+
9
+ target = ::ActiveRecord::VERSION::STRING.starts_with?('3.1.') ? :to_a : :exec_queries
10
+ alias_method :__old_exec_queries__, target
11
+ alias_method target, :__exec_queries__
8
12
  end
9
13
 
10
- define_method HydraAttribute.config.relation_execute_method do
14
+ def __exec_queries__
11
15
  return @records if loaded?
12
- records = super()
16
+ records = __old_exec_queries__
13
17
  return records if records.empty?
14
18
 
15
19
  limit_values = select_values.any? || hydra_select_values.any?
@@ -35,13 +35,5 @@ module HydraAttribute
35
35
  def associated_const_name(type)
36
36
  "#{type.to_s.titlecase}Attribute".to_sym
37
37
  end
38
-
39
- def relation_execute_method
40
- if ::ActiveRecord::VERSION::MINOR > 1
41
- :exec_queries
42
- else
43
- :to_a
44
- end
45
- end
46
38
  end
47
39
  end
@@ -1,3 +1,3 @@
1
1
  module HydraAttribute
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -93,13 +93,13 @@ describe HydraAttribute::ActiveRecord::Relation::QueryMethods do
93
93
  end
94
94
 
95
95
  it 'should update @order_values before generate the arel object' do
96
- relation.stub(build_order_values_for_arel: %w(build_order))
96
+ relation.stub(build_hydra_values_for_arel: %w(build_order))
97
97
  relation.build_arel.should == arel
98
98
  relation.instance_variable_get(:@order_values).should == %w(build_order)
99
99
  end
100
100
  end
101
101
 
102
- describe '#build_order_values_for_arel' do
102
+ describe '#build_hydra_values_for_arel' do
103
103
  let(:connection) do
104
104
  conn = mock
105
105
  conn.stub(:quote_column_name) { |column| column.to_s }
@@ -124,14 +124,14 @@ describe HydraAttribute::ActiveRecord::Relation::QueryMethods do
124
124
 
125
125
  describe 'collection has not hydra attributes' do
126
126
  it 'should return the same collection' do
127
- relation.send(:build_order_values_for_arel, %w(name zone)).should == %w(product.name product.zone)
127
+ relation.send(:build_hydra_values_for_arel, %w(name zone)).should == %w(product.name product.zone)
128
128
  relation.joins_values.should == []
129
129
  end
130
130
  end
131
131
 
132
132
  describe 'collection has hydra attributes' do
133
133
  it 'should change hydra attributes and join hydra tables' do
134
- relation.send(:build_order_values_for_arel, %w(name code title price)).should == %w(product.name code_inner.value title_.value price_.value)
134
+ relation.send(:build_hydra_values_for_arel, %w(name code title price)).should == %w(product.name code_inner.value title_.value price_.value)
135
135
  relation.joins_values.should == %w(price__join)
136
136
  end
137
137
  end
@@ -1,91 +1,65 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe HydraAttribute::ActiveRecord::Relation do
4
- def record_class(loaded_associations = false)
5
- Class.new do
6
4
 
7
- @hydra_attributes = {'code' => :string}
8
- define_singleton_method :hydra_attribute_types do
9
- [:string]
10
- end
11
-
12
- define_singleton_method :hydra_attribute_names do
13
- ['code']
14
- end
15
-
16
- define_singleton_method :hydra_attributes do
17
- @hydra_attributes
18
- end
19
-
20
- define_method :association do |_|
21
- Class.new do
22
- define_singleton_method :loaded? do
23
- loaded_associations
24
- end
25
- end
26
- end
27
- end
5
+ let(:record_class) do
6
+ mock(:record_class, hydra_attribute_types: [:string], hydra_attribute_names: %w(code), hydra_attributes: {'code' => :string})
28
7
  end
29
8
 
30
- def relation_function(records)
31
- Module.new do
32
- define_method :loaded? do
33
- false
34
- end
9
+ let(:record) do
10
+ mock(:record, class: record_class, association: mock(loaded?: false))
11
+ end
35
12
 
36
- define_method :select_values do
37
- []
38
- end
13
+ let(:loaded_record) do
14
+ mock(:loaded_record, class: record_class, association: mock(loaded?: true))
15
+ end
39
16
 
40
- define_method :hydra_select_values do
41
- []
42
- end
17
+ let(:exec_method) do
18
+ ::ActiveRecord::VERSION::STRING.start_with?('3.1.') ? :to_a : :exec_queries
19
+ end
43
20
 
44
- define_method HydraAttribute.config.relation_execute_method do
45
- records
46
- end
21
+ let(:relation) do
22
+ mock_relation = mock(:relation, loaded?: false, select_values: [], hydra_select_values: [])
47
23
 
48
- define_method :klass do
49
- records.first.class
50
- end
24
+ mock_relation.stub(exec_method).and_return(records)
25
+ mock_relation.stub(:klass).and_return(records.first.class)
26
+ mock_relation.stub(:where).and_return(mock_relation)
27
+ mock_relation
28
+ end
51
29
 
52
- define_method :where do |*|
53
- self
54
- end
55
- end
30
+ let(:records) do
31
+ [record]
56
32
  end
57
33
 
58
- let(:records) { [record_class.new] }
59
- let(:ancestor) { relation_function(records) }
60
- let(:klass) { Class.new.extend(ancestor).extend(HydraAttribute::ActiveRecord::Relation) }
34
+ before do
35
+ relation.singleton_class.send(:include, HydraAttribute::ActiveRecord::Relation)
36
+ end
61
37
 
62
- describe "##{HydraAttribute.config.relation_execute_method}" do
38
+ describe "#exec_queries" do
63
39
  describe 'parent method return one record' do
64
40
  it 'should return one record' do
65
- klass.send(HydraAttribute.config.relation_execute_method).should have(1).record
41
+ relation.send(exec_method).should have(1).record
66
42
  end
67
43
  end
68
44
 
69
45
  describe 'parent method returns two records' do
70
- let(:records) { [record_class(loaded_associations).new, record_class(loaded_associations).new] }
71
-
72
46
  describe 'association models are already loaded' do
73
- let(:loaded_associations) { true }
47
+ let(:records) { [loaded_record, loaded_record] }
74
48
 
75
49
  it 'should return two record' do
76
- klass.send(HydraAttribute.config.relation_execute_method).should have(2).records
50
+ relation.send(exec_method).should have(2).records
77
51
  end
78
52
  end
79
53
 
80
54
  describe 'association models are not yet loaded' do
81
- let(:loaded_associations) { false }
55
+ let(:records) { [record, record] }
82
56
 
83
57
  before do
84
58
  ::ActiveRecord::Associations::Preloader.should_receive(:new).with(records, :hydra_string_attributes).and_return(mock(run: records))
85
59
  end
86
60
 
87
61
  it 'should return two record' do
88
- klass.send(HydraAttribute.config.relation_execute_method).should have(2).records
62
+ relation.send(exec_method).should have(2).records
89
63
  end
90
64
  end
91
65
  end
@@ -3,9 +3,13 @@ require 'spec_helper'
3
3
  describe HydraAttribute::ActiveRecord::Scoping do
4
4
  describe '#scoped' do
5
5
  let(:ancestor) do
6
+ method = ::ActiveRecord::VERSION::STRING.starts_with?('3.1.') ? :to_a : :exec_queries
7
+ instance = mock(:instance_relation, where: nil, method => nil)
8
+
6
9
  Module.new do
7
- def scoped(*) self end
8
- def where(*) self end
10
+ define_method :scoped do |*|
11
+ instance
12
+ end
9
13
  end
10
14
  end
11
15
 
@@ -62,35 +62,4 @@ describe HydraAttribute::Configuration do
62
62
  config.associated_const_name(:string).should == :StringAttribute
63
63
  end
64
64
  end
65
-
66
- describe '#relation_execute_method' do
67
- after do
68
- ::ActiveRecord::VERSION.send(:remove_const, :MINOR)
69
- ::ActiveRecord::VERSION.const_set(:MINOR, @old_value)
70
- end
71
-
72
- describe 'ActiveRecord::VERSION::MINOR is great than 1' do
73
- before do
74
- @old_value = ::ActiveRecord::VERSION::MINOR
75
- ::ActiveRecord::VERSION.send(:remove_const, :MINOR)
76
- ::ActiveRecord::VERSION.const_set(:MINOR, 2)
77
- end
78
-
79
- it 'should return :exec_queries' do
80
- config.relation_execute_method.should == :exec_queries
81
- end
82
- end
83
-
84
- describe 'ActiveRecord::VERSION::MINOR is less than or equal 1' do
85
- before do
86
- @old_value = ::ActiveRecord::VERSION::MINOR
87
- ::ActiveRecord::VERSION.send(:remove_const, :MINOR)
88
- ::ActiveRecord::VERSION.const_set(:MINOR, 1)
89
- end
90
-
91
- it 'should return :to_a' do
92
- config.relation_execute_method.should == :to_a
93
- end
94
- end
95
- end
96
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra_attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
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-06-10 00:00:00.000000000Z
12
+ date: 2012-06-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &2153039400 !ruby/object:Gem::Requirement
16
+ requirement: &2151761260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153039400
24
+ version_requirements: *2151761260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2153032420 !ruby/object:Gem::Requirement
27
+ requirement: &2151759920 !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: *2153032420
35
+ version_requirements: *2151759920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &2153031960 !ruby/object:Gem::Requirement
38
+ requirement: &2151757300 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2153031960
46
+ version_requirements: *2151757300
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
- requirement: &2153031540 !ruby/object:Gem::Requirement
49
+ requirement: &2151755780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153031540
57
+ version_requirements: *2151755780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: database_cleaner
60
- requirement: &2153031120 !ruby/object:Gem::Requirement
60
+ requirement: &2151753880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153031120
68
+ version_requirements: *2151753880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: appraisal
71
- requirement: &2153030700 !ruby/object:Gem::Requirement
71
+ requirement: &2151747420 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2153030700
79
+ version_requirements: *2151747420
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rake
82
- requirement: &2153030280 !ruby/object:Gem::Requirement
82
+ requirement: &2151746260 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2153030280
90
+ version_requirements: *2151746260
91
91
  description: hydra_attribute is an implementation of EAV pattern for ActiveRecord
92
92
  models.
93
93
  email: kostya.stepanyuk@gmail.com
@@ -107,16 +107,18 @@ files:
107
107
  - features/attribute_methods.feature
108
108
  - features/define_attributes.feature
109
109
  - features/load_associations.feature
110
- - features/order_conditions.feature
111
- - features/select_attributes.feature
110
+ - features/query_methods/group.feature
111
+ - features/query_methods/order.feature
112
+ - features/query_methods/select.feature
113
+ - features/query_methods/where.feature
112
114
  - features/step_definitions/class_steps.rb
113
115
  - features/step_definitions/model_steps.rb
116
+ - features/step_definitions/query_methods.rb
114
117
  - features/step_definitions/record_steps.rb
115
118
  - features/support/env.rb
116
119
  - features/support/schema.rb
117
120
  - features/support/world.rb
118
121
  - features/typecast_attributes.feature
119
- - features/where_conditions.feature
120
122
  - gemfiles/3.1.gemfile
121
123
  - gemfiles/3.1.gemfile.lock
122
124
  - gemfiles/3.2.gemfile
@@ -170,6 +172,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
172
  - - ! '>='
171
173
  - !ruby/object:Gem::Version
172
174
  version: '0'
175
+ segments:
176
+ - 0
177
+ hash: -33625434151420815
173
178
  requirements: []
174
179
  rubyforge_project:
175
180
  rubygems_version: 1.8.10
@@ -181,16 +186,18 @@ test_files:
181
186
  - features/attribute_methods.feature
182
187
  - features/define_attributes.feature
183
188
  - features/load_associations.feature
184
- - features/order_conditions.feature
185
- - features/select_attributes.feature
189
+ - features/query_methods/group.feature
190
+ - features/query_methods/order.feature
191
+ - features/query_methods/select.feature
192
+ - features/query_methods/where.feature
186
193
  - features/step_definitions/class_steps.rb
187
194
  - features/step_definitions/model_steps.rb
195
+ - features/step_definitions/query_methods.rb
188
196
  - features/step_definitions/record_steps.rb
189
197
  - features/support/env.rb
190
198
  - features/support/schema.rb
191
199
  - features/support/world.rb
192
200
  - features/typecast_attributes.feature
193
- - features/where_conditions.feature
194
201
  - gemfiles/3.1.gemfile
195
202
  - gemfiles/3.1.gemfile.lock
196
203
  - gemfiles/3.2.gemfile