radiant-shop_variants-extension 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/.gitignore +1 -0
  2. data/README +3 -0
  3. data/Rakefile +138 -0
  4. data/VERSION +1 -0
  5. data/app/controllers/admin/shop/products/variant_templates_controller.rb +27 -0
  6. data/app/controllers/admin/shop/products/variants_controller.rb +60 -0
  7. data/app/controllers/admin/shop/variants_controller.rb +48 -0
  8. data/app/models/shop_product_variant.rb +36 -0
  9. data/app/models/shop_variant.rb +23 -0
  10. data/app/views/admin/shop/products/edit/buttons/_browse_templates.html.haml +1 -0
  11. data/app/views/admin/shop/products/edit/buttons/_new_variant.html.haml +1 -0
  12. data/app/views/admin/shop/products/edit/parts/_variants.html.haml +3 -0
  13. data/app/views/admin/shop/products/edit/popups/_browse_templates.html.haml +6 -0
  14. data/app/views/admin/shop/products/edit/popups/_new_variant.html.haml +16 -0
  15. data/app/views/admin/shop/products/edit/shared/_variant.html.haml +10 -0
  16. data/app/views/admin/shop/products/index/buttons/_variants.html.haml +1 -0
  17. data/app/views/admin/shop/variants/edit/_foot.html.haml +9 -0
  18. data/app/views/admin/shop/variants/edit/_form.html.haml +13 -0
  19. data/app/views/admin/shop/variants/edit/_head.html.haml +4 -0
  20. data/app/views/admin/shop/variants/edit/_inputs.html.haml +2 -0
  21. data/app/views/admin/shop/variants/edit/_meta.html.haml +8 -0
  22. data/app/views/admin/shop/variants/edit/_parts.html.haml +9 -0
  23. data/app/views/admin/shop/variants/edit/_popups.html.haml +4 -0
  24. data/app/views/admin/shop/variants/edit/inputs/_name.html.haml +3 -0
  25. data/app/views/admin/shop/variants/edit/inputs/_options.html.haml +3 -0
  26. data/app/views/admin/shop/variants/edit.html.haml +11 -0
  27. data/app/views/admin/shop/variants/index/_foot.html.haml +5 -0
  28. data/app/views/admin/shop/variants/index/_head.html.haml +2 -0
  29. data/app/views/admin/shop/variants/index/_variant.html.haml +9 -0
  30. data/app/views/admin/shop/variants/index/buttons/_add_variant.html.haml +1 -0
  31. data/app/views/admin/shop/variants/index/buttons/_categories.html.haml +1 -0
  32. data/app/views/admin/shop/variants/index.html.haml +13 -0
  33. data/app/views/admin/shop/variants/new.html.haml +11 -0
  34. data/app/views/admin/shop/variants/remove.html.haml +12 -0
  35. data/config/locales/en.yml +14 -0
  36. data/config/routes.rb +16 -0
  37. data/cucumber.yml +1 -0
  38. data/db/migrate/20101015162238_setup_shop_variants.rb +21 -0
  39. data/features/support/env.rb +16 -0
  40. data/features/support/paths.rb +14 -0
  41. data/lib/shop_variants/controllers/products_controller.rb +44 -0
  42. data/lib/shop_variants/interface/variants.rb +34 -0
  43. data/lib/shop_variants/models/product.rb +15 -0
  44. data/lib/shop_variants/tags/helpers.rb +29 -0
  45. data/lib/shop_variants/tags/product_variant.rb +52 -0
  46. data/lib/tasks/shop_variants_extension_tasks.rake +55 -0
  47. data/public/javascripts/admin/extensions/shop/variants/edit.js +38 -0
  48. data/public/stylesheets/sass/admin/extensions/shop/variants/edit.sass +0 -0
  49. data/radiant-shop_variants-extension.gemspec +114 -0
  50. data/shop_variants_extension.rb +21 -0
  51. data/spec/controllers/admin/shop/products/variant_templates_controller_spec.rb +53 -0
  52. data/spec/controllers/admin/shop/products/variants_controller_spec.rb +116 -0
  53. data/spec/controllers/admin/shop/variants_controller_spec.rb +67 -0
  54. data/spec/datasets/shop_product_variants.rb +22 -0
  55. data/spec/datasets/shop_variants.rb +17 -0
  56. data/spec/lib/shop_variants/tags/helpers_spec.rb +59 -0
  57. data/spec/lib/shop_variants/tags/product_variant_spec.rb +175 -0
  58. data/spec/models/shop_product_spec.rb +15 -0
  59. data/spec/models/shop_product_variant_spec.rb +92 -0
  60. data/spec/models/shop_variant_spec.rb +32 -0
  61. data/spec/spec.opts +4 -0
  62. data/spec/spec_helper.rb +23 -0
  63. metadata +151 -0
@@ -0,0 +1,17 @@
1
+ class ShopVariantsDataset < Dataset::Base
2
+
3
+ def load
4
+ create_record :shop_variants, :bread_states,
5
+ :name => 'bread states',
6
+ :options_json => ActiveSupport::JSON.encode([ 'mouldy', 'fresh' ])
7
+
8
+ create_record :shop_variants, :milk_states,
9
+ :name => 'milk states',
10
+ :options_json => ActiveSupport::JSON.encode([ 'cold', 'warm', 'sour' ])
11
+
12
+ create_record :shop_variants, :salad_states,
13
+ :name => 'milk states',
14
+ :options_json => ActiveSupport::JSON.encode([ 'fresh', 'wilted' ])
15
+ end
16
+
17
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe ShopVariants::Tags::Helpers do
4
+
5
+ dataset :pages, :tags, :shop_products, :shop_product_variants
6
+
7
+ before :all do
8
+ @page = pages(:home)
9
+ end
10
+
11
+ before(:each) do
12
+ mock_valid_tag_for_helper
13
+ end
14
+
15
+ describe '#current_product_variants' do
16
+ before :each do
17
+ @product = shop_products(:crusty_bread)
18
+ end
19
+
20
+ context 'existing product variant' do
21
+ it 'should return that existing line item' do
22
+ @tag.locals.shop_product = @product
23
+
24
+ result = ShopVariants::Tags::Helpers.current_product_variants(@tag)
25
+ result.should == @product.variants
26
+ end
27
+ end
28
+
29
+ context 'nothing sent or available' do
30
+ it 'should return nil' do
31
+ result = ShopVariants::Tags::Helpers.current_product_variants(@tag)
32
+ result.should be_nil
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#current_product_variant' do
38
+ before :each do
39
+ @variant = shop_product_variants(:mouldy_crusty_bread)
40
+ end
41
+
42
+ context 'existing product variant' do
43
+ it 'should return that existing variant' do
44
+ @tag.locals.shop_product_variant = @variant
45
+
46
+ result = ShopVariants::Tags::Helpers.current_product_variant(@tag)
47
+ result.should == @variant
48
+ end
49
+ end
50
+
51
+ context 'nothing sent or available' do
52
+ it 'should return nil' do
53
+ result = ShopVariants::Tags::Helpers.current_product_variant(@tag)
54
+ result.should be_nil
55
+ end
56
+ end
57
+ end
58
+
59
+ end
@@ -0,0 +1,175 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe ShopVariants::Tags::ProductVariant do
4
+
5
+ dataset :pages, :shop_product_variants, :shop_products
6
+
7
+ it 'should describe these tags' do
8
+ ShopVariants::Tags::ProductVariant.tags.sort.should == [
9
+ 'shop:product:variants',
10
+ 'shop:product:variants:each',
11
+ 'shop:product:variants:if_variants',
12
+ 'shop:product:variants:unless_variants',
13
+ 'shop:product:variant',
14
+ 'shop:product:variant:id',
15
+ 'shop:product:variant:name',
16
+ 'shop:product:variant:sku',
17
+ 'shop:product:variant:price'].sort
18
+ end
19
+
20
+ before :all do
21
+ @page = pages(:home)
22
+ end
23
+
24
+ context 'tags' do
25
+
26
+ before :each do
27
+ @product = shop_products(:crusty_bread)
28
+ @variant = shop_product_variants(:mouldy_crusty_bread)
29
+
30
+ stub(Shop::Tags::Helpers).current_product(anything) { @product }
31
+ end
32
+
33
+ describe '<r:shop:product:variants>' do
34
+ context 'variants exist' do
35
+ it 'should render' do
36
+ tag = %{<r:shop:product:variants>success</r:shop:product:variants>}
37
+ exp = %{success}
38
+
39
+ @page.should render(tag).as(exp)
40
+ end
41
+ end
42
+
43
+ context 'variants do not exist' do
44
+ it 'should render' do
45
+ @product.variants = []
46
+
47
+ tag = %{<r:shop:product:variants>success</r:shop:product:variants>}
48
+ exp = %{success}
49
+
50
+ @page.should render(tag).as(exp)
51
+ end
52
+ end
53
+ end
54
+
55
+ describe '<r:shop:product:variants:if_variants>' do
56
+ context 'success' do
57
+ it 'should render' do
58
+ tag = %{<r:shop:product:variants:if_variants>success</r:shop:product:variants:if_variants>}
59
+ exp = %{success}
60
+ @page.should render(tag).as(exp)
61
+ end
62
+ end
63
+
64
+ context 'failure' do
65
+ it 'should not render' do
66
+ mock(ShopVariants::Tags::Helpers).current_product_variants(anything) { [] }
67
+
68
+ tag = %{<r:shop:product:variants:if_variants>failure</r:shop:product:variants:if_variants>}
69
+ exp = %{}
70
+ @page.should render(tag).as(exp)
71
+ end
72
+ end
73
+ end
74
+
75
+ describe '<r:shop:product:variants:unless_variants>' do
76
+ context 'success' do
77
+ it 'should render' do
78
+ mock(ShopVariants::Tags::Helpers).current_product_variants(anything) { [] }
79
+
80
+ tag = %{<r:shop:product:variants:unless_variants>success</r:shop:product:variants:unless_variants>}
81
+ exp = %{success}
82
+ @page.should render(tag).as(exp)
83
+ end
84
+ end
85
+
86
+ context 'failure' do
87
+ it 'should not render' do
88
+ tag = %{<r:shop:product:variants:unless_variants>failure</r:shop:product:variants:unless_variants>}
89
+ exp = %{}
90
+ @page.should render(tag).as(exp)
91
+ end
92
+ end
93
+ end
94
+
95
+ describe '<r:shop:product:variants:each>' do
96
+ context 'success' do
97
+ it 'should not render' do
98
+ tag = %{<r:shop:product:variants:each><r:product:id /></r:shop:product:variants:each>}
99
+ exp = @product.variants.map{ |p| p.product.id }.join('')
100
+ @page.should render(tag).as(exp)
101
+ end
102
+ end
103
+
104
+ context 'failure' do
105
+ it 'should not render' do
106
+ mock(ShopVariants::Tags::Helpers).current_product_variants(anything) { [] }
107
+
108
+ tag = %{<r:shop:product:variants:each>failure</r:shop:product:variants:each>}
109
+ exp = %{}
110
+ @page.should render(tag).as(exp)
111
+ end
112
+ end
113
+ end
114
+
115
+ describe '<r:shop:product:variant>' do
116
+ context 'variant exists in the context' do
117
+ it 'should render' do
118
+ mock(ShopVariants::Tags::Helpers).current_product_variant(anything) { @variant }
119
+
120
+ tag = %{<r:shop:product:variant>success</r:shop:product:variant>}
121
+ exp = %{success}
122
+ @page.should render(tag).as(exp)
123
+ end
124
+ end
125
+
126
+ context 'product does not exist in the context' do
127
+ it 'should not render' do
128
+ mock(ShopVariants::Tags::Helpers).current_product_variant(anything) { nil }
129
+
130
+ tag = %{<r:shop:product:variant>failure</r:shop:product:variant>}
131
+ exp = %{}
132
+ @page.should render(tag).as(exp)
133
+ end
134
+ end
135
+ end
136
+
137
+ context '#attributes' do
138
+ before :each do
139
+ mock(ShopVariants::Tags::Helpers).current_product_variant(anything) { @variant }
140
+ end
141
+
142
+ describe '<r:id />' do
143
+ it 'should render the product id' do
144
+ tag = %{<r:shop:product:variant:id />}
145
+ exp = @variant.id.to_s
146
+ @page.should render(tag).as(exp)
147
+ end
148
+ end
149
+ describe '<r:name />' do
150
+ it 'should render the product name' do
151
+ tag = %{<r:shop:product:variant:name />}
152
+ exp = @variant.name
153
+ @page.should render(tag).as(exp)
154
+ end
155
+ end
156
+ describe '<r:sku />' do
157
+ it 'should render the product sku' do
158
+ tag = %{<r:shop:product:variant:sku />}
159
+ exp = @variant.sku
160
+ @page.should render(tag).as(exp)
161
+ end
162
+ end
163
+ describe '<r:price />' do
164
+ it 'should render a standard price' do
165
+ tag = %{<r:shop:product:variant:price />}
166
+ exp = Shop::Tags::Helpers.currency(@variant.price,{})
167
+
168
+ @page.should render(tag).as(exp)
169
+ end
170
+ end
171
+ end
172
+
173
+ end
174
+
175
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe ShopProduct do
4
+
5
+ dataset :shop_products
6
+
7
+ before :each do
8
+ @product = shop_products(:crusty_bread)
9
+ end
10
+
11
+ it 'should have many variants' do
12
+ @product.variants.is_a?(Array).should be_true
13
+ end
14
+
15
+ end
@@ -0,0 +1,92 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe ShopProductVariant do
4
+
5
+ dataset :shop_products, :shop_product_variants
6
+
7
+ describe 'relationships' do
8
+ before :each do
9
+ @product = shop_products(:crusty_bread)
10
+ end
11
+
12
+ context 'product' do
13
+ it 'should belong to one' do
14
+ @product_variant = shop_product_variants(:mouldy_crusty_bread)
15
+ @product_variant.product.should === @product
16
+ end
17
+ end
18
+ end
19
+
20
+ describe 'validations' do
21
+ before :each do
22
+ @product_variant = shop_product_variants(:mouldy_crusty_bread)
23
+ end
24
+ context 'product' do
25
+ it 'should require' do
26
+ @product_variant.product = nil
27
+ @product_variant.valid?.should be_false
28
+ end
29
+ end
30
+ context 'name' do
31
+ it 'should require' do
32
+ @product_variant.name = nil
33
+ @product_variant.valid?.should be_false
34
+ end
35
+ it 'should be unique within product' do
36
+ @product_variant.name = shop_product_variants(:fresh_crusty_bread).name
37
+ @product_variant.valid?.should be_false
38
+
39
+ @product_variant.name = shop_product_variants(:royal_soft_bread).name
40
+ @product_variant.valid?.should be_true
41
+ end
42
+ end
43
+ context 'price' do
44
+ it 'should not require' do
45
+ @product_variant.price = nil
46
+ @product_variant.valid?.should be_true
47
+ end
48
+ end
49
+ end
50
+
51
+ describe '#price' do
52
+ before :each do
53
+ @product_variant = shop_product_variants(:mouldy_crusty_bread)
54
+ end
55
+ context 'positive price' do
56
+ before :each do
57
+ @product_variant.price = 100.00
58
+ end
59
+ it 'should return the product price plus the variant price' do
60
+ @product_variant.price.to_f.should === (@product_variant.product.price.to_f + 100.00)
61
+ end
62
+ end
63
+ context 'negative price' do
64
+ before :each do
65
+ @product_variant.price = -100.00
66
+ end
67
+ it 'should return the product price plus the variant price' do
68
+ @product_variant.price.to_f.should === (@product_variant.product.price.to_f - 100.00)
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#sku' do
74
+ before :each do
75
+ @product_variant = shop_product_variants(:mouldy_crusty_bread)
76
+ stub(@product_variant).name { 'mouldy and yucky'}
77
+ end
78
+ it 'should return a concatenation of its name and products sku' do
79
+ @product_variant.sku.should === "#{@product_variant.product.sku}-mouldy_and_yucky"
80
+ end
81
+ end
82
+
83
+ describe '#sku' do
84
+ before :each do
85
+ @product_variant = shop_product_variants(:mouldy_crusty_bread)
86
+ end
87
+ it 'should return its products slug' do
88
+ @product_variant.slug.should === @product_variant.product.slug
89
+ end
90
+ end
91
+
92
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe ShopVariant do
4
+
5
+ dataset :shop_variants, :shop_categories
6
+
7
+ describe 'validations' do
8
+ before :each do
9
+ @variant = shop_variants(:bread_states)
10
+ end
11
+
12
+ context 'name' do
13
+ it 'should require' do
14
+ @variant.name = nil
15
+ @variant.valid?.should === false
16
+ end
17
+ it 'should be unique' do
18
+ @other = shop_variants(:milk_states)
19
+ @other.name = @variant.name
20
+ @other.valid?.should === false
21
+ end
22
+ end
23
+
24
+ context 'options' do
25
+ it 'should require' do
26
+ @variant.options_json = nil
27
+ @variant.valid?.should === false
28
+ end
29
+ end
30
+ end
31
+
32
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format specdoc
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,23 @@
1
+ unless defined? RADIANT_ROOT
2
+ ENV["RAILS_ENV"] = "test"
3
+ case
4
+ when ENV["RADIANT_ENV_FILE"]
5
+ require ENV["RADIANT_ENV_FILE"]
6
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
7
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
8
+ else
9
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
10
+ end
11
+ end
12
+ require "#{RADIANT_ROOT}/spec/spec_helper"
13
+
14
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/../../shop/spec/datasets")
15
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
16
+
17
+ if File.directory?(File.dirname(__FILE__) + "/matchers")
18
+ Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
19
+ end
20
+
21
+ Spec::Runner.configure do |config|
22
+ config.mock_with :rr
23
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: radiant-shop_variants-extension
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Dirk Kelly
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-10 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ name: radiant-shop-extension
34
+ requirement: *id001
35
+ description: "RadiantShop: Create variants of products, with alternative prices"
36
+ email: dk@dirkkelly.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - README
43
+ files:
44
+ - .gitignore
45
+ - README
46
+ - Rakefile
47
+ - VERSION
48
+ - app/controllers/admin/shop/products/variant_templates_controller.rb
49
+ - app/controllers/admin/shop/products/variants_controller.rb
50
+ - app/controllers/admin/shop/variants_controller.rb
51
+ - app/models/shop_product_variant.rb
52
+ - app/models/shop_variant.rb
53
+ - app/views/admin/shop/products/edit/buttons/_browse_templates.html.haml
54
+ - app/views/admin/shop/products/edit/buttons/_new_variant.html.haml
55
+ - app/views/admin/shop/products/edit/parts/_variants.html.haml
56
+ - app/views/admin/shop/products/edit/popups/_browse_templates.html.haml
57
+ - app/views/admin/shop/products/edit/popups/_new_variant.html.haml
58
+ - app/views/admin/shop/products/edit/shared/_variant.html.haml
59
+ - app/views/admin/shop/products/index/buttons/_variants.html.haml
60
+ - app/views/admin/shop/variants/edit.html.haml
61
+ - app/views/admin/shop/variants/edit/_foot.html.haml
62
+ - app/views/admin/shop/variants/edit/_form.html.haml
63
+ - app/views/admin/shop/variants/edit/_head.html.haml
64
+ - app/views/admin/shop/variants/edit/_inputs.html.haml
65
+ - app/views/admin/shop/variants/edit/_meta.html.haml
66
+ - app/views/admin/shop/variants/edit/_parts.html.haml
67
+ - app/views/admin/shop/variants/edit/_popups.html.haml
68
+ - app/views/admin/shop/variants/edit/inputs/_name.html.haml
69
+ - app/views/admin/shop/variants/edit/inputs/_options.html.haml
70
+ - app/views/admin/shop/variants/index.html.haml
71
+ - app/views/admin/shop/variants/index/_foot.html.haml
72
+ - app/views/admin/shop/variants/index/_head.html.haml
73
+ - app/views/admin/shop/variants/index/_variant.html.haml
74
+ - app/views/admin/shop/variants/index/buttons/_add_variant.html.haml
75
+ - app/views/admin/shop/variants/index/buttons/_categories.html.haml
76
+ - app/views/admin/shop/variants/new.html.haml
77
+ - app/views/admin/shop/variants/remove.html.haml
78
+ - config/locales/en.yml
79
+ - config/routes.rb
80
+ - cucumber.yml
81
+ - db/migrate/20101015162238_setup_shop_variants.rb
82
+ - features/support/env.rb
83
+ - features/support/paths.rb
84
+ - lib/shop_variants/controllers/products_controller.rb
85
+ - lib/shop_variants/interface/variants.rb
86
+ - lib/shop_variants/models/product.rb
87
+ - lib/shop_variants/tags/helpers.rb
88
+ - lib/shop_variants/tags/product_variant.rb
89
+ - lib/tasks/shop_variants_extension_tasks.rake
90
+ - public/javascripts/admin/extensions/shop/variants/edit.js
91
+ - public/stylesheets/sass/admin/extensions/shop/variants/edit.sass
92
+ - radiant-shop_variants-extension.gemspec
93
+ - shop_variants_extension.rb
94
+ - spec/controllers/admin/shop/products/variant_templates_controller_spec.rb
95
+ - spec/controllers/admin/shop/products/variants_controller_spec.rb
96
+ - spec/controllers/admin/shop/variants_controller_spec.rb
97
+ - spec/datasets/shop_product_variants.rb
98
+ - spec/datasets/shop_variants.rb
99
+ - spec/lib/shop_variants/tags/helpers_spec.rb
100
+ - spec/lib/shop_variants/tags/product_variant_spec.rb
101
+ - spec/models/shop_product_spec.rb
102
+ - spec/models/shop_product_variant_spec.rb
103
+ - spec/models/shop_variant_spec.rb
104
+ - spec/spec.opts
105
+ - spec/spec_helper.rb
106
+ has_rdoc: true
107
+ homepage: http://github.com/thefrontiergroup/shop_variants
108
+ licenses: []
109
+
110
+ post_install_message:
111
+ rdoc_options:
112
+ - --charset=UTF-8
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
123
+ version: "0"
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ hash: 3
130
+ segments:
131
+ - 0
132
+ version: "0"
133
+ requirements: []
134
+
135
+ rubyforge_project:
136
+ rubygems_version: 1.3.7
137
+ signing_key:
138
+ specification_version: 3
139
+ summary: Shop Variants Extension for Radiant CMS
140
+ test_files:
141
+ - spec/controllers/admin/shop/products/variant_templates_controller_spec.rb
142
+ - spec/controllers/admin/shop/products/variants_controller_spec.rb
143
+ - spec/controllers/admin/shop/variants_controller_spec.rb
144
+ - spec/datasets/shop_product_variants.rb
145
+ - spec/datasets/shop_variants.rb
146
+ - spec/lib/shop_variants/tags/helpers_spec.rb
147
+ - spec/lib/shop_variants/tags/product_variant_spec.rb
148
+ - spec/models/shop_product_spec.rb
149
+ - spec/models/shop_product_variant_spec.rb
150
+ - spec/models/shop_variant_spec.rb
151
+ - spec/spec_helper.rb