cornerstore 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/README.md +75 -0
- data/Rakefile +1 -0
- data/cornerstore.gemspec +23 -0
- data/examples/cornerstore.yml +11 -0
- data/lib/cornerstore.rb +84 -0
- data/lib/cornerstore/api.rb +18 -0
- data/lib/cornerstore/api/address.rb +12 -0
- data/lib/cornerstore/api/cancellation.rb +22 -0
- data/lib/cornerstore/api/carrier.rb +3 -0
- data/lib/cornerstore/api/cart.rb +49 -0
- data/lib/cornerstore/api/collection.rb +25 -0
- data/lib/cornerstore/api/customer.rb +4 -0
- data/lib/cornerstore/api/differentiating_property.rb +15 -0
- data/lib/cornerstore/api/image.rb +20 -0
- data/lib/cornerstore/api/line_item.rb +74 -0
- data/lib/cornerstore/api/order.rb +94 -0
- data/lib/cornerstore/api/payment_means.rb +32 -0
- data/lib/cornerstore/api/price.rb +77 -0
- data/lib/cornerstore/api/product.rb +72 -0
- data/lib/cornerstore/api/property.rb +30 -0
- data/lib/cornerstore/api/search.rb +35 -0
- data/lib/cornerstore/api/shipment.rb +24 -0
- data/lib/cornerstore/api/variant.rb +49 -0
- data/lib/cornerstore/model.rb +117 -0
- data/lib/cornerstore/resource.rb +8 -0
- data/lib/cornerstore/resource/base.rb +83 -0
- data/lib/cornerstore/resource/filter.rb +21 -0
- data/lib/cornerstore/resource/remote.rb +27 -0
- data/lib/cornerstore/resource/writable.rb +20 -0
- data/lib/cornerstore/version.rb +3 -0
- data/spec/order_spec.rb +78 -0
- data/spec/price_spec.rb +51 -0
- data/spec/spec_helper.rb +22 -0
- metadata +126 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
class Cornerstore::Resource::Base
|
2
|
+
include Enumerable
|
3
|
+
attr_accessor :parent
|
4
|
+
|
5
|
+
def initialize(parent = nil, ary = nil, name = nil)
|
6
|
+
@klass = Cornerstore.const_get(self.class.name.split('::')[-2])
|
7
|
+
@name = name
|
8
|
+
@parent = parent
|
9
|
+
@filters = Hash.new
|
10
|
+
@objects = Array.new
|
11
|
+
from_array(ary) if ary.is_a? Array
|
12
|
+
end
|
13
|
+
|
14
|
+
def from_array(ary)
|
15
|
+
@objects = ary.map{|h| @klass.new(h, @parent)}
|
16
|
+
@load = true
|
17
|
+
end
|
18
|
+
|
19
|
+
def find(*args)
|
20
|
+
ids = Array.new(args).flatten.compact.uniq
|
21
|
+
case ids.size
|
22
|
+
when 0
|
23
|
+
raise "Couldn't find #{@klass.name} without an ID"
|
24
|
+
when 1
|
25
|
+
find_by_id_or_param(ids.first)
|
26
|
+
else
|
27
|
+
find_by_ids(ids)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_by_id_or_param(id_or_param)
|
32
|
+
find_by_id id_or_param.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_by_id(id)
|
36
|
+
@objects.find{|obj| obj._id == id}
|
37
|
+
end
|
38
|
+
|
39
|
+
def find_by_ids(*args)
|
40
|
+
ids = Array.new(args).flatten.compact.uniq
|
41
|
+
all.select{|item| ids.include? item._id }
|
42
|
+
end
|
43
|
+
|
44
|
+
def all
|
45
|
+
self.clone
|
46
|
+
end
|
47
|
+
|
48
|
+
def push(obj)
|
49
|
+
@objects << obj
|
50
|
+
obj.parent = @parent
|
51
|
+
self
|
52
|
+
end
|
53
|
+
alias_method :<<, :push
|
54
|
+
|
55
|
+
def to_a
|
56
|
+
@objects
|
57
|
+
end
|
58
|
+
alias_method :to_ary, :to_a
|
59
|
+
|
60
|
+
def each(&block)
|
61
|
+
to_a.each(&block)
|
62
|
+
end
|
63
|
+
|
64
|
+
def size
|
65
|
+
@objects.size
|
66
|
+
end
|
67
|
+
alias_method :count, :size
|
68
|
+
alias_method :length, :size
|
69
|
+
|
70
|
+
def empty?
|
71
|
+
@objects.empty?
|
72
|
+
end
|
73
|
+
|
74
|
+
alias blank? empty?
|
75
|
+
|
76
|
+
def method_missing(method, *args, &block)
|
77
|
+
if Cornerstore::Resource::Writable.method_defined?(method)
|
78
|
+
raise "Sorry, this part of the Cornerstore-API is currently read-only"
|
79
|
+
else
|
80
|
+
super
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Cornerstore::Resource::Filter
|
2
|
+
def set_filter(key, value)
|
3
|
+
@filters[key] = value
|
4
|
+
self
|
5
|
+
end
|
6
|
+
|
7
|
+
def offset(offset)
|
8
|
+
self.clone.set_filter(:offset, offset.to_i.abs)
|
9
|
+
end
|
10
|
+
|
11
|
+
def limit(limit)
|
12
|
+
limit = limit.to_i.abs
|
13
|
+
raise "limit must be greater/equal to 1" unless limit > 1
|
14
|
+
self.clone.set_filter(:limit, limit)
|
15
|
+
end
|
16
|
+
|
17
|
+
def order(key)
|
18
|
+
self.clone.set_filter(:order, key)
|
19
|
+
end
|
20
|
+
alias order_by order
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Cornerstore::Resource::Remote
|
2
|
+
def url(id = nil, depth = 1)
|
3
|
+
root = (@parent && depth > 0) ? @parent.url(depth-1) : Cornerstore.root_url
|
4
|
+
"#{root}/#{@name or @klass.name.split('::').last.underscore.pluralize}/#{id}"
|
5
|
+
end
|
6
|
+
|
7
|
+
def find_by_id(id)
|
8
|
+
object = super
|
9
|
+
object or fetch(id)
|
10
|
+
end
|
11
|
+
|
12
|
+
def fetch(id)
|
13
|
+
response = RestClient.get(url(id), Cornerstore.headers)
|
14
|
+
hash = ActiveSupport::JSON.decode(response)
|
15
|
+
@klass.new(hash, @parent)
|
16
|
+
end
|
17
|
+
|
18
|
+
def fetch_all
|
19
|
+
response = RestClient.get(url, Cornerstore.headers)
|
20
|
+
from_array ActiveSupport::JSON.decode(response)
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_a
|
24
|
+
fetch_all unless @load
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Cornerstore::Resource::Writable
|
2
|
+
def destroy_all
|
3
|
+
@objects.delete_if {|obj| obj.destroy}
|
4
|
+
self
|
5
|
+
end
|
6
|
+
|
7
|
+
def new(attributes={}, &block)
|
8
|
+
@klass.new(attributes, &block).tap{|obj| push obj}
|
9
|
+
end
|
10
|
+
|
11
|
+
def create(attributes={}, &block)
|
12
|
+
obj = @klass.new(attributes, @parent, &block)
|
13
|
+
if obj.save
|
14
|
+
push obj
|
15
|
+
obj
|
16
|
+
else
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/spec/order_spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cornerstore::Order do
|
4
|
+
before(:all) do
|
5
|
+
json = '{"_id":"53448a01417175b106ec0000","_slugs":["14521135"],"billing_address":{"_id":"53448a05417175b1069e0300","addition":null,"company":null,"country":"United States","firstname":"Ellis","name":"Bailey","number":"441","state":"New Hampshire","street":"Karli View","town":"North Penelope","zip":"26662"},"canceled_email_callback_url":"http://burger-store.dev/mails/canceled_notification","cart_url":"http://burger-store.dev/cart","checkout_id":"13d583c4340d9bfe52aa1f7cb92735c5f5b748135f170b4d5cd752c9fd25f149","checkout_started_at":null,"created_at":"2014-04-08T09:24:57.556Z","customer_comment":null,"customer_id":"53448a05417175b1069f0300","delivery_note_pdf_callback_url":null,"invoice_number":null,"invoice_pdf_callback_url":"http://burger-store.dev/documents/invoice","invoiced_at":null,"line_items":[{"_id":"53448a01417175b106ed0000","created_at":"2014-04-08T23:45:05.575Z","description":"PepsiCo Welch\'s Grape Soda – Packungsgröße: 12er Pack","order_number":"SBS-0009B","price":{"gross":15.5,"currency":"EUR","net":13.03,"tax_rate":0.19,"tax":2.47},"product_id":"53448a00417175b106450000","qty":5,"requires_shipment":true,"total":{"gross":77.5,"currency":"EUR","net":65.13,"tax_rate":0.19,"tax":12.37},"total_weight":15.0,"unit":"Pack","updated_at":"2014-04-08T23:45:05.575Z","variant_id":"53448a00417175b106480000","weight":3.0},{"_id":"53448a01417175b106ee0000","created_at":"2014-04-08T23:45:05.576Z","description":"PepsiCo Welch\'s Grape Soda – Packungsgröße: 24er Pack","order_number":"SBS-0009C","price":{"gross":25.5,"currency":"EUR","net":21.43,"tax_rate":0.19,"tax":4.07},"product_id":"53448a00417175b106450000","qty":2,"requires_shipment":true,"total":{"gross":51.0,"currency":"EUR","net":42.86,"tax_rate":0.19,"tax":8.14},"total_weight":12.0,"unit":"Pack","updated_at":"2014-04-08T23:45:05.576Z","variant_id":"53448a00417175b1064a0000","weight":6.0},{"_id":"53448a01417175b106ef0000","created_at":"2014-04-08T23:45:05.576Z","description":"Branston Relish – Geschmack: Chili \u0026 Jalapeño","order_number":"SBS-0010B","price":{"gross":9.99,"currency":"EUR","net":8.39,"tax_rate":0.19,"tax":1.6},"product_id":"53448a00417175b1064c0000","qty":2,"requires_shipment":true,"total":{"gross":19.98,"currency":"EUR","net":16.79,"tax_rate":0.19,"tax":3.19},"total_weight":1.0,"unit":"Tube","updated_at":"2014-04-08T23:45:05.576Z","variant_id":"53448a00417175b1064f0000","weight":0.5},{"_id":"53448a01417175b106f00000","created_at":"2014-04-08T23:45:05.576Z","description":"PepsiCo Pepsi Cola – Packungsgröße: 6er Pack, Geschmack: Diet","order_number":"SBS-0007A","price":{"gross":5.99,"currency":"EUR","net":5.03,"tax_rate":0.19,"tax":0.96},"product_id":"53448a00417175b1062b0000","qty":1,"requires_shipment":true,"total":{"gross":5.99,"currency":"EUR","net":5.03,"tax_rate":0.19,"tax":0.96},"total_weight":1.75,"unit":"Pack","updated_at":"2014-04-08T23:45:05.576Z","variant_id":"53448a00417175b1062c0000","weight":1.75},{"_id":"53448a01417175b106f10000","created_at":"2014-04-08T23:45:05.577Z","description":"Heinz Tomato Ketchup – Größe: Groß (500g)","order_number":"SBS-0012B","price":{"gross":5.5,"currency":"EUR","net":4.62,"tax_rate":0.19,"tax":0.88},"product_id":"53448a00417175b106530000","qty":2,"requires_shipment":true,"total":{"gross":11.0,"currency":"EUR","net":9.24,"tax_rate":0.19,"tax":1.76},"total_weight":1.0,"unit":"Glas","updated_at":"2014-04-08T23:45:05.577Z","variant_id":"53448a00417175b106560000","weight":0.5},{"_id":"53448a01417175b106f20000","created_at":"2014-04-08T23:45:05.577Z","description":"PepsiCo Pepsi Cola – Packungsgröße: 24er Pack, Geschmack: Wild Cherry","order_number":"SBS-0007F","price":{"gross":15.99,"currency":"EUR","net":13.44,"tax_rate":0.19,"tax":2.55},"product_id":"53448a00417175b1062b0000","qty":2,"requires_shipment":true,"total":{"gross":31.98,"currency":"EUR","net":26.87,"tax_rate":0.19,"tax":5.11},"total_weight":12.0,"unit":"Pack","updated_at":"2014-04-08T23:45:05.577Z","variant_id":"53448a00417175b1063b0000","weight":6.0},{"_id":"53448a01417175b106f30000","created_at":"2014-04-08T23:45:05.577Z","description":"PepsiCo Mountain Dew – Packungsgröße: 12er Pack","order_number":"SBS-0008B","price":{"gross":15.5,"currency":"EUR","net":13.03,"tax_rate":0.19,"tax":2.47},"product_id":"53448a00417175b1063e0000","qty":5,"requires_shipment":true,"total":{"gross":77.5,"currency":"EUR","net":65.13,"tax_rate":0.19,"tax":12.37},"total_weight":null,"unit":"Pack","updated_at":"2014-04-08T23:45:05.577Z","variant_id":"53448a00417175b106410000","weight":null}],"merchant_id":"534489ff417175b106000000","number":"14521135","paid_email_callback_url":"http://burger-store.dev/mails/paid_notification","payment_costs":null,"payment_means":{"_id":"53448a07417175b1064a0400","created_at":"2014-04-08T23:45:11.731Z","kind":"Cash","paid_at":"2014-04-08T23:45:19+00:00","refunded_at":null,"updated_at":"2014-04-08T23:45:19.468Z"},"placed_at":"2014-04-08T09:34:57+00:00","placed_email_callback_url":"http://burger-store.dev/mails/placed_notification","reference":"13d583c4340d9bfe52aa1f7cb92735c5f5b748135f170b4d5cd752c9fd25f149","requested_carrier":{"name":"UPS","service":"Express","supports_cod":false},"sales_tax":null,"shipments":[{"_id":"53448a0c417175b106bc0400","carrier":{"name":"UPS","service":"Express","supports_cod":false},"created_at":"2014-04-08T23:45:16.196Z","shipped_items":["53448a01417175b106ed0000","53448a01417175b106ee0000","53448a01417175b106ef0000","53448a01417175b106f00000","53448a01417175b106f10000","53448a01417175b106f20000","53448a01417175b106f30000"],"tracking_number":"DXD993882F","updated_at":"2014-04-08T23:45:16.196Z"}],"shipped_email_callback_url":"http://burger-store.dev/mails/shipped_notification","shipping_address":{"_id":"53448a05417175b1069d0300","addition":null,"company":"Osinski-Bradtke","country":"United States","firstname":"Clara","name":"Volkman","number":"634","state":"Florida","street":"Lind Mount","town":"New Demario","zip":"95413"},"shipping_costs":{"gross":78.99,"currency":"EUR","net":66.38,"tax_rate":0.19,"tax":12.61},"subtotal":{"gross":274.95,"currency":"EUR","net":231.05,"tax_rate":0.19,"tax":43.9},"success_redirect_url":"http://burger-store.dev/carts/success","total":{"gross":353.94,"currency":"EUR","net":297.43,"tax_rate":0.19,"tax":56.51},"updated_at":"2014-04-08T23:45:13.562Z","weight":42.75,"customer":{"_id":"53448a05417175b1069f0300","allows_marketing":false,"created_at":"2014-04-08T23:45:09.148Z","email":"brycen_hauck@reynolds.name","flagged":false,"merchant_id":"534489ff417175b106000000","phone":null,"tax_number":null,"updated_at":"2014-04-08T23:45:09.148Z"}}'
|
6
|
+
@order = Cornerstore::Order.new(JSON.parse(json))
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'regarding basic attributes' do
|
10
|
+
it 'should correctly return basic attributes' do
|
11
|
+
expect(@order.id).to eq('53448a01417175b106ec0000')
|
12
|
+
expect(@order.number).to eq('14521135')
|
13
|
+
expect(@order.reference).to eq('13d583c4340d9bfe52aa1f7cb92735c5f5b748135f170b4d5cd752c9fd25f149')
|
14
|
+
expect(@order.weight).to eq(42.75)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should return the prices' do
|
18
|
+
expect(@order.subtotal.amount).to eq(274.95)
|
19
|
+
expect(@order.shipping_costs.amount).to eq(78.99)
|
20
|
+
expect(@order.payment_costs).to eq(nil)
|
21
|
+
expect(@order.sales_tax).to eq(nil)
|
22
|
+
expect(@order.total.amount).to eq(353.94)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should return the requested carrier' do
|
26
|
+
expect(@order.requested_carrier.name).to eq('UPS')
|
27
|
+
expect(@order.requested_carrier.service).to eq('Express')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'regarding associated objects' do
|
32
|
+
it 'should return the customer' do
|
33
|
+
expect(@order.customer.class).to eq(Cornerstore::Customer)
|
34
|
+
expect(@order.customer.email).to eq('brycen_hauck@reynolds.name')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should return a billing address' do
|
38
|
+
expect(@order.billing_address.class).to eq(Cornerstore::Address)
|
39
|
+
expect(@order.billing_address.name).to eq('Bailey')
|
40
|
+
expect(@order.billing_address.firstname).to eq('Ellis')
|
41
|
+
expect(@order.billing_address.number).to eq('441')
|
42
|
+
expect(@order.billing_address.street).to eq('Karli View')
|
43
|
+
expect(@order.billing_address.town).to eq('North Penelope')
|
44
|
+
expect(@order.billing_address.country).to eq('United States')
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should return a shipping address' do
|
48
|
+
expect(@order.billing_address.class).to eq(Cornerstore::Address)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should return the line items' do
|
52
|
+
expect(@order.line_items.count).to eq(7)
|
53
|
+
expect(@order.line_items.first.description).to eq('PepsiCo Welch\'s Grape Soda – Packungsgröße: 12er Pack')
|
54
|
+
expect(@order.line_items.first.qty).to eq(5)
|
55
|
+
expect(@order.line_items.first.weight).to eq(3.0)
|
56
|
+
expect(@order.line_items.first.price.amount).to eq(15.50)
|
57
|
+
expect(@order.line_items.first.total.amount).to eq(15.50 * 5)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should return shipments and shipped line items' do
|
61
|
+
expect(@order.completely_shipped?).to eq(true)
|
62
|
+
expect(@order.shipments.first.line_items.count).to eq(@order.line_items.count)
|
63
|
+
expect(@order.shipments.first.tracking_number).to eq('DXD993882F')
|
64
|
+
expect(@order.shipments.first.carrier.name).to eq('UPS')
|
65
|
+
expect(@order.shipments.first.carrier.service).to eq('Express')
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should return cancellations and canceled line items' do
|
69
|
+
expect(@order.completely_canceled?).to eq(false)
|
70
|
+
expect(@order.cancellations.first).to eq(nil)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should return payment means' do
|
74
|
+
expect(@order.payment_means.class).to eq(Cornerstore::PaymentMeans)
|
75
|
+
expect(@order.payment_means.kind).to eq('Cash')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/spec/price_spec.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cornerstore::Price do
|
4
|
+
context 'regarding basic attributes' do
|
5
|
+
it 'should correctly return amount and currency' do
|
6
|
+
p = Cornerstore::Price.new({'amount' => 29.00, 'currency' => 'USD'})
|
7
|
+
|
8
|
+
expect(p.amount).to eq(29.00)
|
9
|
+
expect(p.currency).to eq('USD')
|
10
|
+
expect(p.currency_symbol).to eq('$')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should correctly return attributes for VAT prices' do
|
14
|
+
p = Cornerstore::Price.new({'gross' => 17.85, 'net' => 15.00, 'tax_rate' => 0.19, 'currency' => 'EUR'})
|
15
|
+
|
16
|
+
expect(p.amount).to eq(17.85)
|
17
|
+
expect(p.gross).to eq(17.85)
|
18
|
+
expect(p.net).to eq(15.00)
|
19
|
+
expect(p.tax_rate).to eq(0.19)
|
20
|
+
expect(p.currency).to eq('EUR')
|
21
|
+
expect(p.currency_symbol).to eq('€')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'regarding math operations' do
|
26
|
+
it 'should compare two prices' do
|
27
|
+
p1 = Cornerstore::Price.new({'amount' => 29.00, 'currency' => 'USD'})
|
28
|
+
p2 = Cornerstore::Price.new({'amount' => 35.00, 'currency' => 'USD'})
|
29
|
+
|
30
|
+
expect(p2 > 20).to eql(true)
|
31
|
+
expect(p2 > 40).to eql(false)
|
32
|
+
expect(p2 > p1).to eql(true)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should sum two prices' do
|
36
|
+
p1 = Cornerstore::Price.new({'amount' => 29.00, 'currency' => 'USD'})
|
37
|
+
p2 = Cornerstore::Price.new({'amount' => 35.00, 'currency' => 'USD'})
|
38
|
+
|
39
|
+
p3 = p1 + p2
|
40
|
+
expect(p3.amount).to eql(64.00)
|
41
|
+
|
42
|
+
p1 = Cornerstore::Price.new({'gross' => 17.85, 'net' => 15.00, 'tax_rate' => 0.19, 'currency' => 'EUR'})
|
43
|
+
p2 = Cornerstore::Price.new({'gross' => 9.52, 'net' => 8.00, 'tax_rate' => 0.19, 'currency' => 'EUR'})
|
44
|
+
|
45
|
+
p3 = p1 + p2
|
46
|
+
expect(p3.gross).to eql(27.37)
|
47
|
+
expect(p3.net).to eql(23.00)
|
48
|
+
expect(p3.tax_rate).to eql(0.19)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require 'cornerstore'
|
5
|
+
|
6
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
7
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
8
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
9
|
+
# loaded once.
|
10
|
+
#
|
11
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.filter_run :focus
|
16
|
+
|
17
|
+
# Run specs in random order to surface order dependencies. If you find an
|
18
|
+
# order dependency and want to debug it, you can fix the order by providing
|
19
|
+
# the seed, which is printed after each run.
|
20
|
+
# --seed 1234
|
21
|
+
config.order = 'random'
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cornerstore
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Johannes Treitz
|
8
|
+
- Christian Weyer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rest-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activemodel
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
description: This is a client for the Cornerstore e-commerce API
|
57
|
+
email:
|
58
|
+
- jt@crispymtn.com
|
59
|
+
- cw@crispymtn.com
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".gitignore"
|
65
|
+
- ".rspec"
|
66
|
+
- Gemfile
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- cornerstore.gemspec
|
70
|
+
- examples/cornerstore.yml
|
71
|
+
- lib/cornerstore.rb
|
72
|
+
- lib/cornerstore/api.rb
|
73
|
+
- lib/cornerstore/api/address.rb
|
74
|
+
- lib/cornerstore/api/cancellation.rb
|
75
|
+
- lib/cornerstore/api/carrier.rb
|
76
|
+
- lib/cornerstore/api/cart.rb
|
77
|
+
- lib/cornerstore/api/collection.rb
|
78
|
+
- lib/cornerstore/api/customer.rb
|
79
|
+
- lib/cornerstore/api/differentiating_property.rb
|
80
|
+
- lib/cornerstore/api/image.rb
|
81
|
+
- lib/cornerstore/api/line_item.rb
|
82
|
+
- lib/cornerstore/api/order.rb
|
83
|
+
- lib/cornerstore/api/payment_means.rb
|
84
|
+
- lib/cornerstore/api/price.rb
|
85
|
+
- lib/cornerstore/api/product.rb
|
86
|
+
- lib/cornerstore/api/property.rb
|
87
|
+
- lib/cornerstore/api/search.rb
|
88
|
+
- lib/cornerstore/api/shipment.rb
|
89
|
+
- lib/cornerstore/api/variant.rb
|
90
|
+
- lib/cornerstore/model.rb
|
91
|
+
- lib/cornerstore/resource.rb
|
92
|
+
- lib/cornerstore/resource/base.rb
|
93
|
+
- lib/cornerstore/resource/filter.rb
|
94
|
+
- lib/cornerstore/resource/remote.rb
|
95
|
+
- lib/cornerstore/resource/writable.rb
|
96
|
+
- lib/cornerstore/version.rb
|
97
|
+
- spec/order_spec.rb
|
98
|
+
- spec/price_spec.rb
|
99
|
+
- spec/spec_helper.rb
|
100
|
+
homepage: https://www.github.com/crispymtn/cornerstore-gem
|
101
|
+
licenses: []
|
102
|
+
metadata: {}
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
requirements: []
|
118
|
+
rubyforge_project:
|
119
|
+
rubygems_version: 2.0.3
|
120
|
+
signing_key:
|
121
|
+
specification_version: 4
|
122
|
+
summary: This is a client for the Cornerstore e-commerce API
|
123
|
+
test_files:
|
124
|
+
- spec/order_spec.rb
|
125
|
+
- spec/price_spec.rb
|
126
|
+
- spec/spec_helper.rb
|