analogbridge 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.hound.yml +3 -0
- data/.rspec +1 -0
- data/.rubocop.yml +629 -0
- data/.sample.pryrc +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +227 -0
- data/Rakefile +6 -0
- data/analogbridge.gemspec +29 -0
- data/bin/console +11 -0
- data/bin/rspec +17 -0
- data/bin/setup +8 -0
- data/lib/analogbridge.rb +9 -0
- data/lib/analogbridge/base.rb +11 -0
- data/lib/analogbridge/client.rb +46 -0
- data/lib/analogbridge/configuration.rb +22 -0
- data/lib/analogbridge/customer.rb +31 -0
- data/lib/analogbridge/order.rb +13 -0
- data/lib/analogbridge/product.rb +7 -0
- data/lib/analogbridge/response.rb +19 -0
- data/lib/analogbridge/version.rb +3 -0
- data/spec/client_spec.rb +46 -0
- data/spec/configuration_spec.rb +23 -0
- data/spec/customer_spec.rb +82 -0
- data/spec/fixtures/customer.json +22 -0
- data/spec/fixtures/customer_created.json +26 -0
- data/spec/fixtures/customer_deleted.json +9 -0
- data/spec/fixtures/customers.json +26 -0
- data/spec/fixtures/import_ready_orders.json +15 -0
- data/spec/fixtures/order.json +37 -0
- data/spec/fixtures/orders.json +39 -0
- data/spec/fixtures/products.json +18 -0
- data/spec/order_spec.rb +41 -0
- data/spec/product_spec.rb +13 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/fake_analogbridge_api.rb +118 -0
- metadata +169 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe AnalogBridge::Product do
|
4
|
+
describe ".list" do
|
5
|
+
it "lists all existing product" do
|
6
|
+
stub_analogbridge_product_listing
|
7
|
+
products = AnalogBridge::Product.list
|
8
|
+
|
9
|
+
expect(products.count).to eq(2)
|
10
|
+
expect(products.first.name).to eq("35mm Slides")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "webmock/rspec"
|
2
|
+
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
3
|
+
require "analogbridge"
|
4
|
+
|
5
|
+
Dir["./spec/support/**/*.rb"].sort.each { |file| require file }
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.before :suite do
|
9
|
+
config.include FakeAnalogbridgeApi
|
10
|
+
end
|
11
|
+
|
12
|
+
config.before :all do
|
13
|
+
AnalogBridge.configure do |analogbridge_config|
|
14
|
+
analogbridge_config.secret_key = "SECRET_API_KEY"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module FakeAnalogbridgeApi
|
2
|
+
def stub_analogbridge_customer_listting(limit:, offset:)
|
3
|
+
stub_api_response(
|
4
|
+
:get,
|
5
|
+
"customers?limit=#{limit}&offset=#{offset}",
|
6
|
+
filename: "customers",
|
7
|
+
status: 200,
|
8
|
+
)
|
9
|
+
end
|
10
|
+
|
11
|
+
def stub_analogbridge_customer_create(attributes)
|
12
|
+
stub_api_response(
|
13
|
+
:post,
|
14
|
+
"customers",
|
15
|
+
data: attributes,
|
16
|
+
filename: "customer_created",
|
17
|
+
status: 200,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def stub_analogbridge_customer_find(customer_id)
|
22
|
+
stub_api_response(
|
23
|
+
:get,
|
24
|
+
["customers", customer_id].join("/"),
|
25
|
+
filename: "customer",
|
26
|
+
status: 200,
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def stub_analogbridge_customer_update(customer_id, attributes)
|
31
|
+
stub_api_response(
|
32
|
+
:post,
|
33
|
+
["customers", customer_id].join("/"),
|
34
|
+
data: attributes,
|
35
|
+
filename: "customer_created",
|
36
|
+
status: 200,
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
def stub_analogbridge_customer_delete(customer_id)
|
41
|
+
stub_api_response(
|
42
|
+
:delete,
|
43
|
+
["customers", customer_id].join("/"),
|
44
|
+
filename: "customer_deleted",
|
45
|
+
status: 200,
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
def stub_analogbridge_order_listing(customer_id:)
|
50
|
+
stub_api_response(
|
51
|
+
:get,
|
52
|
+
["customers", customer_id, "orders"].join("/"),
|
53
|
+
filename: "orders",
|
54
|
+
status: 200,
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def stub_analogbridge_order_details(customer_id, order_id)
|
59
|
+
stub_api_response(
|
60
|
+
:get,
|
61
|
+
["customers", customer_id, "orders", order_id].join("/"),
|
62
|
+
filename: "order",
|
63
|
+
status: 200,
|
64
|
+
)
|
65
|
+
end
|
66
|
+
|
67
|
+
def stub_analogbridge_order_import_ready
|
68
|
+
stub_api_response(
|
69
|
+
:get,
|
70
|
+
"orders/import-ready",
|
71
|
+
filename: "import_ready_orders",
|
72
|
+
status: 200,
|
73
|
+
)
|
74
|
+
end
|
75
|
+
|
76
|
+
def stub_analogbridge_product_listing
|
77
|
+
stub_api_response(
|
78
|
+
:get,
|
79
|
+
"products",
|
80
|
+
filename: "products",
|
81
|
+
status: 200,
|
82
|
+
)
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def stub_api_response(method, end_point, filename:, status:, data: nil)
|
88
|
+
stub_request(method, api_end_point(end_point)).
|
89
|
+
with(api_request_headers(data: data)).
|
90
|
+
to_return(response_with(filename: filename, status: status))
|
91
|
+
end
|
92
|
+
|
93
|
+
def api_end_point(end_point)
|
94
|
+
[AnalogBridge.configuration.api_host, end_point].join("/")
|
95
|
+
end
|
96
|
+
|
97
|
+
def api_request_headers(data:)
|
98
|
+
Hash.new.tap do |request_headers|
|
99
|
+
request_headers[:body] = data
|
100
|
+
request_headers[:headers] = api_authorization_headers
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def api_authorization_headers
|
105
|
+
{ "Authorization" => "Basic U0VDUkVUX0FQSV9LRVk6" }
|
106
|
+
end
|
107
|
+
|
108
|
+
def response_with(filename:, status:)
|
109
|
+
{ body: fixture_file(filename), status: status }
|
110
|
+
end
|
111
|
+
|
112
|
+
def fixture_file(filename)
|
113
|
+
file_name = [filename, "json"].join(".")
|
114
|
+
file_path = ["../../", "fixtures", file_name].join("/")
|
115
|
+
|
116
|
+
File.read(File.expand_path(file_path, __FILE__))
|
117
|
+
end
|
118
|
+
end
|
metadata
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: analogbridge
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eugene Gekhter
|
8
|
+
- Abu Nashir
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-12-18 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: '2.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.13'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.13'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '10.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '10.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rspec
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: webmock
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2.0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '2.0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: pry
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.10.3
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.10.3
|
98
|
+
description: Enable users to import any analog media format directly into your app
|
99
|
+
with the Analog Bridge API
|
100
|
+
email:
|
101
|
+
- eg@gomemorable.com
|
102
|
+
- abunashir@gmail.com
|
103
|
+
executables: []
|
104
|
+
extensions: []
|
105
|
+
extra_rdoc_files: []
|
106
|
+
files:
|
107
|
+
- ".gitignore"
|
108
|
+
- ".hound.yml"
|
109
|
+
- ".rspec"
|
110
|
+
- ".rubocop.yml"
|
111
|
+
- ".sample.pryrc"
|
112
|
+
- ".travis.yml"
|
113
|
+
- Gemfile
|
114
|
+
- LICENSE
|
115
|
+
- README.md
|
116
|
+
- Rakefile
|
117
|
+
- analogbridge.gemspec
|
118
|
+
- bin/console
|
119
|
+
- bin/rspec
|
120
|
+
- bin/setup
|
121
|
+
- lib/analogbridge.rb
|
122
|
+
- lib/analogbridge/base.rb
|
123
|
+
- lib/analogbridge/client.rb
|
124
|
+
- lib/analogbridge/configuration.rb
|
125
|
+
- lib/analogbridge/customer.rb
|
126
|
+
- lib/analogbridge/order.rb
|
127
|
+
- lib/analogbridge/product.rb
|
128
|
+
- lib/analogbridge/response.rb
|
129
|
+
- lib/analogbridge/version.rb
|
130
|
+
- spec/client_spec.rb
|
131
|
+
- spec/configuration_spec.rb
|
132
|
+
- spec/customer_spec.rb
|
133
|
+
- spec/fixtures/customer.json
|
134
|
+
- spec/fixtures/customer_created.json
|
135
|
+
- spec/fixtures/customer_deleted.json
|
136
|
+
- spec/fixtures/customers.json
|
137
|
+
- spec/fixtures/import_ready_orders.json
|
138
|
+
- spec/fixtures/order.json
|
139
|
+
- spec/fixtures/orders.json
|
140
|
+
- spec/fixtures/products.json
|
141
|
+
- spec/order_spec.rb
|
142
|
+
- spec/product_spec.rb
|
143
|
+
- spec/spec_helper.rb
|
144
|
+
- spec/support/fake_analogbridge_api.rb
|
145
|
+
homepage: https://analogbridge.io
|
146
|
+
licenses:
|
147
|
+
- MIT
|
148
|
+
metadata: {}
|
149
|
+
post_install_message:
|
150
|
+
rdoc_options: []
|
151
|
+
require_paths:
|
152
|
+
- lib
|
153
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 2.1.9
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 2.6.4
|
166
|
+
signing_key:
|
167
|
+
specification_version: 4
|
168
|
+
summary: Import any analog media format into your cloud app
|
169
|
+
test_files: []
|