refinerycms-stores 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +26 -0
- data/Gemfile.lock +306 -0
- data/Guardfile +27 -0
- data/LICENSE.txt +20 -0
- data/Rakefile +65 -0
- data/VERSION +1 -0
- data/app/assets/stylesheets/refinery/refinerycms-stores.sass +76 -0
- data/app/controllers/refinery/addresses/admin/addresses_controller.rb +12 -0
- data/app/controllers/refinery/orders/admin/orders_controller.rb +12 -0
- data/app/controllers/refinery/orders/orders_controller.rb +96 -0
- data/app/controllers/refinery/products/admin/products_controller.rb +12 -0
- data/app/controllers/refinery/products/products_controller.rb +17 -0
- data/app/controllers/refinery/stores/admin/stores_controller.rb +12 -0
- data/app/controllers/refinery/stores/stores_controller.rb +80 -0
- data/app/helpers/refinery/orders/orders_helper.rb +11 -0
- data/app/models/refinery/addresses/address.rb +12 -0
- data/app/models/refinery/orders/line_item.rb +24 -0
- data/app/models/refinery/orders/order.rb +364 -0
- data/app/models/refinery/products/product.rb +17 -0
- data/app/models/refinery/stores/store.rb +33 -0
- data/app/views/refinery/addresses/admin/addresses/_actions.html.erb +25 -0
- data/app/views/refinery/addresses/admin/addresses/_address.html.erb +16 -0
- data/app/views/refinery/addresses/admin/addresses/_addresses.html.erb +2 -0
- data/app/views/refinery/addresses/admin/addresses/_form.html.erb +89 -0
- data/app/views/refinery/addresses/admin/addresses/_records.html.erb +18 -0
- data/app/views/refinery/addresses/admin/addresses/_sortable_list.html.erb +5 -0
- data/app/views/refinery/addresses/admin/addresses/edit.html.erb +1 -0
- data/app/views/refinery/addresses/admin/addresses/index.html.erb +7 -0
- data/app/views/refinery/addresses/admin/addresses/new.html.erb +1 -0
- data/app/views/refinery/orders/admin/orders/_actions.html.erb +25 -0
- data/app/views/refinery/orders/admin/orders/_form.html.erb +122 -0
- data/app/views/refinery/orders/admin/orders/_order.html.erb +20 -0
- data/app/views/refinery/orders/admin/orders/_orders.html.erb +2 -0
- data/app/views/refinery/orders/admin/orders/_records.html.erb +18 -0
- data/app/views/refinery/orders/admin/orders/_sortable_list.html.erb +5 -0
- data/app/views/refinery/orders/admin/orders/edit.html.erb +1 -0
- data/app/views/refinery/orders/admin/orders/index.html.erb +7 -0
- data/app/views/refinery/orders/admin/orders/new.html.erb +1 -0
- data/app/views/refinery/orders/orders/_address_form.html.haml +35 -0
- data/app/views/refinery/orders/orders/_card_form.html.haml +63 -0
- data/app/views/refinery/orders/orders/_order_snapshot.html.haml +44 -0
- data/app/views/refinery/orders/orders/confirmation.html.haml +26 -0
- data/app/views/refinery/orders/orders/edit.html.haml +36 -0
- data/app/views/refinery/orders/orders/index.html.haml +6 -0
- data/app/views/refinery/orders/orders/purchase.html.haml +25 -0
- data/app/views/refinery/orders/orders/show.html.haml +36 -0
- data/app/views/refinery/products/admin/products/_actions.html.erb +25 -0
- data/app/views/refinery/products/admin/products/_form.html.erb +127 -0
- data/app/views/refinery/products/admin/products/_product.html.erb +20 -0
- data/app/views/refinery/products/admin/products/_products.html.erb +2 -0
- data/app/views/refinery/products/admin/products/_records.html.erb +18 -0
- data/app/views/refinery/products/admin/products/_sortable_list.html.erb +5 -0
- data/app/views/refinery/products/admin/products/edit.html.erb +4 -0
- data/app/views/refinery/products/admin/products/index.html.erb +10 -0
- data/app/views/refinery/products/admin/products/new.html.erb +4 -0
- data/app/views/refinery/products/products/show.html.erb +105 -0
- data/app/views/refinery/stores/admin/stores/_actions.html.erb +57 -0
- data/app/views/refinery/stores/admin/stores/_form.html.erb +56 -0
- data/app/views/refinery/stores/admin/stores/_records.html.erb +18 -0
- data/app/views/refinery/stores/admin/stores/_sortable_list.html.erb +5 -0
- data/app/views/refinery/stores/admin/stores/_store.html.erb +20 -0
- data/app/views/refinery/stores/admin/stores/_stores.html.erb +2 -0
- data/app/views/refinery/stores/admin/stores/edit.html.erb +4 -0
- data/app/views/refinery/stores/admin/stores/index.html.erb +13 -0
- data/app/views/refinery/stores/admin/stores/new.html.erb +4 -0
- data/app/views/refinery/stores/stores/_cart.html.erb +22 -0
- data/app/views/refinery/stores/stores/_cart_item.html.erb +9 -0
- data/app/views/refinery/stores/stores/_list_product.html.erb +16 -0
- data/app/views/refinery/stores/stores/index.html.erb +11 -0
- data/app/views/refinery/stores/stores/show.html.erb +28 -0
- data/config/locales/en.yml +143 -0
- data/config/locales/es.yml +143 -0
- data/config/locales/fr.yml +139 -0
- data/config/locales/nb.yml +143 -0
- data/config/locales/nl.yml +143 -0
- data/config/routes.rb +81 -0
- data/db/migrate/1_create_stores_stores.rb +29 -0
- data/db/migrate/2_create_products_products.rb +44 -0
- data/db/migrate/3_create_orders_orders.rb +44 -0
- data/db/migrate/4_create_orders_line_items.rb +20 -0
- data/db/migrate/5_create_addresses_addresses.rb +39 -0
- data/db/seeds.rb +23 -0
- data/lib/generators/refinery/stores_generator.rb +17 -0
- data/lib/refinery/addresses/engine.rb +31 -0
- data/lib/refinery/addresses.rb +21 -0
- data/lib/refinery/cart.rb +36 -0
- data/lib/refinery/cart_item.rb +28 -0
- data/lib/refinery/orders/engine.rb +31 -0
- data/lib/refinery/orders.rb +21 -0
- data/lib/refinery/products/engine.rb +31 -0
- data/lib/refinery/products.rb +21 -0
- data/lib/refinery/store_gateway.rb +106 -0
- data/lib/refinery/stores/engine.rb +31 -0
- data/lib/refinery/stores.rb +21 -0
- data/lib/refinerycms-stores.rb +7 -0
- data/lib/tasks/refinery/stores.rake +13 -0
- data/readme.md +10 -0
- data/refinerycms-stores.gemspec +261 -0
- data/spec/models/refinery/addresses/address_spec.rb +18 -0
- data/spec/models/refinery/orders/order_spec.rb +18 -0
- data/spec/models/refinery/products/product_spec.rb +18 -0
- data/spec/models/refinery/stores/store_spec.rb +18 -0
- data/spec/requests/refinery/addresses/admin/addresses_spec.rb +101 -0
- data/spec/requests/refinery/orders/admin/orders_spec.rb +101 -0
- data/spec/requests/refinery/products/admin/products_spec.rb +101 -0
- data/spec/requests/refinery/stores/admin/stores_spec.rb +101 -0
- data/spec/spec_helper.rb +53 -0
- data/spec/support/factories/refinery/addresses.rb +7 -0
- data/spec/support/factories/refinery/orders.rb +7 -0
- data/spec/support/factories/refinery/products.rb +7 -0
- data/spec/support/factories/refinery/stores.rb +7 -0
- data/tasks/rspec.rake +6 -0
- data/tasks/testing.rake +8 -0
- data/test/helper.rb +17 -0
- data/test/test_refinerycms-cart.rb +7 -0
- metadata +571 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
module Refinery
|
2
|
+
class StoreGateway
|
3
|
+
|
4
|
+
require 'stripe'
|
5
|
+
|
6
|
+
# #########################################################################
|
7
|
+
# #########################################################################
|
8
|
+
# PAYMENT / GATEWAY CONFIGURATION
|
9
|
+
# #########################################################################
|
10
|
+
# #########################################################################
|
11
|
+
|
12
|
+
attr_reader :gateway_mode,
|
13
|
+
:payment_access_url, :payment_secret_key, :payment_api_key
|
14
|
+
|
15
|
+
# #########################################################################
|
16
|
+
# #########################################################################
|
17
|
+
# ---------------------------------------------------------------------------
|
18
|
+
# initialize -- creates new StoreGateway obj;
|
19
|
+
# args: store object
|
20
|
+
# ---------------------------------------------------------------------------
|
21
|
+
def initialize( store )
|
22
|
+
@store = store # remember the store
|
23
|
+
|
24
|
+
@gateways = %w( stripe )
|
25
|
+
|
26
|
+
# TODO: make this variable by gateway type
|
27
|
+
payment_gateway = "stripe"
|
28
|
+
@gateway_mode = ::Refinery::Setting.find_or_set( :payment_gateway_mode, "test" )
|
29
|
+
# do some error checking & cleanup
|
30
|
+
@gateway_mode = "test" unless @gateway_mode =~ /(test)|(live)/
|
31
|
+
|
32
|
+
# setup the keys for the payment gateway
|
33
|
+
payment_settings = "#{payment_gateway}_#{@gateway_mode}"
|
34
|
+
|
35
|
+
@payment_access_url = ::Refinery::Setting.find_or_set( "#{payment_settings}_access_url".to_sym, "access URL missing" )
|
36
|
+
@payment_secret_key = ::Refinery::Setting.find_or_set( "#{payment_settings}_secret_key".to_sym, "secret key missing" )
|
37
|
+
@payment_api_key = ::Refinery::Setting.find_or_set( "#{payment_settings}_api_key".to_sym, "public API key missing" )
|
38
|
+
end
|
39
|
+
|
40
|
+
# ---------------------------------------------------------------------------
|
41
|
+
# ---------------------------------------------------------------------------
|
42
|
+
def store_name
|
43
|
+
str = @store.name
|
44
|
+
str << " [TEST MODE]" if @gateway_mode == "test"
|
45
|
+
return str
|
46
|
+
end
|
47
|
+
|
48
|
+
# ---------------------------------------------------------------------------
|
49
|
+
# ---------------------------------------------------------------------------
|
50
|
+
def purchase_description( order_nbr, email )
|
51
|
+
"#{store_name } Order: #{order_nbr.to_s} purchase for: #{email.to_s}"
|
52
|
+
end
|
53
|
+
|
54
|
+
# ---------------------------------------------------------------------------
|
55
|
+
# charge_purchase -- charge customer card for purchase
|
56
|
+
# return nil if error; else the JSON charge object from Stripe
|
57
|
+
# args:
|
58
|
+
# token -- string for CC token produced earlier
|
59
|
+
# amount -- float amt for charge in dollars.cents
|
60
|
+
# order -- order object
|
61
|
+
# email -- customer email
|
62
|
+
# ---------------------------------------------------------------------------
|
63
|
+
def charge_purchase( token, amount, order, email )
|
64
|
+
begin
|
65
|
+
# secret_key for Stripe
|
66
|
+
Stripe.api_key = @payment_secret_key
|
67
|
+
|
68
|
+
# create the charge on Stripe's servers
|
69
|
+
# this will charge the user's card
|
70
|
+
|
71
|
+
charge = Stripe::Charge.create(
|
72
|
+
:amount => (amount * 100).to_i, # amount in cents
|
73
|
+
:currency => "usd", # US$
|
74
|
+
:card => token,
|
75
|
+
:description => purchase_description( order.order_number, email )
|
76
|
+
)
|
77
|
+
|
78
|
+
return charge
|
79
|
+
|
80
|
+
rescue ::Stripe::StripeError
|
81
|
+
order.errors.add($!.class.to_s, $!.to_s ) # capture errors to base object
|
82
|
+
# order.errors.add(:cc_token, $!.class.to_s + ": " + $!.to_s ) # capture errors to base object
|
83
|
+
return nil
|
84
|
+
|
85
|
+
end # begin .. end for exceptions
|
86
|
+
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
# ---------------------------------------------------------------------------
|
91
|
+
# ---------------------------------------------------------------------------
|
92
|
+
def register_gateway(name)
|
93
|
+
@gateways << name
|
94
|
+
end
|
95
|
+
|
96
|
+
# ---------------------------------------------------------------------------
|
97
|
+
# ---------------------------------------------------------------------------
|
98
|
+
def clear_gateways!
|
99
|
+
@gateways = []
|
100
|
+
end
|
101
|
+
|
102
|
+
# #########################################################################
|
103
|
+
# #########################################################################
|
104
|
+
|
105
|
+
end # class StoreGateway
|
106
|
+
end # module Refinery
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Refinery
|
2
|
+
module Stores
|
3
|
+
class Engine < Rails::Engine
|
4
|
+
include Refinery::Engine
|
5
|
+
isolate_namespace Refinery::Stores
|
6
|
+
|
7
|
+
engine_name :refinery_stores
|
8
|
+
|
9
|
+
initializer "register refinerycms_stores plugin" do |app|
|
10
|
+
Refinery::Plugin.register do |plugin|
|
11
|
+
plugin.name = "stores"
|
12
|
+
plugin.url = {
|
13
|
+
:controller => 'refinery/stores/admin/stores',
|
14
|
+
:action => 'index'
|
15
|
+
}
|
16
|
+
plugin.pathname = root
|
17
|
+
|
18
|
+
plugin.activity = {
|
19
|
+
:class_name => :'refinery/stores/store',
|
20
|
+
:title => 'name'
|
21
|
+
}
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
config.after_initialize do
|
27
|
+
Refinery.register_engine(Refinery::Stores)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'refinerycms-core'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
autoload :StoresGenerator, 'generators/refinery/stores_generator'
|
5
|
+
|
6
|
+
module Stores
|
7
|
+
require 'refinery/stores/engine'
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_writer :root
|
11
|
+
|
12
|
+
def root
|
13
|
+
@root ||= Pathname.new(File.expand_path('../../../', __FILE__))
|
14
|
+
end
|
15
|
+
|
16
|
+
def factory_paths
|
17
|
+
@factory_paths ||= [ root.join('spec', 'factories').to_s ]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Stores engine for Refinery CMS.
|
2
|
+
|
3
|
+
## How to build this engine as a gem
|
4
|
+
|
5
|
+
cd vendor/engines/stores
|
6
|
+
gem build refinerycms-stores.gemspec
|
7
|
+
gem install refinerycms-stores.gem
|
8
|
+
|
9
|
+
# Sign up for a http://rubygems.org/ account and publish the gem
|
10
|
+
gem push refinerycms-stores.gem
|
@@ -0,0 +1,261 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "refinerycms-stores"
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Daudi Amani"]
|
12
|
+
s.date = "2012-03-06"
|
13
|
+
s.description = "Complete engine for shopping cart to be used with a RefineryCMS project"
|
14
|
+
s.email = "dsaronin@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"Gemfile",
|
20
|
+
"Gemfile.lock",
|
21
|
+
"Guardfile",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"app/assets/stylesheets/refinery/refinerycms-stores.sass",
|
26
|
+
"app/controllers/refinery/addresses/admin/addresses_controller.rb",
|
27
|
+
"app/controllers/refinery/orders/admin/orders_controller.rb",
|
28
|
+
"app/controllers/refinery/orders/orders_controller.rb",
|
29
|
+
"app/controllers/refinery/products/admin/products_controller.rb",
|
30
|
+
"app/controllers/refinery/products/products_controller.rb",
|
31
|
+
"app/controllers/refinery/stores/admin/stores_controller.rb",
|
32
|
+
"app/controllers/refinery/stores/stores_controller.rb",
|
33
|
+
"app/helpers/refinery/orders/orders_helper.rb",
|
34
|
+
"app/models/refinery/addresses/address.rb",
|
35
|
+
"app/models/refinery/orders/line_item.rb",
|
36
|
+
"app/models/refinery/orders/order.rb",
|
37
|
+
"app/models/refinery/products/product.rb",
|
38
|
+
"app/models/refinery/stores/store.rb",
|
39
|
+
"app/views/refinery/addresses/admin/addresses/_actions.html.erb",
|
40
|
+
"app/views/refinery/addresses/admin/addresses/_address.html.erb",
|
41
|
+
"app/views/refinery/addresses/admin/addresses/_addresses.html.erb",
|
42
|
+
"app/views/refinery/addresses/admin/addresses/_form.html.erb",
|
43
|
+
"app/views/refinery/addresses/admin/addresses/_records.html.erb",
|
44
|
+
"app/views/refinery/addresses/admin/addresses/_sortable_list.html.erb",
|
45
|
+
"app/views/refinery/addresses/admin/addresses/edit.html.erb",
|
46
|
+
"app/views/refinery/addresses/admin/addresses/index.html.erb",
|
47
|
+
"app/views/refinery/addresses/admin/addresses/new.html.erb",
|
48
|
+
"app/views/refinery/orders/admin/orders/_actions.html.erb",
|
49
|
+
"app/views/refinery/orders/admin/orders/_form.html.erb",
|
50
|
+
"app/views/refinery/orders/admin/orders/_order.html.erb",
|
51
|
+
"app/views/refinery/orders/admin/orders/_orders.html.erb",
|
52
|
+
"app/views/refinery/orders/admin/orders/_records.html.erb",
|
53
|
+
"app/views/refinery/orders/admin/orders/_sortable_list.html.erb",
|
54
|
+
"app/views/refinery/orders/admin/orders/edit.html.erb",
|
55
|
+
"app/views/refinery/orders/admin/orders/index.html.erb",
|
56
|
+
"app/views/refinery/orders/admin/orders/new.html.erb",
|
57
|
+
"app/views/refinery/orders/orders/_address_form.html.haml",
|
58
|
+
"app/views/refinery/orders/orders/_card_form.html.haml",
|
59
|
+
"app/views/refinery/orders/orders/_order_snapshot.html.haml",
|
60
|
+
"app/views/refinery/orders/orders/confirmation.html.haml",
|
61
|
+
"app/views/refinery/orders/orders/edit.html.haml",
|
62
|
+
"app/views/refinery/orders/orders/index.html.haml",
|
63
|
+
"app/views/refinery/orders/orders/purchase.html.haml",
|
64
|
+
"app/views/refinery/orders/orders/show.html.haml",
|
65
|
+
"app/views/refinery/products/admin/products/_actions.html.erb",
|
66
|
+
"app/views/refinery/products/admin/products/_form.html.erb",
|
67
|
+
"app/views/refinery/products/admin/products/_product.html.erb",
|
68
|
+
"app/views/refinery/products/admin/products/_products.html.erb",
|
69
|
+
"app/views/refinery/products/admin/products/_records.html.erb",
|
70
|
+
"app/views/refinery/products/admin/products/_sortable_list.html.erb",
|
71
|
+
"app/views/refinery/products/admin/products/edit.html.erb",
|
72
|
+
"app/views/refinery/products/admin/products/index.html.erb",
|
73
|
+
"app/views/refinery/products/admin/products/new.html.erb",
|
74
|
+
"app/views/refinery/products/products/show.html.erb",
|
75
|
+
"app/views/refinery/stores/admin/stores/_actions.html.erb",
|
76
|
+
"app/views/refinery/stores/admin/stores/_form.html.erb",
|
77
|
+
"app/views/refinery/stores/admin/stores/_records.html.erb",
|
78
|
+
"app/views/refinery/stores/admin/stores/_sortable_list.html.erb",
|
79
|
+
"app/views/refinery/stores/admin/stores/_store.html.erb",
|
80
|
+
"app/views/refinery/stores/admin/stores/_stores.html.erb",
|
81
|
+
"app/views/refinery/stores/admin/stores/edit.html.erb",
|
82
|
+
"app/views/refinery/stores/admin/stores/index.html.erb",
|
83
|
+
"app/views/refinery/stores/admin/stores/new.html.erb",
|
84
|
+
"app/views/refinery/stores/stores/_cart.html.erb",
|
85
|
+
"app/views/refinery/stores/stores/_cart_item.html.erb",
|
86
|
+
"app/views/refinery/stores/stores/_list_product.html.erb",
|
87
|
+
"app/views/refinery/stores/stores/index.html.erb",
|
88
|
+
"app/views/refinery/stores/stores/show.html.erb",
|
89
|
+
"config/locales/en.yml",
|
90
|
+
"config/locales/es.yml",
|
91
|
+
"config/locales/fr.yml",
|
92
|
+
"config/locales/nb.yml",
|
93
|
+
"config/locales/nl.yml",
|
94
|
+
"config/routes.rb",
|
95
|
+
"db/migrate/1_create_stores_stores.rb",
|
96
|
+
"db/migrate/2_create_products_products.rb",
|
97
|
+
"db/migrate/3_create_orders_orders.rb",
|
98
|
+
"db/migrate/4_create_orders_line_items.rb",
|
99
|
+
"db/migrate/5_create_addresses_addresses.rb",
|
100
|
+
"db/seeds.rb",
|
101
|
+
"lib/generators/refinery/stores_generator.rb",
|
102
|
+
"lib/refinery/addresses.rb",
|
103
|
+
"lib/refinery/addresses/engine.rb",
|
104
|
+
"lib/refinery/cart.rb",
|
105
|
+
"lib/refinery/cart_item.rb",
|
106
|
+
"lib/refinery/orders.rb",
|
107
|
+
"lib/refinery/orders/engine.rb",
|
108
|
+
"lib/refinery/products.rb",
|
109
|
+
"lib/refinery/products/engine.rb",
|
110
|
+
"lib/refinery/store_gateway.rb",
|
111
|
+
"lib/refinery/stores.rb",
|
112
|
+
"lib/refinery/stores/engine.rb",
|
113
|
+
"lib/refinerycms-stores.rb",
|
114
|
+
"lib/tasks/refinery/stores.rake",
|
115
|
+
"readme.md",
|
116
|
+
"refinerycms-stores.gemspec",
|
117
|
+
"spec/models/refinery/addresses/address_spec.rb",
|
118
|
+
"spec/models/refinery/orders/order_spec.rb",
|
119
|
+
"spec/models/refinery/products/product_spec.rb",
|
120
|
+
"spec/models/refinery/stores/store_spec.rb",
|
121
|
+
"spec/requests/refinery/addresses/admin/addresses_spec.rb",
|
122
|
+
"spec/requests/refinery/orders/admin/orders_spec.rb",
|
123
|
+
"spec/requests/refinery/products/admin/products_spec.rb",
|
124
|
+
"spec/requests/refinery/stores/admin/stores_spec.rb",
|
125
|
+
"spec/spec_helper.rb",
|
126
|
+
"spec/support/factories/refinery/addresses.rb",
|
127
|
+
"spec/support/factories/refinery/orders.rb",
|
128
|
+
"spec/support/factories/refinery/products.rb",
|
129
|
+
"spec/support/factories/refinery/stores.rb",
|
130
|
+
"tasks/rspec.rake",
|
131
|
+
"tasks/testing.rake",
|
132
|
+
"test/helper.rb",
|
133
|
+
"test/test_refinerycms-cart.rb"
|
134
|
+
]
|
135
|
+
s.homepage = "http://github.com/dsaronin@gmail.com/refinerycms-stores"
|
136
|
+
s.licenses = ["MIT"]
|
137
|
+
s.require_paths = ["lib"]
|
138
|
+
s.rubygems_version = "1.8.10"
|
139
|
+
s.summary = "refinerycms shopping cart engine"
|
140
|
+
|
141
|
+
if s.respond_to? :specification_version then
|
142
|
+
s.specification_version = 3
|
143
|
+
|
144
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
145
|
+
s.add_runtime_dependency(%q<refinerycms-stores>, [">= 0"])
|
146
|
+
s.add_runtime_dependency(%q<refinerycms>, ["~> 2.0.0"])
|
147
|
+
s.add_runtime_dependency(%q<jquery-rails>, [">= 0"])
|
148
|
+
s.add_development_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
149
|
+
s.add_development_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
150
|
+
s.add_development_dependency(%q<factory_girl_rails>, [">= 0"])
|
151
|
+
s.add_development_dependency(%q<generator_spec>, [">= 0"])
|
152
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
153
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
154
|
+
s.add_development_dependency(%q<activerecord-jdbcsqlite3-adapter>, [">= 0"])
|
155
|
+
s.add_development_dependency(%q<activerecord-jdbcmysql-adapter>, [">= 0"])
|
156
|
+
s.add_development_dependency(%q<activerecord-jdbcpostgresql-adapter>, [">= 0"])
|
157
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
158
|
+
s.add_development_dependency(%q<mysql2>, [">= 0"])
|
159
|
+
s.add_development_dependency(%q<pg>, [">= 0"])
|
160
|
+
s.add_development_dependency(%q<rb-fchange>, ["~> 0.0.5"])
|
161
|
+
s.add_development_dependency(%q<rb-notifu>, ["~> 0.0.4"])
|
162
|
+
s.add_development_dependency(%q<spork>, ["= 0.9.0.rc9"])
|
163
|
+
s.add_development_dependency(%q<guard-spork>, [">= 0"])
|
164
|
+
s.add_development_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
165
|
+
s.add_development_dependency(%q<libnotify>, ["~> 0.1.3"])
|
166
|
+
s.add_development_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
167
|
+
s.add_development_dependency(%q<libnotify>, ["~> 0.1.3"])
|
168
|
+
s.add_development_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
169
|
+
s.add_development_dependency(%q<factory_girl_rails>, [">= 0"])
|
170
|
+
s.add_development_dependency(%q<generator_spec>, [">= 0"])
|
171
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
172
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
173
|
+
s.add_development_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
174
|
+
s.add_development_dependency(%q<libnotify>, ["~> 0.1.3"])
|
175
|
+
s.add_development_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
176
|
+
s.add_development_dependency(%q<factory_girl_rails>, [">= 0"])
|
177
|
+
s.add_development_dependency(%q<generator_spec>, [">= 0"])
|
178
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
179
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
180
|
+
s.add_development_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
181
|
+
s.add_development_dependency(%q<libnotify>, ["~> 0.1.3"])
|
182
|
+
else
|
183
|
+
s.add_dependency(%q<refinerycms-stores>, [">= 0"])
|
184
|
+
s.add_dependency(%q<refinerycms>, ["~> 2.0.0"])
|
185
|
+
s.add_dependency(%q<jquery-rails>, [">= 0"])
|
186
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
187
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
188
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
189
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
190
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
191
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
192
|
+
s.add_dependency(%q<activerecord-jdbcsqlite3-adapter>, [">= 0"])
|
193
|
+
s.add_dependency(%q<activerecord-jdbcmysql-adapter>, [">= 0"])
|
194
|
+
s.add_dependency(%q<activerecord-jdbcpostgresql-adapter>, [">= 0"])
|
195
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
196
|
+
s.add_dependency(%q<mysql2>, [">= 0"])
|
197
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
198
|
+
s.add_dependency(%q<rb-fchange>, ["~> 0.0.5"])
|
199
|
+
s.add_dependency(%q<rb-notifu>, ["~> 0.0.4"])
|
200
|
+
s.add_dependency(%q<spork>, ["= 0.9.0.rc9"])
|
201
|
+
s.add_dependency(%q<guard-spork>, [">= 0"])
|
202
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
203
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
204
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
205
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
206
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
207
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
208
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
209
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
210
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
211
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
212
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
213
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
214
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
215
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
216
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
217
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
218
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
219
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
220
|
+
end
|
221
|
+
else
|
222
|
+
s.add_dependency(%q<refinerycms-stores>, [">= 0"])
|
223
|
+
s.add_dependency(%q<refinerycms>, ["~> 2.0.0"])
|
224
|
+
s.add_dependency(%q<jquery-rails>, [">= 0"])
|
225
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
226
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
227
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
228
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
229
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
230
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
231
|
+
s.add_dependency(%q<activerecord-jdbcsqlite3-adapter>, [">= 0"])
|
232
|
+
s.add_dependency(%q<activerecord-jdbcmysql-adapter>, [">= 0"])
|
233
|
+
s.add_dependency(%q<activerecord-jdbcpostgresql-adapter>, [">= 0"])
|
234
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
235
|
+
s.add_dependency(%q<mysql2>, [">= 0"])
|
236
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
237
|
+
s.add_dependency(%q<rb-fchange>, ["~> 0.0.5"])
|
238
|
+
s.add_dependency(%q<rb-notifu>, ["~> 0.0.4"])
|
239
|
+
s.add_dependency(%q<spork>, ["= 0.9.0.rc9"])
|
240
|
+
s.add_dependency(%q<guard-spork>, [">= 0"])
|
241
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
242
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
243
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
244
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
245
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
246
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
247
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
248
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
249
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
250
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
251
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
252
|
+
s.add_dependency(%q<refinerycms-testing>, ["~> 2.0.0"])
|
253
|
+
s.add_dependency(%q<factory_girl_rails>, [">= 0"])
|
254
|
+
s.add_dependency(%q<generator_spec>, [">= 0"])
|
255
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
256
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
257
|
+
s.add_dependency(%q<rb-inotify>, [">= 0.5.1"])
|
258
|
+
s.add_dependency(%q<libnotify>, ["~> 0.1.3"])
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Addresses
|
5
|
+
describe Address do
|
6
|
+
describe "validations" do
|
7
|
+
subject do
|
8
|
+
FactoryGirl.create(:address,
|
9
|
+
:first_name => "Refinery CMS")
|
10
|
+
end
|
11
|
+
|
12
|
+
it { should be_valid }
|
13
|
+
its(:errors) { should be_empty }
|
14
|
+
its(:first_name) { should == "Refinery CMS" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Orders
|
5
|
+
describe Order do
|
6
|
+
describe "validations" do
|
7
|
+
subject do
|
8
|
+
FactoryGirl.create(:order,
|
9
|
+
:order_status => "Refinery CMS")
|
10
|
+
end
|
11
|
+
|
12
|
+
it { should be_valid }
|
13
|
+
its(:errors) { should be_empty }
|
14
|
+
its(:order_status) { should == "Refinery CMS" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Products
|
5
|
+
describe Product do
|
6
|
+
describe "validations" do
|
7
|
+
subject do
|
8
|
+
FactoryGirl.create(:product,
|
9
|
+
:name => "Refinery CMS")
|
10
|
+
end
|
11
|
+
|
12
|
+
it { should be_valid }
|
13
|
+
its(:errors) { should be_empty }
|
14
|
+
its(:name) { should == "Refinery CMS" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Stores
|
5
|
+
describe Store do
|
6
|
+
describe "validations" do
|
7
|
+
subject do
|
8
|
+
FactoryGirl.create(:store,
|
9
|
+
:name => "Refinery CMS")
|
10
|
+
end
|
11
|
+
|
12
|
+
it { should be_valid }
|
13
|
+
its(:errors) { should be_empty }
|
14
|
+
its(:name) { should == "Refinery CMS" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe Refinery do
|
5
|
+
describe "Addresses" do
|
6
|
+
describe "Admin" do
|
7
|
+
describe "addresses" do
|
8
|
+
login_refinery_user
|
9
|
+
|
10
|
+
describe "addresses list" do
|
11
|
+
before(:each) do
|
12
|
+
FactoryGirl.create(:address, :first_name => "UniqueTitleOne")
|
13
|
+
FactoryGirl.create(:address, :first_name => "UniqueTitleTwo")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "shows two items" do
|
17
|
+
visit refinery.addresses_admin_addresses_path
|
18
|
+
page.should have_content("UniqueTitleOne")
|
19
|
+
page.should have_content("UniqueTitleTwo")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "create" do
|
24
|
+
before(:each) do
|
25
|
+
visit refinery.addresses_admin_addresses_path
|
26
|
+
|
27
|
+
click_link "Add New Address"
|
28
|
+
end
|
29
|
+
|
30
|
+
context "valid data" do
|
31
|
+
it "should succeed" do
|
32
|
+
fill_in "First Name", :with => "This is a test of the first string field"
|
33
|
+
click_button "Save"
|
34
|
+
|
35
|
+
page.should have_content("'This is a test of the first string field' was successfully added.")
|
36
|
+
Refinery::Addresses::Address.count.should == 1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "invalid data" do
|
41
|
+
it "should fail" do
|
42
|
+
click_button "Save"
|
43
|
+
|
44
|
+
page.should have_content("First Name can't be blank")
|
45
|
+
Refinery::Addresses::Address.count.should == 0
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "duplicate" do
|
50
|
+
before(:each) { FactoryGirl.create(:address, :first_name => "UniqueTitle") }
|
51
|
+
|
52
|
+
it "should fail" do
|
53
|
+
visit refinery.addresses_admin_addresses_path
|
54
|
+
|
55
|
+
click_link "Add New Address"
|
56
|
+
|
57
|
+
fill_in "First Name", :with => "UniqueTitle"
|
58
|
+
click_button "Save"
|
59
|
+
|
60
|
+
page.should have_content("There were problems")
|
61
|
+
Refinery::Addresses::Address.count.should == 1
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "edit" do
|
68
|
+
before(:each) { FactoryGirl.create(:address, :first_name => "A first_name") }
|
69
|
+
|
70
|
+
it "should succeed" do
|
71
|
+
visit refinery.addresses_admin_addresses_path
|
72
|
+
|
73
|
+
within ".actions" do
|
74
|
+
click_link "Edit this address"
|
75
|
+
end
|
76
|
+
|
77
|
+
fill_in "First Name", :with => "A different first_name"
|
78
|
+
click_button "Save"
|
79
|
+
|
80
|
+
page.should have_content("'A different first_name' was successfully updated.")
|
81
|
+
page.should have_no_content("A first_name")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "destroy" do
|
86
|
+
before(:each) { FactoryGirl.create(:address, :first_name => "UniqueTitleOne") }
|
87
|
+
|
88
|
+
it "should succeed" do
|
89
|
+
visit refinery.addresses_admin_addresses_path
|
90
|
+
|
91
|
+
click_link "Remove this address forever"
|
92
|
+
|
93
|
+
page.should have_content("'UniqueTitleOne' was successfully removed.")
|
94
|
+
Refinery::Addresses::Address.count.should == 0
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|