solidus_core 1.0.2 → 1.0.3

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.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/Gemfile +3 -0
  4. data/Rakefile +16 -0
  5. data/script/rails +9 -0
  6. data/solidus_core.gemspec +48 -0
  7. data/spec/fixtures/thinking-cat.jpg +0 -0
  8. data/spec/helpers/base_helper_spec.rb +173 -0
  9. data/spec/helpers/order_helper_spec.rb +12 -0
  10. data/spec/helpers/products_helper_spec.rb +220 -0
  11. data/spec/helpers/taxons_helper_spec.rb +17 -0
  12. data/spec/lib/calculated_adjustments_spec.rb +7 -0
  13. data/spec/lib/i18n_spec.rb +123 -0
  14. data/spec/lib/search/base_spec.rb +86 -0
  15. data/spec/lib/search/variant_spec.rb +92 -0
  16. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +66 -0
  17. data/spec/lib/spree/core/controller_helpers/order_spec.rb +92 -0
  18. data/spec/lib/spree/core/controller_helpers/search_spec.rb +17 -0
  19. data/spec/lib/spree/core/controller_helpers/store_spec.rb +16 -0
  20. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +39 -0
  21. data/spec/lib/spree/core/current_store_spec.rb +36 -0
  22. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +22 -0
  23. data/spec/lib/spree/core/importer/order_spec.rb +431 -0
  24. data/spec/lib/spree/core/role_configuration_spec.rb +138 -0
  25. data/spec/lib/spree/core/validators/email_spec.rb +48 -0
  26. data/spec/lib/spree/localized_number_spec.rb +38 -0
  27. data/spec/lib/spree/migrations_spec.rb +36 -0
  28. data/spec/lib/spree/money_spec.rb +127 -0
  29. data/spec/lib/tasks/exchanges_spec.rb +231 -0
  30. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +115 -0
  31. data/spec/lib/tasks/order_capturing_spec.rb +56 -0
  32. data/spec/mailers/carton_mailer_spec.rb +43 -0
  33. data/spec/mailers/order_mailer_spec.rb +122 -0
  34. data/spec/mailers/reimbursement_mailer_spec.rb +40 -0
  35. data/spec/mailers/test_mailer_spec.rb +15 -0
  36. data/spec/models/spree/ability_spec.rb +276 -0
  37. data/spec/models/spree/address_spec.rb +250 -0
  38. data/spec/models/spree/adjustment_reason_spec.rb +13 -0
  39. data/spec/models/spree/adjustment_spec.rb +177 -0
  40. data/spec/models/spree/app_configuration_spec.rb +20 -0
  41. data/spec/models/spree/asset_spec.rb +24 -0
  42. data/spec/models/spree/calculator/default_tax_spec.rb +127 -0
  43. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +25 -0
  44. data/spec/models/spree/calculator/flat_rate_spec.rb +47 -0
  45. data/spec/models/spree/calculator/flexi_rate_spec.rb +41 -0
  46. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +15 -0
  47. data/spec/models/spree/calculator/price_sack_spec.rb +30 -0
  48. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +51 -0
  49. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +23 -0
  50. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +13 -0
  51. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +52 -0
  52. data/spec/models/spree/calculator/shipping/per_item_spec.rb +20 -0
  53. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +30 -0
  54. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +36 -0
  55. data/spec/models/spree/calculator/tiered_percent_spec.rb +47 -0
  56. data/spec/models/spree/calculator_spec.rb +36 -0
  57. data/spec/models/spree/carton_spec.rb +133 -0
  58. data/spec/models/spree/classification_spec.rb +15 -0
  59. data/spec/models/spree/concerns/display_money_spec.rb +43 -0
  60. data/spec/models/spree/concerns/user_methods_spec.rb +41 -0
  61. data/spec/models/spree/credit_card_spec.rb +334 -0
  62. data/spec/models/spree/customer_return_spec.rb +276 -0
  63. data/spec/models/spree/exchange_spec.rb +79 -0
  64. data/spec/models/spree/gateway/bogus_simple.rb +20 -0
  65. data/spec/models/spree/gateway/bogus_spec.rb +13 -0
  66. data/spec/models/spree/gateway_spec.rb +82 -0
  67. data/spec/models/spree/inventory_unit_spec.rb +307 -0
  68. data/spec/models/spree/item_adjustments_spec.rb +256 -0
  69. data/spec/models/spree/line_item_spec.rb +191 -0
  70. data/spec/models/spree/option_type_spec.rb +14 -0
  71. data/spec/models/spree/option_value_spec.rb +22 -0
  72. data/spec/models/spree/order/address_spec.rb +50 -0
  73. data/spec/models/spree/order/adjustments_spec.rb +39 -0
  74. data/spec/models/spree/order/callbacks_spec.rb +42 -0
  75. data/spec/models/spree/order/checkout_spec.rb +902 -0
  76. data/spec/models/spree/order/currency_updater_spec.rb +32 -0
  77. data/spec/models/spree/order/finalizing_spec.rb +111 -0
  78. data/spec/models/spree/order/payment_spec.rb +210 -0
  79. data/spec/models/spree/order/risk_assessment_spec.rb +68 -0
  80. data/spec/models/spree/order/state_machine_spec.rb +221 -0
  81. data/spec/models/spree/order/tax_spec.rb +84 -0
  82. data/spec/models/spree/order/totals_spec.rb +24 -0
  83. data/spec/models/spree/order/updating_spec.rb +18 -0
  84. data/spec/models/spree/order/validations_spec.rb +15 -0
  85. data/spec/models/spree/order_cancellations_spec.rb +120 -0
  86. data/spec/models/spree/order_capturing_spec.rb +116 -0
  87. data/spec/models/spree/order_contents_spec.rb +265 -0
  88. data/spec/models/spree/order_inventory_spec.rb +228 -0
  89. data/spec/models/spree/order_mutex_spec.rb +85 -0
  90. data/spec/models/spree/order_promotion_spec.rb +31 -0
  91. data/spec/models/spree/order_shipping_spec.rb +247 -0
  92. data/spec/models/spree/order_spec.rb +1412 -0
  93. data/spec/models/spree/order_stock_location_spec.rb +18 -0
  94. data/spec/models/spree/order_updater_spec.rb +299 -0
  95. data/spec/models/spree/payment_method/store_credit_spec.rb +294 -0
  96. data/spec/models/spree/payment_method_spec.rb +96 -0
  97. data/spec/models/spree/payment_spec.rb +1044 -0
  98. data/spec/models/spree/permission_sets/base_spec.rb +12 -0
  99. data/spec/models/spree/permission_sets/configuration_display.rb +82 -0
  100. data/spec/models/spree/permission_sets/configuration_management_spec.rb +50 -0
  101. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +22 -0
  102. data/spec/models/spree/permission_sets/order_display_spec.rb +49 -0
  103. data/spec/models/spree/permission_sets/order_management_spec.rb +36 -0
  104. data/spec/models/spree/permission_sets/product_display_spec.rb +60 -0
  105. data/spec/models/spree/permission_sets/product_management_spec.rb +40 -0
  106. data/spec/models/spree/permission_sets/promotion_display_spec.rb +34 -0
  107. data/spec/models/spree/permission_sets/promotion_management_spec.rb +26 -0
  108. data/spec/models/spree/permission_sets/report_display_spec.rb +24 -0
  109. data/spec/models/spree/permission_sets/restricted_transfer_management_spec.rb +132 -0
  110. data/spec/models/spree/permission_sets/stock_display_spec.rb +26 -0
  111. data/spec/models/spree/permission_sets/stock_management_spec.rb +24 -0
  112. data/spec/models/spree/permission_sets/user_display_spec.rb +36 -0
  113. data/spec/models/spree/permission_sets/user_management_spec.rb +28 -0
  114. data/spec/models/spree/preference_spec.rb +80 -0
  115. data/spec/models/spree/preferences/configuration_spec.rb +30 -0
  116. data/spec/models/spree/preferences/preferable_spec.rb +294 -0
  117. data/spec/models/spree/preferences/scoped_store_spec.rb +58 -0
  118. data/spec/models/spree/preferences/static_model_preferences_spec.rb +78 -0
  119. data/spec/models/spree/preferences/statically_configurable_spec.rb +60 -0
  120. data/spec/models/spree/preferences/store_spec.rb +39 -0
  121. data/spec/models/spree/price_spec.rb +42 -0
  122. data/spec/models/spree/product/scopes_spec.rb +148 -0
  123. data/spec/models/spree/product_duplicator_spec.rb +103 -0
  124. data/spec/models/spree/product_filter_spec.rb +26 -0
  125. data/spec/models/spree/product_property_spec.rb +20 -0
  126. data/spec/models/spree/product_spec.rb +437 -0
  127. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +96 -0
  128. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +165 -0
  129. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +115 -0
  130. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +40 -0
  131. data/spec/models/spree/promotion/rules/first_order_spec.rb +75 -0
  132. data/spec/models/spree/promotion/rules/item_total_spec.rb +67 -0
  133. data/spec/models/spree/promotion/rules/nth_order_spec.rb +70 -0
  134. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +42 -0
  135. data/spec/models/spree/promotion/rules/option_value_spec.rb +94 -0
  136. data/spec/models/spree/promotion/rules/product_spec.rb +143 -0
  137. data/spec/models/spree/promotion/rules/taxon_spec.rb +102 -0
  138. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +27 -0
  139. data/spec/models/spree/promotion/rules/user_spec.rb +37 -0
  140. data/spec/models/spree/promotion_builder_spec.rb +118 -0
  141. data/spec/models/spree/promotion_category_spec.rb +17 -0
  142. data/spec/models/spree/promotion_code/code_builder_spec.rb +79 -0
  143. data/spec/models/spree/promotion_code_spec.rb +187 -0
  144. data/spec/models/spree/promotion_handler/cart_spec.rb +114 -0
  145. data/spec/models/spree/promotion_handler/coupon_spec.rb +335 -0
  146. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +47 -0
  147. data/spec/models/spree/promotion_handler/page_spec.rb +44 -0
  148. data/spec/models/spree/promotion_rule_spec.rb +28 -0
  149. data/spec/models/spree/promotion_spec.rb +767 -0
  150. data/spec/models/spree/refund_spec.rb +204 -0
  151. data/spec/models/spree/reimbursement/credit_spec.rb +36 -0
  152. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +140 -0
  153. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +83 -0
  154. data/spec/models/spree/reimbursement_performer_spec.rb +30 -0
  155. data/spec/models/spree/reimbursement_spec.rb +231 -0
  156. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +51 -0
  157. data/spec/models/spree/reimbursement_type/credit_spec.rb +53 -0
  158. data/spec/models/spree/reimbursement_type/exchange_spec.rb +46 -0
  159. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +107 -0
  160. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +97 -0
  161. data/spec/models/spree/return_authorization_spec.rb +290 -0
  162. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +77 -0
  163. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +58 -0
  164. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +85 -0
  165. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +32 -0
  166. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +29 -0
  167. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +35 -0
  168. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +65 -0
  169. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +43 -0
  170. data/spec/models/spree/return_item_spec.rb +775 -0
  171. data/spec/models/spree/returns_calculator_spec.rb +14 -0
  172. data/spec/models/spree/shipment_spec.rb +709 -0
  173. data/spec/models/spree/shipping_calculator_spec.rb +45 -0
  174. data/spec/models/spree/shipping_method_spec.rb +88 -0
  175. data/spec/models/spree/shipping_rate_spec.rb +142 -0
  176. data/spec/models/spree/state_spec.rb +14 -0
  177. data/spec/models/spree/stock/availability_validator_spec.rb +83 -0
  178. data/spec/models/spree/stock/coordinator_spec.rb +116 -0
  179. data/spec/models/spree/stock/differentiator_spec.rb +39 -0
  180. data/spec/models/spree/stock/estimator_spec.rb +146 -0
  181. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +38 -0
  182. data/spec/models/spree/stock/package_spec.rb +163 -0
  183. data/spec/models/spree/stock/packer_spec.rb +91 -0
  184. data/spec/models/spree/stock/prioritizer_spec.rb +125 -0
  185. data/spec/models/spree/stock/quantifier_spec.rb +115 -0
  186. data/spec/models/spree/stock/splitter/backordered_spec.rb +29 -0
  187. data/spec/models/spree/stock/splitter/base_spec.rb +21 -0
  188. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +50 -0
  189. data/spec/models/spree/stock/splitter/weight_spec.rb +29 -0
  190. data/spec/models/spree/stock_item_spec.rb +426 -0
  191. data/spec/models/spree/stock_location_spec.rb +279 -0
  192. data/spec/models/spree/stock_movement_spec.rb +56 -0
  193. data/spec/models/spree/stock_transfer_spec.rb +290 -0
  194. data/spec/models/spree/store_credit_category_spec.rb +17 -0
  195. data/spec/models/spree/store_credit_event_spec.rb +314 -0
  196. data/spec/models/spree/store_credit_spec.rb +876 -0
  197. data/spec/models/spree/store_spec.rb +55 -0
  198. data/spec/models/spree/tax_category_spec.rb +27 -0
  199. data/spec/models/spree/tax_rate_spec.rb +378 -0
  200. data/spec/models/spree/taxon_spec.rb +74 -0
  201. data/spec/models/spree/taxonomy_spec.rb +18 -0
  202. data/spec/models/spree/tracker_spec.rb +21 -0
  203. data/spec/models/spree/transfer_item_spec.rb +264 -0
  204. data/spec/models/spree/unit_cancel_spec.rb +148 -0
  205. data/spec/models/spree/user_spec.rb +223 -0
  206. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +23 -0
  207. data/spec/models/spree/variant/scopes_spec.rb +55 -0
  208. data/spec/models/spree/variant_spec.rb +546 -0
  209. data/spec/models/spree/zone_spec.rb +305 -0
  210. data/spec/spec_helper.rb +78 -0
  211. data/spec/support/big_decimal.rb +5 -0
  212. data/spec/support/concerns/default_price.rb +34 -0
  213. data/spec/support/dummy_ability.rb +4 -0
  214. data/spec/support/test_gateway.rb +2 -0
  215. metadata +229 -3
  216. data/lib/spree/testing_support/rspec-activemodel-mocks_patch.rb +0 -8
@@ -0,0 +1,305 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Zone, :type => :model do
4
+ context "#match" do
5
+ let(:country_zone) { create(:zone, name: 'CountryZone') }
6
+ let(:country) do
7
+ country = create(:country)
8
+ # Create at least one state for this country
9
+ state = create(:state, country: country)
10
+ country
11
+ end
12
+
13
+ before { country_zone.members.create(zoneable: country) }
14
+
15
+ context "when there is only one qualifying zone" do
16
+ let(:address) { create(:address, country: country, state: country.states.first) }
17
+
18
+ it "should return the qualifying zone" do
19
+ expect(Spree::Zone.match(address)).to eq(country_zone)
20
+ end
21
+ end
22
+
23
+ context "when there are two qualified zones with same member type" do
24
+ let(:address) { create(:address, country: country, state: country.states.first) }
25
+ let(:second_zone) { create(:zone, name: 'SecondZone') }
26
+
27
+ before { second_zone.members.create(zoneable: country) }
28
+
29
+ context "when both zones have the same number of members" do
30
+ it "should return the zone that was created first" do
31
+ expect(Spree::Zone.match(address)).to eq(country_zone)
32
+ end
33
+ end
34
+
35
+ context "when one of the zones has fewer members" do
36
+ let(:country2) { create(:country) }
37
+
38
+ before { country_zone.members.create(zoneable: country2) }
39
+
40
+ it "should return the zone with fewer members" do
41
+ expect(Spree::Zone.match(address)).to eq(second_zone)
42
+ end
43
+ end
44
+ end
45
+
46
+ context "when there are two qualified zones with different member types" do
47
+ let(:state_zone) { create(:zone, name: 'StateZone') }
48
+ let(:address) { create(:address, country: country, state: country.states.first) }
49
+
50
+ before { state_zone.members.create(zoneable: country.states.first) }
51
+
52
+ it "should return the zone with the more specific member type" do
53
+ expect(Spree::Zone.match(address)).to eq(state_zone)
54
+ end
55
+ end
56
+
57
+ context "when there are no qualifying zones" do
58
+ it "should return nil" do
59
+ expect(Spree::Zone.match(Spree::Address.new)).to be_nil
60
+ end
61
+ end
62
+ end
63
+
64
+ context "#country_list" do
65
+ let(:state) { create(:state) }
66
+ let(:country) { state.country }
67
+
68
+ context "when zone consists of countries" do
69
+ let(:country_zone) { create(:zone, name: 'CountryZone') }
70
+
71
+ before { country_zone.members.create(zoneable: country) }
72
+
73
+ it 'should return a list of countries' do
74
+ expect(country_zone.country_list).to eq([country])
75
+ end
76
+ end
77
+
78
+ context "when zone consists of states" do
79
+ let(:state_zone) { create(:zone, name: 'StateZone') }
80
+
81
+ before { state_zone.members.create(zoneable: state) }
82
+
83
+ it 'should return a list of countries' do
84
+ expect(state_zone.country_list).to eq([state.country])
85
+ end
86
+ end
87
+ end
88
+
89
+ context "#include?" do
90
+ let(:state) { create(:state) }
91
+ let(:country) { state.country }
92
+ let(:address) { create(:address, state: state) }
93
+
94
+ context "when zone is country type" do
95
+ let(:country_zone) { create(:zone, name: 'CountryZone') }
96
+ before { country_zone.members.create(zoneable: country) }
97
+
98
+ it "should be true" do
99
+ expect(country_zone.include?(address)).to be true
100
+ end
101
+ end
102
+
103
+ context "when zone is state type" do
104
+ let(:state_zone) { create(:zone, name: 'StateZone') }
105
+ before { state_zone.members.create(zoneable: state) }
106
+
107
+ it "should be true" do
108
+ expect(state_zone.include?(address)).to be true
109
+ end
110
+ end
111
+ end
112
+
113
+ context ".default_tax" do
114
+ context "when there is a default tax zone specified" do
115
+ before { @foo_zone = create(:zone, name: 'whatever', default_tax: true) }
116
+
117
+ it "should be the correct zone" do
118
+ foo_zone = create(:zone, name: 'foo')
119
+ expect(Spree::Zone.default_tax).to eq(@foo_zone)
120
+ end
121
+ end
122
+
123
+ context "when there is no default tax zone specified" do
124
+ it "should be nil" do
125
+ expect(Spree::Zone.default_tax).to be_nil
126
+ end
127
+ end
128
+ end
129
+
130
+ context "#contains?" do
131
+ let(:country1) { create(:country) }
132
+ let(:country2) { create(:country) }
133
+ let(:country3) { create(:country) }
134
+
135
+ before do
136
+ @source = create(:zone, name: 'source', zone_members: [])
137
+ @target = create(:zone, name: 'target', zone_members: [])
138
+ end
139
+
140
+ context "when the target has no members" do
141
+ before { @source.members.create(zoneable: country1) }
142
+
143
+ it "should be false" do
144
+ expect(@source.contains?(@target)).to be false
145
+ end
146
+ end
147
+
148
+ context "when the source has no members" do
149
+ before { @target.members.create(zoneable: country1) }
150
+
151
+ it "should be false" do
152
+ expect(@source.contains?(@target)).to be false
153
+ end
154
+ end
155
+
156
+ context "when both zones are the same zone" do
157
+ before do
158
+ @source.members.create(zoneable: country1)
159
+ @target = @source
160
+ end
161
+
162
+ it "should be true" do
163
+ expect(@source.contains?(@target)).to be true
164
+ end
165
+ end
166
+
167
+ context "when both zones are of the same type" do
168
+ before do
169
+ @source.members.create(zoneable: country1)
170
+ @source.members.create(zoneable: country2)
171
+ end
172
+
173
+ context "when all members are included in the zone we check against" do
174
+ before do
175
+ @target.members.create(zoneable: country1)
176
+ @target.members.create(zoneable: country2)
177
+ end
178
+
179
+ it "should be true" do
180
+ expect(@source.contains?(@target)).to be true
181
+ end
182
+ end
183
+
184
+ context "when some members are included in the zone we check against" do
185
+ before do
186
+ @target.members.create(zoneable: country1)
187
+ @target.members.create(zoneable: country2)
188
+ @target.members.create(zoneable: create(:country))
189
+ end
190
+
191
+ it "should be false" do
192
+ expect(@source.contains?(@target)).to be false
193
+ end
194
+ end
195
+
196
+ context "when none of the members are included in the zone we check against" do
197
+ before do
198
+ @target.members.create(zoneable: create(:country))
199
+ @target.members.create(zoneable: create(:country))
200
+ end
201
+
202
+ it "should be false" do
203
+ expect(@source.contains?(@target)).to be false
204
+ end
205
+ end
206
+ end
207
+
208
+ context "when checking country against state" do
209
+ before do
210
+ @source.members.create(zoneable: create(:state))
211
+ @target.members.create(zoneable: country1)
212
+ end
213
+
214
+ it "should be false" do
215
+ expect(@source.contains?(@target)).to be false
216
+ end
217
+ end
218
+
219
+ context "when checking state against country" do
220
+ before { @source.members.create(zoneable: country1) }
221
+
222
+ context "when all states contained in one of the countries we check against" do
223
+
224
+ before do
225
+ state1 = create(:state, country: country1)
226
+ @target.members.create(zoneable: state1)
227
+ end
228
+
229
+ it "should be true" do
230
+ expect(@source.contains?(@target)).to be true
231
+ end
232
+ end
233
+
234
+ context "when some states contained in one of the countries we check against" do
235
+
236
+ before do
237
+ state1 = create(:state, country: country1)
238
+ @target.members.create(zoneable: state1)
239
+ @target.members.create(zoneable: create(:state, country: country2))
240
+ end
241
+
242
+ it "should be false" do
243
+ expect(@source.contains?(@target)).to be false
244
+ end
245
+ end
246
+
247
+ context "when none of the states contained in any of the countries we check against" do
248
+
249
+ before do
250
+ @target.members.create(zoneable: create(:state, country: country2))
251
+ @target.members.create(zoneable: create(:state, country: country2))
252
+ end
253
+
254
+ it "should be false" do
255
+ expect(@source.contains?(@target)).to be false
256
+ end
257
+ end
258
+ end
259
+
260
+ end
261
+
262
+ context "#save" do
263
+ context "when default_tax is true" do
264
+ it "should clear previous default tax zone" do
265
+ zone1 = create(:zone, name: 'foo', default_tax: true)
266
+ zone = create(:zone, name: 'bar', default_tax: true)
267
+ expect(zone1.reload.default_tax).to be false
268
+ end
269
+ end
270
+
271
+ context "when a zone member country is added to an existing zone consisting of state members" do
272
+ it "should remove existing state members" do
273
+ zone = create(:zone, name: 'foo', zone_members: [])
274
+ state = create(:state)
275
+ country = create(:country)
276
+ zone.members.create(zoneable: state)
277
+ country_member = zone.members.create(zoneable: country)
278
+ zone.save
279
+ expect(zone.reload.members).to eq([country_member])
280
+ end
281
+ end
282
+ end
283
+
284
+ context "#kind" do
285
+ context "when the zone consists of country zone members" do
286
+ before do
287
+ @zone = create(:zone, name: 'country', zone_members: [])
288
+ @zone.members.create(zoneable: create(:country))
289
+ end
290
+ it "should return the kind of zone member" do
291
+ expect(@zone.kind).to eq("country")
292
+ end
293
+ end
294
+
295
+ context "when the zone consists of state zone members" do
296
+ before do
297
+ @zone = create(:zone, name: 'state', zone_members: [])
298
+ @zone.members.create(zoneable: create(:state))
299
+ end
300
+ it "should return the kind of zone member" do
301
+ expect(@zone.kind).to eq("state")
302
+ end
303
+ end
304
+ end
305
+ end
@@ -0,0 +1,78 @@
1
+ if ENV["COVERAGE"]
2
+ # Run Coverage report
3
+ require 'simplecov'
4
+ SimpleCov.start do
5
+ add_group 'Controllers', 'app/controllers'
6
+ add_group 'Helpers', 'app/helpers'
7
+ add_group 'Mailers', 'app/mailers'
8
+ add_group 'Models', 'app/models'
9
+ add_group 'Views', 'app/views'
10
+ add_group 'Jobs', 'app/jobs'
11
+ add_group 'Libraries', 'lib'
12
+ end
13
+ end
14
+
15
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
16
+ # from the project root directory.
17
+ ENV["RAILS_ENV"] ||= 'test'
18
+
19
+ begin
20
+ require File.expand_path("../dummy/config/environment", __FILE__)
21
+ rescue LoadError
22
+ $stderr.puts "Could not load dummy application. Please ensure you have run `bundle exec rake test_app`"
23
+ exit 1
24
+ end
25
+
26
+ require 'rspec/rails'
27
+ require 'database_cleaner'
28
+ require 'ffaker'
29
+
30
+ Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
31
+
32
+ if ENV["CHECK_TRANSLATIONS"]
33
+ require "spree/testing_support/i18n"
34
+ end
35
+
36
+ require 'spree/testing_support/factories'
37
+ require 'spree/testing_support/preferences'
38
+ require 'spree/testing_support/mail'
39
+ require 'cancan/matchers'
40
+
41
+ RSpec.configure do |config|
42
+ config.color = true
43
+ config.infer_spec_type_from_file_location!
44
+ config.mock_with :rspec
45
+
46
+ config.fixture_path = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures")
47
+
48
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
49
+ # examples within a transaction, comment the following line or assign false
50
+ # instead of true.
51
+ config.use_transactional_fixtures = true
52
+
53
+ config.before :suite do
54
+ DatabaseCleaner.clean_with :truncation
55
+ end
56
+
57
+ config.before :each do
58
+ Rails.cache.clear
59
+ reset_spree_preferences
60
+ end
61
+
62
+ config.include FactoryGirl::Syntax::Methods
63
+ config.include Spree::TestingSupport::Preferences
64
+ config.include Spree::TestingSupport::Mail
65
+ config.extend WithModel
66
+
67
+ config.fail_fast = ENV['FAIL_FAST'] || false
68
+
69
+ config.extend WithModel
70
+ config.filter_run focus: true
71
+ config.run_all_when_everything_filtered = true
72
+
73
+ config.example_status_persistence_file_path = "./spec/examples.txt"
74
+
75
+ config.order = :random
76
+
77
+ Kernel.srand config.seed
78
+ end
@@ -0,0 +1,5 @@
1
+ class BigDecimal
2
+ def inspect
3
+ "#<BigDecimal: #{to_s}>"
4
+ end
5
+ end
@@ -0,0 +1,34 @@
1
+ shared_examples_for "default_price" do
2
+ let(:model) { described_class }
3
+ subject(:instance) { FactoryGirl.build(model.name.demodulize.downcase.to_sym) }
4
+
5
+ describe '.has_one :default_price' do
6
+ let(:default_price_association) { model.reflect_on_association(:default_price) }
7
+
8
+ it 'should be a has one association' do
9
+ expect(default_price_association.macro).to eql :has_one
10
+ end
11
+
12
+ it 'should have a dependent destroy' do
13
+ expect(default_price_association.options[:dependent]).to eql :destroy
14
+ end
15
+
16
+ it 'should have the class name of Spree::Price' do
17
+ expect(default_price_association.options[:class_name]).to eql 'Spree::Price'
18
+ end
19
+ end
20
+
21
+ describe '#default_price' do
22
+ subject { instance.default_price }
23
+
24
+ describe '#class' do
25
+ subject { super().class }
26
+ it { is_expected.to eql Spree::Price }
27
+ end
28
+ end
29
+
30
+ describe '#has_default_price?' do
31
+ subject { super().has_default_price? }
32
+ it { is_expected.to be_truthy }
33
+ end
34
+ end
@@ -0,0 +1,4 @@
1
+ class DummyAbility
2
+ include CanCan::Ability
3
+ end
4
+
@@ -0,0 +1,2 @@
1
+ class Spree::Gateway::Test < Spree::Gateway
2
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-23 00:00:00.000000000 Z
11
+ date: 2015-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -352,13 +352,30 @@ dependencies:
352
352
  - - "~>"
353
353
  - !ruby/object:Gem::Version
354
354
  version: '1.6'
355
+ - !ruby/object:Gem::Dependency
356
+ name: sprockets-rails
357
+ requirement: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - "~>"
360
+ - !ruby/object:Gem::Version
361
+ version: '2.0'
362
+ type: :runtime
363
+ prerelease: false
364
+ version_requirements: !ruby/object:Gem::Requirement
365
+ requirements:
366
+ - - "~>"
367
+ - !ruby/object:Gem::Version
368
+ version: '2.0'
355
369
  description: Essential models, mailers, and classes for the Solidus e-commerce project.
356
370
  email: contact@solidus.io
357
371
  executables: []
358
372
  extensions: []
359
373
  extra_rdoc_files: []
360
374
  files:
375
+ - CHANGELOG.md
376
+ - Gemfile
361
377
  - LICENSE
378
+ - Rakefile
362
379
  - app/assets/images/logo/solidus_logo.png
363
380
  - app/assets/images/noimage/large.png
364
381
  - app/assets/images/noimage/mini.png
@@ -991,7 +1008,6 @@ files:
991
1008
  - lib/spree/testing_support/mail.rb
992
1009
  - lib/spree/testing_support/order_walkthrough.rb
993
1010
  - lib/spree/testing_support/preferences.rb
994
- - lib/spree/testing_support/rspec-activemodel-mocks_patch.rb
995
1011
  - lib/spree/testing_support/url_helpers.rb
996
1012
  - lib/spree_core.rb
997
1013
  - lib/tasks/core.rake
@@ -1000,6 +1016,216 @@ files:
1000
1016
  - lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake
1001
1017
  - lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake
1002
1018
  - lib/tasks/order_capturing.rake
1019
+ - script/rails
1020
+ - solidus_core.gemspec
1021
+ - spec/fixtures/thinking-cat.jpg
1022
+ - spec/helpers/base_helper_spec.rb
1023
+ - spec/helpers/order_helper_spec.rb
1024
+ - spec/helpers/products_helper_spec.rb
1025
+ - spec/helpers/taxons_helper_spec.rb
1026
+ - spec/lib/calculated_adjustments_spec.rb
1027
+ - spec/lib/i18n_spec.rb
1028
+ - spec/lib/search/base_spec.rb
1029
+ - spec/lib/search/variant_spec.rb
1030
+ - spec/lib/spree/core/controller_helpers/auth_spec.rb
1031
+ - spec/lib/spree/core/controller_helpers/order_spec.rb
1032
+ - spec/lib/spree/core/controller_helpers/search_spec.rb
1033
+ - spec/lib/spree/core/controller_helpers/store_spec.rb
1034
+ - spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb
1035
+ - spec/lib/spree/core/current_store_spec.rb
1036
+ - spec/lib/spree/core/delegate_belongs_to_spec.rb
1037
+ - spec/lib/spree/core/importer/order_spec.rb
1038
+ - spec/lib/spree/core/role_configuration_spec.rb
1039
+ - spec/lib/spree/core/validators/email_spec.rb
1040
+ - spec/lib/spree/localized_number_spec.rb
1041
+ - spec/lib/spree/migrations_spec.rb
1042
+ - spec/lib/spree/money_spec.rb
1043
+ - spec/lib/tasks/exchanges_spec.rb
1044
+ - spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb
1045
+ - spec/lib/tasks/order_capturing_spec.rb
1046
+ - spec/mailers/carton_mailer_spec.rb
1047
+ - spec/mailers/order_mailer_spec.rb
1048
+ - spec/mailers/reimbursement_mailer_spec.rb
1049
+ - spec/mailers/test_mailer_spec.rb
1050
+ - spec/models/spree/ability_spec.rb
1051
+ - spec/models/spree/address_spec.rb
1052
+ - spec/models/spree/adjustment_reason_spec.rb
1053
+ - spec/models/spree/adjustment_spec.rb
1054
+ - spec/models/spree/app_configuration_spec.rb
1055
+ - spec/models/spree/asset_spec.rb
1056
+ - spec/models/spree/calculator/default_tax_spec.rb
1057
+ - spec/models/spree/calculator/flat_percent_item_total_spec.rb
1058
+ - spec/models/spree/calculator/flat_rate_spec.rb
1059
+ - spec/models/spree/calculator/flexi_rate_spec.rb
1060
+ - spec/models/spree/calculator/percent_on_line_item_spec.rb
1061
+ - spec/models/spree/calculator/price_sack_spec.rb
1062
+ - spec/models/spree/calculator/refunds/default_refund_amount_spec.rb
1063
+ - spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb
1064
+ - spec/models/spree/calculator/shipping/flat_rate_spec.rb
1065
+ - spec/models/spree/calculator/shipping/flexi_rate_spec.rb
1066
+ - spec/models/spree/calculator/shipping/per_item_spec.rb
1067
+ - spec/models/spree/calculator/shipping/price_sack_spec.rb
1068
+ - spec/models/spree/calculator/tiered_flat_rate_spec.rb
1069
+ - spec/models/spree/calculator/tiered_percent_spec.rb
1070
+ - spec/models/spree/calculator_spec.rb
1071
+ - spec/models/spree/carton_spec.rb
1072
+ - spec/models/spree/classification_spec.rb
1073
+ - spec/models/spree/concerns/display_money_spec.rb
1074
+ - spec/models/spree/concerns/user_methods_spec.rb
1075
+ - spec/models/spree/credit_card_spec.rb
1076
+ - spec/models/spree/customer_return_spec.rb
1077
+ - spec/models/spree/exchange_spec.rb
1078
+ - spec/models/spree/gateway/bogus_simple.rb
1079
+ - spec/models/spree/gateway/bogus_spec.rb
1080
+ - spec/models/spree/gateway_spec.rb
1081
+ - spec/models/spree/inventory_unit_spec.rb
1082
+ - spec/models/spree/item_adjustments_spec.rb
1083
+ - spec/models/spree/line_item_spec.rb
1084
+ - spec/models/spree/option_type_spec.rb
1085
+ - spec/models/spree/option_value_spec.rb
1086
+ - spec/models/spree/order/address_spec.rb
1087
+ - spec/models/spree/order/adjustments_spec.rb
1088
+ - spec/models/spree/order/callbacks_spec.rb
1089
+ - spec/models/spree/order/checkout_spec.rb
1090
+ - spec/models/spree/order/currency_updater_spec.rb
1091
+ - spec/models/spree/order/finalizing_spec.rb
1092
+ - spec/models/spree/order/payment_spec.rb
1093
+ - spec/models/spree/order/risk_assessment_spec.rb
1094
+ - spec/models/spree/order/state_machine_spec.rb
1095
+ - spec/models/spree/order/tax_spec.rb
1096
+ - spec/models/spree/order/totals_spec.rb
1097
+ - spec/models/spree/order/updating_spec.rb
1098
+ - spec/models/spree/order/validations_spec.rb
1099
+ - spec/models/spree/order_cancellations_spec.rb
1100
+ - spec/models/spree/order_capturing_spec.rb
1101
+ - spec/models/spree/order_contents_spec.rb
1102
+ - spec/models/spree/order_inventory_spec.rb
1103
+ - spec/models/spree/order_mutex_spec.rb
1104
+ - spec/models/spree/order_promotion_spec.rb
1105
+ - spec/models/spree/order_shipping_spec.rb
1106
+ - spec/models/spree/order_spec.rb
1107
+ - spec/models/spree/order_stock_location_spec.rb
1108
+ - spec/models/spree/order_updater_spec.rb
1109
+ - spec/models/spree/payment_method/store_credit_spec.rb
1110
+ - spec/models/spree/payment_method_spec.rb
1111
+ - spec/models/spree/payment_spec.rb
1112
+ - spec/models/spree/permission_sets/base_spec.rb
1113
+ - spec/models/spree/permission_sets/configuration_display.rb
1114
+ - spec/models/spree/permission_sets/configuration_management_spec.rb
1115
+ - spec/models/spree/permission_sets/dashboard_display_spec.rb
1116
+ - spec/models/spree/permission_sets/order_display_spec.rb
1117
+ - spec/models/spree/permission_sets/order_management_spec.rb
1118
+ - spec/models/spree/permission_sets/product_display_spec.rb
1119
+ - spec/models/spree/permission_sets/product_management_spec.rb
1120
+ - spec/models/spree/permission_sets/promotion_display_spec.rb
1121
+ - spec/models/spree/permission_sets/promotion_management_spec.rb
1122
+ - spec/models/spree/permission_sets/report_display_spec.rb
1123
+ - spec/models/spree/permission_sets/restricted_transfer_management_spec.rb
1124
+ - spec/models/spree/permission_sets/stock_display_spec.rb
1125
+ - spec/models/spree/permission_sets/stock_management_spec.rb
1126
+ - spec/models/spree/permission_sets/user_display_spec.rb
1127
+ - spec/models/spree/permission_sets/user_management_spec.rb
1128
+ - spec/models/spree/preference_spec.rb
1129
+ - spec/models/spree/preferences/configuration_spec.rb
1130
+ - spec/models/spree/preferences/preferable_spec.rb
1131
+ - spec/models/spree/preferences/scoped_store_spec.rb
1132
+ - spec/models/spree/preferences/static_model_preferences_spec.rb
1133
+ - spec/models/spree/preferences/statically_configurable_spec.rb
1134
+ - spec/models/spree/preferences/store_spec.rb
1135
+ - spec/models/spree/price_spec.rb
1136
+ - spec/models/spree/product/scopes_spec.rb
1137
+ - spec/models/spree/product_duplicator_spec.rb
1138
+ - spec/models/spree/product_filter_spec.rb
1139
+ - spec/models/spree/product_property_spec.rb
1140
+ - spec/models/spree/product_spec.rb
1141
+ - spec/models/spree/promotion/actions/create_adjustment_spec.rb
1142
+ - spec/models/spree/promotion/actions/create_item_adjustments_spec.rb
1143
+ - spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb
1144
+ - spec/models/spree/promotion/actions/free_shipping_spec.rb
1145
+ - spec/models/spree/promotion/rules/first_order_spec.rb
1146
+ - spec/models/spree/promotion/rules/item_total_spec.rb
1147
+ - spec/models/spree/promotion/rules/nth_order_spec.rb
1148
+ - spec/models/spree/promotion/rules/one_use_per_user_spec.rb
1149
+ - spec/models/spree/promotion/rules/option_value_spec.rb
1150
+ - spec/models/spree/promotion/rules/product_spec.rb
1151
+ - spec/models/spree/promotion/rules/taxon_spec.rb
1152
+ - spec/models/spree/promotion/rules/user_logged_in_spec.rb
1153
+ - spec/models/spree/promotion/rules/user_spec.rb
1154
+ - spec/models/spree/promotion_builder_spec.rb
1155
+ - spec/models/spree/promotion_category_spec.rb
1156
+ - spec/models/spree/promotion_code/code_builder_spec.rb
1157
+ - spec/models/spree/promotion_code_spec.rb
1158
+ - spec/models/spree/promotion_handler/cart_spec.rb
1159
+ - spec/models/spree/promotion_handler/coupon_spec.rb
1160
+ - spec/models/spree/promotion_handler/free_shipping_spec.rb
1161
+ - spec/models/spree/promotion_handler/page_spec.rb
1162
+ - spec/models/spree/promotion_rule_spec.rb
1163
+ - spec/models/spree/promotion_spec.rb
1164
+ - spec/models/spree/refund_spec.rb
1165
+ - spec/models/spree/reimbursement/credit_spec.rb
1166
+ - spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb
1167
+ - spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb
1168
+ - spec/models/spree/reimbursement_performer_spec.rb
1169
+ - spec/models/spree/reimbursement_spec.rb
1170
+ - spec/models/spree/reimbursement_tax_calculator_spec.rb
1171
+ - spec/models/spree/reimbursement_type/credit_spec.rb
1172
+ - spec/models/spree/reimbursement_type/exchange_spec.rb
1173
+ - spec/models/spree/reimbursement_type/original_payment_spec.rb
1174
+ - spec/models/spree/reimbursement_type/store_credit_spec.rb
1175
+ - spec/models/spree/return_authorization_spec.rb
1176
+ - spec/models/spree/return_item/eligibility_validator/default_spec.rb
1177
+ - spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb
1178
+ - spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb
1179
+ - spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb
1180
+ - spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb
1181
+ - spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb
1182
+ - spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb
1183
+ - spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
1184
+ - spec/models/spree/return_item_spec.rb
1185
+ - spec/models/spree/returns_calculator_spec.rb
1186
+ - spec/models/spree/shipment_spec.rb
1187
+ - spec/models/spree/shipping_calculator_spec.rb
1188
+ - spec/models/spree/shipping_method_spec.rb
1189
+ - spec/models/spree/shipping_rate_spec.rb
1190
+ - spec/models/spree/state_spec.rb
1191
+ - spec/models/spree/stock/availability_validator_spec.rb
1192
+ - spec/models/spree/stock/coordinator_spec.rb
1193
+ - spec/models/spree/stock/differentiator_spec.rb
1194
+ - spec/models/spree/stock/estimator_spec.rb
1195
+ - spec/models/spree/stock/inventory_unit_builder_spec.rb
1196
+ - spec/models/spree/stock/package_spec.rb
1197
+ - spec/models/spree/stock/packer_spec.rb
1198
+ - spec/models/spree/stock/prioritizer_spec.rb
1199
+ - spec/models/spree/stock/quantifier_spec.rb
1200
+ - spec/models/spree/stock/splitter/backordered_spec.rb
1201
+ - spec/models/spree/stock/splitter/base_spec.rb
1202
+ - spec/models/spree/stock/splitter/shipping_category_spec.rb
1203
+ - spec/models/spree/stock/splitter/weight_spec.rb
1204
+ - spec/models/spree/stock_item_spec.rb
1205
+ - spec/models/spree/stock_location_spec.rb
1206
+ - spec/models/spree/stock_movement_spec.rb
1207
+ - spec/models/spree/stock_transfer_spec.rb
1208
+ - spec/models/spree/store_credit_category_spec.rb
1209
+ - spec/models/spree/store_credit_event_spec.rb
1210
+ - spec/models/spree/store_credit_spec.rb
1211
+ - spec/models/spree/store_spec.rb
1212
+ - spec/models/spree/tax_category_spec.rb
1213
+ - spec/models/spree/tax_rate_spec.rb
1214
+ - spec/models/spree/taxon_spec.rb
1215
+ - spec/models/spree/taxonomy_spec.rb
1216
+ - spec/models/spree/tracker_spec.rb
1217
+ - spec/models/spree/transfer_item_spec.rb
1218
+ - spec/models/spree/unit_cancel_spec.rb
1219
+ - spec/models/spree/user_spec.rb
1220
+ - spec/models/spree/validations/db_maximum_length_validator_spec.rb
1221
+ - spec/models/spree/variant/scopes_spec.rb
1222
+ - spec/models/spree/variant_spec.rb
1223
+ - spec/models/spree/zone_spec.rb
1224
+ - spec/spec_helper.rb
1225
+ - spec/support/big_decimal.rb
1226
+ - spec/support/concerns/default_price.rb
1227
+ - spec/support/dummy_ability.rb
1228
+ - spec/support/test_gateway.rb
1003
1229
  - vendor/assets/javascripts/jquery-migrate-1.0.0.js
1004
1230
  - vendor/assets/javascripts/jquery.payment.js
1005
1231
  - vendor/assets/javascripts/jsuri.js