analogbridge 0.1.0

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