oshpark 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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