oshpark 0.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.
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe Oshpark::Order do
4
+ before do
5
+ Oshpark::client url: 'blarg', connection: FakeClient.new("foo")
6
+ end
7
+
8
+ subject { Oshpark::Order.new({}) }
9
+ it { should be_an Oshpark::Model }
10
+
11
+ %w| id board_cost cancellation_reason cancelled_at ordered_at payment_provider payment_received_at project_name quantity shipping_address shipping_cost shipping_country shipping_method shipping_name state total_cost project_id panel_id |.each do |attr|
12
+ it { should respond_to attr }
13
+ end
14
+
15
+ describe '#panel' do
16
+ it 'retrieves a panel' do
17
+ allow(subject).to receive(:panel_id).and_return('abcd1234')
18
+ expect(Oshpark::Panel).to receive(:find).with('abcd1234')
19
+ subject.panel
20
+ end
21
+ end
22
+
23
+ describe '#project' do
24
+ it 'retrieves a project' do
25
+ allow(subject).to receive(:project_id).and_return('abcd1234')
26
+ expect(Oshpark::Project).to receive(:find).with('abcd1234')
27
+ subject.project
28
+ end
29
+ end
30
+
31
+ describe '.create' do
32
+ before { expect(Oshpark::client).to receive(:create_order).and_return({id: "abcd1234", state: 'New'}) }
33
+ subject { Oshpark::Order.create }
34
+
35
+ it 'creates a new Order' do
36
+ expect(subject).to be_an Oshpark::Model
37
+ end
38
+
39
+ it 'sets the Order fields correctly' do
40
+ expect(subject.id).to eq 'abcd1234'
41
+ expect(subject.state).to eq 'New'
42
+ end
43
+ end
44
+
45
+ describe '#add_item' do
46
+ let(:item) { Oshpark::Project.new({id: '1234abcd'}) }
47
+ let(:quantity) { 6 }
48
+ it 'adds Project to an Order' do
49
+ allow(subject).to receive(:id).and_return('abcd1234')
50
+
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"})
53
+ subject.add_item item, quantity
54
+ end
55
+ end
56
+
57
+ describe '#set_address' do
58
+ let(:address) { Oshpark::Address.new name: "Bob", address_line_1: "8 Nelson Street", address_line_2: "Petone", city: "Lower Hutt", country: "New Zealand" }
59
+ it 'sets the delivery Address for an Order' do
60
+ allow(subject).to receive(:id).and_return('abcd1234')
61
+
62
+ expect(Oshpark::client).to receive(:set_order_address).with("abcd1234", address).and_return({id: "abcd1234"})
63
+ subject.set_address address
64
+ end
65
+ end
66
+
67
+ describe '#set_shipping_rate' do
68
+ let(:carrier_name) { 'Bobs Mail'}
69
+ let(:service_name) { 'Overnight Delivery' }
70
+ it 'sets the shipping rate for an Order' do
71
+ allow(subject).to receive(:id).and_return('abcd1234')
72
+
73
+ expect(Oshpark::client).to receive(:set_order_shipping_rate).with("abcd1234", "Bobs Mail", "Overnight Delivery").and_return({id: "abcd1234"})
74
+ subject.set_shipping_rate carrier_name, service_name
75
+ end
76
+ end
77
+
78
+ describe '#checkout' do
79
+ it 'checks out the order' do
80
+ allow(subject).to receive(:id).and_return('abcd1234')
81
+
82
+ expect(Oshpark::client).to receive(:checkout_order).and_return({id: "abcd1234"})
83
+ subject.checkout
84
+ end
85
+ end
86
+
87
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Oshpark::Panel do
4
+ subject { Oshpark::Panel.new({}) }
5
+ it { should be_an Oshpark::Model }
6
+ it { should respond_to :pcb_layers }
7
+ it { should respond_to :scheduled_order_time }
8
+ it { should respond_to :expected_receive_time }
9
+ it { should respond_to :id }
10
+ it { should respond_to :ordered_at }
11
+ it { should respond_to :received_at }
12
+ it { should respond_to :state }
13
+ it { should respond_to :service }
14
+ it { should respond_to :total_orders }
15
+ it { should respond_to :total_boards }
16
+ it { should respond_to :board_area_in_square_mils }
17
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Oshpark::Project do
4
+ subject { Oshpark::Project.new({}) }
5
+ it { should be_an Oshpark::Model }
6
+ it { should respond_to(:name) }
7
+ it { should respond_to(:name=) }
8
+
9
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Oshpark::Upload do
4
+ subject { Oshpark::Upload.new({}) }
5
+ it { should be_an Oshpark::Model }
6
+
7
+ %w| id state original_filename error_message queued_at started_at completed_at errored_at failed_at project_id |.each do |attr|
8
+ it { should respond_to attr }
9
+ end
10
+
11
+ describe '#project' do
12
+ it 'retrieves a project' do
13
+ allow(subject).to receive(:project_id).and_return('abcd1234')
14
+ expect(Oshpark::Project).to receive(:find).with('abcd1234')
15
+ subject.project
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ require 'pry'
2
+ require 'oshpark'
3
+
4
+ require 'rspec/its'
5
+ require 'byebug'
6
+
7
+ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
8
+
9
+ RSpec.configure do |config|
10
+ # config.color_enabled = true
11
+ config.formatter = :documentation
12
+ end
@@ -0,0 +1,24 @@
1
+ class FakeClient
2
+ attr_accessor :requests
3
+
4
+ FIXTURES = {
5
+ 'sessions' => { 'api_session_token' => {} },
6
+ 'projects' => { 'projects' => [{}] },
7
+ 'projects/abcd1234' => { 'project' => {} },
8
+ 'projects/abcd1234/approve' => { 'project' => {} },
9
+ 'orders' => { 'orders' => [{}] },
10
+ 'orders/abcd1234' => { 'order' => {} },
11
+ 'panels' => { 'panels' => [{}] },
12
+ 'panels/abcd1234' => { 'panel' => {} },
13
+ }
14
+
15
+ def initialize foo
16
+ self.requests = []
17
+ end
18
+
19
+ def request method, endpoint, params={}, token
20
+ requests << [method, endpoint, params]
21
+ FIXTURES[endpoint]
22
+ end
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,282 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oshpark
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - James Harton
8
+ - Henry Maddocks
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-12-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.6'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.6'
28
+ - !ruby/object:Gem::Dependency
29
+ name: cucumber
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
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-core
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
+ - !ruby/object:Gem::Dependency
57
+ name: rspec-mocks
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec-its
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: guard-rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: guard-cucumber
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: guard-bundler
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: pry
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rake
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: byebug
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: micro_token
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: thor
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ description: API and command line client for PCB fabrication via oshpark.com
197
+ email:
198
+ - james@resistor.io
199
+ - henry@resistor.io
200
+ executables:
201
+ - oshpark
202
+ extensions: []
203
+ extra_rdoc_files: []
204
+ files:
205
+ - ".gitignore"
206
+ - Gemfile
207
+ - Gemfile.lock
208
+ - Guardfile
209
+ - LICENSE.txt
210
+ - README.md
211
+ - Rakefile
212
+ - bin/oshpark
213
+ - lib/oshpark.rb
214
+ - lib/oshpark/address.rb
215
+ - lib/oshpark/client.rb
216
+ - lib/oshpark/connection.rb
217
+ - lib/oshpark/dimensionable.rb
218
+ - lib/oshpark/ext.rb
219
+ - lib/oshpark/image.rb
220
+ - lib/oshpark/import.rb
221
+ - lib/oshpark/layer.rb
222
+ - lib/oshpark/model.rb
223
+ - lib/oshpark/order.rb
224
+ - lib/oshpark/order_option.rb
225
+ - lib/oshpark/panel.rb
226
+ - lib/oshpark/project.rb
227
+ - lib/oshpark/rubymotion.rb
228
+ - lib/oshpark/shipping_rate.rb
229
+ - lib/oshpark/token.rb
230
+ - lib/oshpark/upload.rb
231
+ - lib/oshpark/user.rb
232
+ - lib/oshpark/version.rb
233
+ - oshpark.gemspec
234
+ - spec/lib/oshpark/address_spec.rb
235
+ - spec/lib/oshpark/client_spec.rb
236
+ - spec/lib/oshpark/image_spec.rb
237
+ - spec/lib/oshpark/import_spec.rb
238
+ - spec/lib/oshpark/layer_spec.rb
239
+ - spec/lib/oshpark/model_spec.rb
240
+ - spec/lib/oshpark/order_spec.rb
241
+ - spec/lib/oshpark/panel_spec.rb
242
+ - spec/lib/oshpark/project_spec.rb
243
+ - spec/lib/oshpark/upload_spec.rb
244
+ - spec/spec_helper.rb
245
+ - spec/support/http_client.rb
246
+ homepage: ''
247
+ licenses:
248
+ - MIT
249
+ metadata: {}
250
+ post_install_message:
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 2.2.2
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: API and command line client for oshpark.com
270
+ test_files:
271
+ - spec/lib/oshpark/address_spec.rb
272
+ - spec/lib/oshpark/client_spec.rb
273
+ - spec/lib/oshpark/image_spec.rb
274
+ - spec/lib/oshpark/import_spec.rb
275
+ - spec/lib/oshpark/layer_spec.rb
276
+ - spec/lib/oshpark/model_spec.rb
277
+ - spec/lib/oshpark/order_spec.rb
278
+ - spec/lib/oshpark/panel_spec.rb
279
+ - spec/lib/oshpark/project_spec.rb
280
+ - spec/lib/oshpark/upload_spec.rb
281
+ - spec/spec_helper.rb
282
+ - spec/support/http_client.rb