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.
@@ -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
@@ -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: []