oshpark 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93f9cb0eba00704df61db79967ffa89ec46e7960
4
- data.tar.gz: d33415dc53c8bb71cf26efd1e22fddc0ca6fab8e
3
+ metadata.gz: 5d5f25d87af7fa429c3ac0963ccc7f02ece62a68
4
+ data.tar.gz: f514b160f998dbe1c329bbf43d1aa1ca93ce2ff3
5
5
  SHA512:
6
- metadata.gz: 252709f29aa94bd1dae99f4abc95e50391aaae965ed22096903a6b4e38f65ad943173890f0172a7ab8593688e2e9a551ea9ee0e383b80ff1c044e2af6d1b75b0
7
- data.tar.gz: 50971cd5dd49b431937e8f1fb0eb5ffa720f16f1ef0dd32f057511a9151658c9885fbfbbf66455b1a0f566cdf12dfdb82bb6950e2c1caecc2c5839293be3e008
6
+ metadata.gz: d465cfa91e925af53618e94d84694ac03e4de28b9899e5563cbc76651b37b2bb6b8d160468bb87ebaebb111250e4b878465c2c0a67933ffac6175f33036598fc
7
+ data.tar.gz: fb3ac304346a04ff83ae49d325932146315df8d5ef2a36c854b1a112d90bec1d040e4185523fb4f00b7a0a7913522370e612cf942873a4b2b58ba41d23671366
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oshpark (0.0.5)
4
+ oshpark (0.0.7)
5
5
  micro_token
6
6
  thor
7
7
 
@@ -3,6 +3,7 @@ require "oshpark/ext"
3
3
  require "oshpark/client"
4
4
  require "oshpark/connection"
5
5
  require "oshpark/model"
6
+ require "oshpark/stateful"
6
7
  require "oshpark/dimensionable"
7
8
  require "oshpark/order_option"
8
9
  require "oshpark/project"
@@ -10,11 +10,7 @@ module Oshpark
10
10
  attrs.each {|a| attr_accessor a }
11
11
 
12
12
  def initialize args={}
13
- args = check_args args
14
- Address.attrs.each do |a|
15
- v = args.fetch(a, nil)
16
- public_send :"#{a}=", v
17
- end
13
+ super check_args args
18
14
  end
19
15
 
20
16
  def to_h
@@ -31,16 +27,8 @@ module Oshpark
31
27
  unless (args.keys.map(&:to_s) & REQUIRED_ARGS) == REQUIRED_ARGS
32
28
  raise ArgumentError, "Missing required arguments #{(REQUIRED_ARGS - args.keys).join(' ')}"
33
29
  end
34
-
35
- stingify_hash_keys args
30
+ args
36
31
  end
37
32
 
38
- def stingify_hash_keys hash
39
- {}.tap do |h|
40
- hash.each do |k, v|
41
- h[k.to_s] = v
42
- end
43
- end
44
- end
45
33
  end
46
34
  end
@@ -108,7 +108,11 @@ module Oshpark
108
108
  # @param id
109
109
  # @param address
110
110
  def set_order_address id, address
111
- put_request "orders/#{id}/set_address", address.to_h
111
+ put_request "orders/#{id}/set_address", address
112
+ end
113
+
114
+ def shipping_rates address_params
115
+ post_request "shipping_rates", {address: address_params}
112
116
  end
113
117
 
114
118
  # Set the delivery address for an Order
@@ -73,7 +73,6 @@ module Oshpark
73
73
  header
74
74
  end
75
75
 
76
-
77
76
  def prepare_params params
78
77
  if params.keys.include? :file
79
78
  params.to_multipart
@@ -4,10 +4,13 @@ module Oshpark
4
4
  %w| id state original_url original_filename error_message queued_at started_at completed_at errored_at failed_at project_id |
5
5
  end
6
6
 
7
+ STATES = %w| WAITING RUNNING SUCCESS ERROR FAILED |
8
+
7
9
  include Model
10
+ include Stateful
8
11
 
9
12
  def self.create url
10
- self.from_json(Oshpark::client.create_import(url))
13
+ self.from_json(Oshpark::client.create_import(url)['import'])
11
14
  end
12
15
 
13
16
  def project
@@ -1,6 +1,8 @@
1
1
  module Oshpark
2
2
  class Order
3
3
 
4
+ STATES = %w| EMPTY NEW RECEIVED PROCESSING SHIPPED CANCELLED |
5
+
4
6
  def self.attrs
5
7
  %w| id board_cost cancellation_reason cancelled_at ordered_at
6
8
  payment_provider payment_received_at project_name quantity
@@ -10,29 +12,30 @@ module Oshpark
10
12
  end
11
13
 
12
14
  include Model
15
+ include Stateful
13
16
 
14
17
  def self.create
15
- self.from_json(Oshpark::client.create_order)
18
+ self.from_json(Oshpark::client.create_order['order'])
16
19
  end
17
20
 
18
21
  def add_item order_item, quantity
19
22
  json = Oshpark::client.add_order_item id, order_item.id, quantity
20
- reload_with json
23
+ reload_with json['order']
21
24
  end
22
25
 
23
26
  def set_address address
24
27
  json = Oshpark::client.set_order_address id, address
25
- reload_with json
28
+ reload_with json['order']
26
29
  end
27
30
 
28
31
  def set_shipping_rate carrier_name, service_name
29
32
  json = Oshpark::client.set_order_shipping_rate id, carrier_name, service_name
30
- reload_with json
33
+ reload_with json['order']
31
34
  end
32
35
 
33
36
  def checkout
34
37
  json = Oshpark::client.checkout_order id
35
- reload_with json
38
+ reload_with json['order']
36
39
  end
37
40
 
38
41
  def panel
@@ -1,11 +1,15 @@
1
1
  module Oshpark
2
2
  class OrderItem
3
+
4
+ STATES = %w| NEW AWAITING_PANEL PANELIZED ORDERED FABBED SHIPPED CANCELLED |
5
+
3
6
  def self.attrs
4
7
  %w| name batches batch_cost sub_total price quantity state confirmed_at panelized_at
5
8
  ordered_at fabbed_at shipped_at project_id panel_id order_item_option_selections |
6
9
  end
7
10
 
8
11
  include Model
12
+ include Stateful
9
13
 
10
14
  def project
11
15
  Oshpark::Project.find @project_id if @project_id
@@ -1,5 +1,7 @@
1
1
  module Oshpark
2
2
  class Panel
3
+ STATES = %w| OPEN ORDERED RECEIVED |
4
+
3
5
  def self.attrs
4
6
  %w| pcb_layers scheduled_order_time expected_receive_time
5
7
  id ordered_at received_at state service total_orders
@@ -7,6 +9,7 @@ module Oshpark
7
9
  end
8
10
 
9
11
  include Model
12
+ include Stateful
10
13
 
11
14
  def scheduled_order_time
12
15
  time_from @scheduled_order_time if @scheduled_order_time
@@ -1,5 +1,7 @@
1
1
  module Oshpark
2
2
  class Project
3
+ STATES = %w| NEW APPROVED AWAITING_REMOVAL |
4
+
3
5
  def self.attrs
4
6
  %w| id design_file_url name description top_image bottom_image width_in_mils height_in_mils pcb_layers state layers order_options is_shared |
5
7
  end
@@ -9,6 +11,7 @@ module Oshpark
9
11
  end
10
12
 
11
13
  include Model
14
+ include Stateful
12
15
  include Dimensionable
13
16
 
14
17
  alias shared? is_shared
@@ -43,7 +46,7 @@ module Oshpark
43
46
 
44
47
  def approve!
45
48
  json = Oshpark::client.approve_project id
46
- reload_with(json)
49
+ reload_with(json['project'])
47
50
  end
48
51
 
49
52
  end
@@ -7,5 +7,12 @@ module Oshpark
7
7
 
8
8
  include Model
9
9
 
10
+ def self.rates_for_address address
11
+ json = Oshpark::client.shipping_rates address.to_h
12
+
13
+ json['shipping_rates'].collect do |shipping_rate_json|
14
+ self.from_json shipping_rate_json
15
+ end
16
+ end
10
17
  end
11
18
  end
@@ -0,0 +1,11 @@
1
+ module Oshpark
2
+ module Stateful
3
+ def self.included base
4
+ base.const_get(:STATES).each do |_state|
5
+ define_method "#{_state.downcase}?" do
6
+ state == _state
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -4,16 +4,27 @@ module Oshpark
4
4
  %w| id state original_filename error_message queued_at started_at completed_at errored_at failed_at project_id |
5
5
  end
6
6
 
7
+ STATES = %w| WAITING RUNNING SUCCESS ERROR FAILED |
8
+
7
9
  include Model
10
+ include Stateful
8
11
 
9
12
  def self.create file
10
- self.from_json(Oshpark::client.create_upload(file))
13
+ self.from_json(Oshpark::client.create_upload(file)['upload'])
11
14
  end
12
15
 
13
16
  def project
14
17
  Project.find project_id
15
18
  end
16
19
 
20
+ def processing?
21
+ waiting? || running?
22
+ end
23
+
24
+ def finished?
25
+ success? || error? || failed?
26
+ end
27
+
17
28
  def queued_at
18
29
  time_from @queued_at
19
30
  end
@@ -1,3 +1,3 @@
1
1
  module Oshpark
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -88,13 +88,22 @@ describe Oshpark::Client do
88
88
 
89
89
  describe '#set_order_address' do
90
90
  let(:token) { 'abcd1234' }
91
- let(:address) { Oshpark::Address.new name: "Bob", address_line_1: "8 Nelson Street", address_line_2: "Petone", city: "Lower Hutt", country: "New Zealand" }
91
+ let(:address) { {"name" => "Bob", "company_name" => nil, "address_line_1" => "8 Nelson Street", "address_line_2" => "Petone", "city" => "Lower Hutt", "state" => nil, "zip_or_postal_code" => nil, "country" => "New Zealand", "phone_number" => nil, "is_business" => nil} }
92
92
  it "set the delivery address for an order" do
93
93
  subject.set_order_address token, address
94
94
  expect(connection.requests.last).to eq([:put, "orders/#{token}/set_address", {"name" => "Bob", "company_name" => nil, "address_line_1" => "8 Nelson Street", "address_line_2" => "Petone", "city" => "Lower Hutt", "state" => nil, "zip_or_postal_code" => nil, "country" => "New Zealand", "phone_number" => nil, "is_business" => nil}])
95
95
  end
96
96
  end
97
97
 
98
+ describe "#shipping_rates" do
99
+ let(:token) { 'abcd1234' }
100
+ let(:address) { {"name" => "Bob", "company_name" => nil, "address_line_1" => "8 Nelson Street", "address_line_2" => "Petone", "city" => "Lower Hutt", "state" => nil, "zip_or_postal_code" => nil, "country" => "New Zealand", "phone_number" => nil, "is_business" => nil} }
101
+ it "returns shipping rates" do
102
+ subject.shipping_rates address
103
+ expect(connection.requests.last).to eq([:post, "shipping_rates", {:address => {"name" => "Bob", "company_name" => nil, "address_line_1" => "8 Nelson Street", "address_line_2" => "Petone", "city" => "Lower Hutt", "state" => nil, "zip_or_postal_code" => nil, "country" => "New Zealand", "phone_number" => nil, "is_business" => nil}}])
104
+ end
105
+ end
106
+
98
107
  describe '#set_order_shipping_rate' do
99
108
  let(:token) { 'abcd1234' }
100
109
  let(:service_provider) { 'Bobs Mail'}
@@ -29,7 +29,7 @@ describe Oshpark::Order do
29
29
  end
30
30
 
31
31
  describe '.create' do
32
- before { expect(Oshpark::client).to receive(:create_order).and_return({id: "abcd1234", state: 'New'}) }
32
+ before { expect(Oshpark::client).to receive(:create_order).and_return({'order' => {id: "abcd1234", state: 'New'}}) }
33
33
  subject { Oshpark::Order.create }
34
34
 
35
35
  it 'creates a new Order' do
@@ -49,7 +49,7 @@ describe Oshpark::Order do
49
49
  allow(subject).to receive(:id).and_return('abcd1234')
50
50
 
51
51
  expect(item).to receive(:id).and_return('1234abcd')
52
- expect(Oshpark::client).to receive(:add_order_item).with("abcd1234", "1234abcd", 6).and_return({id: "abcd1234"})
52
+ expect(Oshpark::client).to receive(:add_order_item).with("abcd1234", "1234abcd", 6).and_return({'order' => {id: "abcd1234"}})
53
53
  subject.add_item item, quantity
54
54
  end
55
55
  end
@@ -59,18 +59,18 @@ describe Oshpark::Order do
59
59
  it 'sets the delivery Address for an Order' do
60
60
  allow(subject).to receive(:id).and_return('abcd1234')
61
61
 
62
- expect(Oshpark::client).to receive(:set_order_address).with("abcd1234", address).and_return({id: "abcd1234"})
62
+ expect(Oshpark::client).to receive(:set_order_address).with("abcd1234", address).and_return({'order' => {id: "abcd1234"}})
63
63
  subject.set_address address
64
64
  end
65
65
  end
66
66
 
67
67
  describe '#set_shipping_rate' do
68
68
  let(:carrier_name) { 'Bobs Mail'}
69
- let(:service_name) { 'Overnight Delivery' }
69
+ let(:service_name) { 'Overnight Delivery' }
70
70
  it 'sets the shipping rate for an Order' do
71
71
  allow(subject).to receive(:id).and_return('abcd1234')
72
72
 
73
- expect(Oshpark::client).to receive(:set_order_shipping_rate).with("abcd1234", "Bobs Mail", "Overnight Delivery").and_return({id: "abcd1234"})
73
+ expect(Oshpark::client).to receive(:set_order_shipping_rate).with("abcd1234", "Bobs Mail", "Overnight Delivery").and_return({'order' => {id: "abcd1234"}})
74
74
  subject.set_shipping_rate carrier_name, service_name
75
75
  end
76
76
  end
@@ -79,7 +79,7 @@ describe Oshpark::Order do
79
79
  it 'checks out the order' do
80
80
  allow(subject).to receive(:id).and_return('abcd1234')
81
81
 
82
- expect(Oshpark::client).to receive(:checkout_order).and_return({id: "abcd1234"})
82
+ expect(Oshpark::client).to receive(:checkout_order).and_return({'order' => {id: "abcd1234"}})
83
83
  subject.checkout
84
84
  end
85
85
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Oshpark::ShippingRate do
4
+ before do
5
+ Oshpark::client url: 'blarg', connection: FakeClient.new("foo")
6
+ end
7
+
8
+ subject { Oshpark::ShippingRate.new({}) }
9
+ it { should be_an Oshpark::Model }
10
+
11
+ describe 'rates_for_address' do
12
+ let(:address_params) { {name: "Bob", address_line_1: "8 Nelson Street", address_line_2: "Petone", city: "Lower Hutt", country: "New Zealand"} }
13
+ let(:address) { Oshpark::Address.new address_params }
14
+ subject { Oshpark::ShippingRate.rates_for_address address }
15
+
16
+ before do
17
+ expect(Oshpark::client).to receive(:shipping_rates).
18
+ with({"name" => "Bob", "company_name" => nil, "address_line_1" => "8 Nelson Street", "address_line_2" => "Petone", "city" => "Lower Hutt", "state" => nil, "zip_or_postal_code" => nil, "country" => "New Zealand", "phone_number" => nil, "is_business" => nil}).
19
+ and_return({'shipping_rates' => [:carrier_name => "Pete's Post", :service_name => "Pony Express", :price => "$25.95"]})
20
+ end
21
+
22
+ it "returns a list of shipping rates for the Order" do
23
+ expect(subject).to be_an Array
24
+ end
25
+
26
+ it "returns ShippingRate objects" do
27
+ expect(subject.first).to be_an Oshpark::ShippingRate
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+
34
+
@@ -8,6 +8,7 @@ class FakeClient
8
8
  'projects/abcd1234/approve' => { 'project' => {} },
9
9
  'orders' => { 'orders' => [{}] },
10
10
  'orders/abcd1234' => { 'order' => {} },
11
+ 'shipping_rates' => { 'shipping_rates' => [{}] },
11
12
  'panels' => { 'panels' => [{}] },
12
13
  'panels/abcd1234' => { 'panel' => {} },
13
14
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oshpark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Harton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-15 00:00:00.000000000 Z
12
+ date: 2014-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -228,6 +228,7 @@ files:
228
228
  - lib/oshpark/project.rb
229
229
  - lib/oshpark/rubymotion.rb
230
230
  - lib/oshpark/shipping_rate.rb
231
+ - lib/oshpark/stateful.rb
231
232
  - lib/oshpark/token.rb
232
233
  - lib/oshpark/upload.rb
233
234
  - lib/oshpark/user.rb
@@ -242,6 +243,7 @@ files:
242
243
  - spec/lib/oshpark/order_spec.rb
243
244
  - spec/lib/oshpark/panel_spec.rb
244
245
  - spec/lib/oshpark/project_spec.rb
246
+ - spec/lib/oshpark/shipping_rate_spec.rb
245
247
  - spec/lib/oshpark/upload_spec.rb
246
248
  - spec/spec_helper.rb
247
249
  - spec/support/http_client.rb
@@ -279,6 +281,7 @@ test_files:
279
281
  - spec/lib/oshpark/order_spec.rb
280
282
  - spec/lib/oshpark/panel_spec.rb
281
283
  - spec/lib/oshpark/project_spec.rb
284
+ - spec/lib/oshpark/shipping_rate_spec.rb
282
285
  - spec/lib/oshpark/upload_spec.rb
283
286
  - spec/spec_helper.rb
284
287
  - spec/support/http_client.rb