metal_archives 2.2.0 → 2.2.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.
- checksums.yaml +5 -5
- data/.github/workflows/ci.yml +46 -0
- data/.github/workflows/release.yml +69 -0
- data/.gitignore +6 -6
- data/.overcommit.yml +35 -0
- data/.rspec +1 -0
- data/.rubocop.yml +54 -8
- data/.rubocop_todo.yml +92 -0
- data/CHANGELOG.md +22 -0
- data/Gemfile +1 -1
- data/LICENSE.md +1 -1
- data/README.md +35 -64
- data/Rakefile +8 -7
- data/bin/console +41 -0
- data/bin/setup +8 -0
- data/docker-compose.yml +14 -0
- data/lib/metal_archives.rb +48 -29
- data/lib/metal_archives/{utils/collection.rb → collection.rb} +0 -0
- data/lib/metal_archives/configuration.rb +9 -33
- data/lib/metal_archives/{error.rb → errors.rb} +0 -0
- data/lib/metal_archives/http_client.rb +13 -8
- data/lib/metal_archives/{utils/lru_cache.rb → lru_cache.rb} +0 -0
- data/lib/metal_archives/middleware/cache_check.rb +2 -4
- data/lib/metal_archives/middleware/encoding.rb +2 -2
- data/lib/metal_archives/middleware/headers.rb +5 -5
- data/lib/metal_archives/middleware/rewrite_endpoint.rb +2 -2
- data/lib/metal_archives/models/artist.rb +40 -24
- data/lib/metal_archives/models/band.rb +47 -29
- data/lib/metal_archives/models/base_model.rb +64 -61
- data/lib/metal_archives/models/label.rb +11 -11
- data/lib/metal_archives/models/release.rb +17 -15
- data/lib/metal_archives/{utils/nil_date.rb → nil_date.rb} +10 -18
- data/lib/metal_archives/parsers/artist.rb +62 -31
- data/lib/metal_archives/parsers/band.rb +97 -74
- data/lib/metal_archives/parsers/label.rb +21 -21
- data/lib/metal_archives/parsers/parser.rb +23 -8
- data/lib/metal_archives/parsers/release.rb +77 -72
- data/lib/metal_archives/{utils/range.rb → range.rb} +5 -2
- data/lib/metal_archives/version.rb +12 -1
- data/metal_archives.env.example +7 -0
- data/metal_archives.gemspec +40 -28
- data/nginx/default.conf +60 -0
- metadata +126 -65
- data/.travis.yml +0 -12
- data/spec/configuration_spec.rb +0 -96
- data/spec/factories/artist_factory.rb +0 -37
- data/spec/factories/band_factory.rb +0 -60
- data/spec/factories/nil_date_factory.rb +0 -9
- data/spec/factories/range_factory.rb +0 -8
- data/spec/models/artist_spec.rb +0 -138
- data/spec/models/band_spec.rb +0 -164
- data/spec/models/base_model_spec.rb +0 -219
- data/spec/models/release_spec.rb +0 -133
- data/spec/parser_spec.rb +0 -19
- data/spec/spec_helper.rb +0 -111
- data/spec/support/factory_girl.rb +0 -5
- data/spec/support/metal_archives.rb +0 -33
- data/spec/utils/collection_spec.rb +0 -72
- data/spec/utils/lru_cache_spec.rb +0 -53
- data/spec/utils/nil_date_spec.rb +0 -156
- data/spec/utils/range_spec.rb +0 -62
data/nginx/default.conf
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
proxy_cache_path /cache levels=1:2 keys_zone=metal_archives:10m max_size=10g
|
2
|
+
inactive=6M use_temp_path=off;
|
3
|
+
|
4
|
+
limit_req_zone $binary_remote_addr zone=ma_limit_req:10m rate=2r/s;
|
5
|
+
|
6
|
+
server {
|
7
|
+
listen 80;
|
8
|
+
|
9
|
+
# Don't send the NGINX version number in error pages and Server header
|
10
|
+
server_tokens off;
|
11
|
+
|
12
|
+
# Don't process logs
|
13
|
+
access_log off;
|
14
|
+
|
15
|
+
# Proxy to MA server
|
16
|
+
location / {
|
17
|
+
proxy_pass https://www.metal-archives.com;
|
18
|
+
|
19
|
+
sub_filter www.metal-archives.com localhost;
|
20
|
+
sub_filter_once off;
|
21
|
+
|
22
|
+
proxy_redirect off;
|
23
|
+
proxy_set_header Host www.metal-archives.com;
|
24
|
+
proxy_set_header X-Forwarded-Host $host;
|
25
|
+
proxy_set_header X-Forwarded-Server $host;
|
26
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
27
|
+
proxy_set_header X-Real-IP $remote_addr;
|
28
|
+
|
29
|
+
proxy_ssl_certificate /etc/nginx/auth.d/client.pem;
|
30
|
+
proxy_ssl_certificate_key /etc/nginx/auth.d/client.key;
|
31
|
+
proxy_ssl_server_name on;
|
32
|
+
proxy_ssl_session_reuse on;
|
33
|
+
|
34
|
+
proxy_ignore_headers X-Accel-Expires;
|
35
|
+
proxy_ignore_headers Expires;
|
36
|
+
proxy_ignore_headers Cache-Control;
|
37
|
+
proxy_ignore_headers Set-Cookie;
|
38
|
+
|
39
|
+
proxy_hide_header Set-Cookie;
|
40
|
+
proxy_hide_header Pragma;
|
41
|
+
|
42
|
+
# Limit HTTP requests
|
43
|
+
limit_req zone=ma_limit_req burst=5;
|
44
|
+
limit_req_status 429;
|
45
|
+
limit_conn_status 429;
|
46
|
+
|
47
|
+
# Cache responses
|
48
|
+
proxy_cache metal_archives;
|
49
|
+
proxy_cache_valid 200 301 302 30d;
|
50
|
+
proxy_cache_valid 404 7d;
|
51
|
+
expires 30d;
|
52
|
+
|
53
|
+
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
54
|
+
proxy_cache_background_update on;
|
55
|
+
proxy_cache_lock on;
|
56
|
+
proxy_cache_bypass $cookie_nocache $arg_nocache;
|
57
|
+
|
58
|
+
add_header X-Cache-Status $upstream_cache_status;
|
59
|
+
}
|
60
|
+
}
|
metadata
CHANGED
@@ -1,15 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metal_archives
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Dejonckheere
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: countries
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday_throttler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: nokogiri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: zeitwerk
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
13
83
|
- !ruby/object:Gem::Dependency
|
14
84
|
name: byebug
|
15
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -25,7 +95,7 @@ dependencies:
|
|
25
95
|
- !ruby/object:Gem::Version
|
26
96
|
version: '0'
|
27
97
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
98
|
+
name: debase
|
29
99
|
requirement: !ruby/object:Gem::Requirement
|
30
100
|
requirements:
|
31
101
|
- - ">="
|
@@ -39,7 +109,7 @@ dependencies:
|
|
39
109
|
- !ruby/object:Gem::Version
|
40
110
|
version: '0'
|
41
111
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
112
|
+
name: factory_bot
|
43
113
|
requirement: !ruby/object:Gem::Requirement
|
44
114
|
requirements:
|
45
115
|
- - ">="
|
@@ -53,7 +123,7 @@ dependencies:
|
|
53
123
|
- !ruby/object:Gem::Version
|
54
124
|
version: '0'
|
55
125
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
126
|
+
name: fasterer
|
57
127
|
requirement: !ruby/object:Gem::Requirement
|
58
128
|
requirements:
|
59
129
|
- - ">="
|
@@ -67,7 +137,7 @@ dependencies:
|
|
67
137
|
- !ruby/object:Gem::Version
|
68
138
|
version: '0'
|
69
139
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
140
|
+
name: ffaker
|
71
141
|
requirement: !ruby/object:Gem::Requirement
|
72
142
|
requirements:
|
73
143
|
- - ">="
|
@@ -81,7 +151,7 @@ dependencies:
|
|
81
151
|
- !ruby/object:Gem::Version
|
82
152
|
version: '0'
|
83
153
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
154
|
+
name: flay
|
85
155
|
requirement: !ruby/object:Gem::Requirement
|
86
156
|
requirements:
|
87
157
|
- - ">="
|
@@ -95,7 +165,7 @@ dependencies:
|
|
95
165
|
- !ruby/object:Gem::Version
|
96
166
|
version: '0'
|
97
167
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
168
|
+
name: overcommit
|
99
169
|
requirement: !ruby/object:Gem::Requirement
|
100
170
|
requirements:
|
101
171
|
- - ">="
|
@@ -109,7 +179,7 @@ dependencies:
|
|
109
179
|
- !ruby/object:Gem::Version
|
110
180
|
version: '0'
|
111
181
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
182
|
+
name: pronto
|
113
183
|
requirement: !ruby/object:Gem::Requirement
|
114
184
|
requirements:
|
115
185
|
- - ">="
|
@@ -123,7 +193,7 @@ dependencies:
|
|
123
193
|
- !ruby/object:Gem::Version
|
124
194
|
version: '0'
|
125
195
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
196
|
+
name: rake
|
127
197
|
requirement: !ruby/object:Gem::Requirement
|
128
198
|
requirements:
|
129
199
|
- - ">="
|
@@ -137,13 +207,13 @@ dependencies:
|
|
137
207
|
- !ruby/object:Gem::Version
|
138
208
|
version: '0'
|
139
209
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
210
|
+
name: rdoc
|
141
211
|
requirement: !ruby/object:Gem::Requirement
|
142
212
|
requirements:
|
143
213
|
- - ">="
|
144
214
|
- !ruby/object:Gem::Version
|
145
215
|
version: '0'
|
146
|
-
type: :
|
216
|
+
type: :development
|
147
217
|
prerelease: false
|
148
218
|
version_requirements: !ruby/object:Gem::Requirement
|
149
219
|
requirements:
|
@@ -151,13 +221,13 @@ dependencies:
|
|
151
221
|
- !ruby/object:Gem::Version
|
152
222
|
version: '0'
|
153
223
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
224
|
+
name: reek
|
155
225
|
requirement: !ruby/object:Gem::Requirement
|
156
226
|
requirements:
|
157
227
|
- - ">="
|
158
228
|
- !ruby/object:Gem::Version
|
159
229
|
version: '0'
|
160
|
-
type: :
|
230
|
+
type: :development
|
161
231
|
prerelease: false
|
162
232
|
version_requirements: !ruby/object:Gem::Requirement
|
163
233
|
requirements:
|
@@ -165,13 +235,13 @@ dependencies:
|
|
165
235
|
- !ruby/object:Gem::Version
|
166
236
|
version: '0'
|
167
237
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
238
|
+
name: rspec
|
169
239
|
requirement: !ruby/object:Gem::Requirement
|
170
240
|
requirements:
|
171
241
|
- - ">="
|
172
242
|
- !ruby/object:Gem::Version
|
173
243
|
version: '0'
|
174
|
-
type: :
|
244
|
+
type: :development
|
175
245
|
prerelease: false
|
176
246
|
version_requirements: !ruby/object:Gem::Requirement
|
177
247
|
requirements:
|
@@ -179,39 +249,64 @@ dependencies:
|
|
179
249
|
- !ruby/object:Gem::Version
|
180
250
|
version: '0'
|
181
251
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
252
|
+
name: rubocop
|
183
253
|
requirement: !ruby/object:Gem::Requirement
|
184
254
|
requirements:
|
185
255
|
- - ">="
|
186
256
|
- !ruby/object:Gem::Version
|
187
257
|
version: '0'
|
188
|
-
type: :
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: webmock
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :development
|
189
273
|
prerelease: false
|
190
274
|
version_requirements: !ruby/object:Gem::Requirement
|
191
275
|
requirements:
|
192
276
|
- - ">="
|
193
277
|
- !ruby/object:Gem::Version
|
194
278
|
version: '0'
|
195
|
-
description:
|
279
|
+
description: Ruby API layer that transparently queries, scrapes and caches Metal Archives'
|
280
|
+
website
|
196
281
|
email:
|
197
282
|
- florian@floriandejonckheere.be
|
198
|
-
executables:
|
283
|
+
executables:
|
284
|
+
- console
|
285
|
+
- setup
|
199
286
|
extensions: []
|
200
287
|
extra_rdoc_files: []
|
201
288
|
files:
|
289
|
+
- ".github/workflows/ci.yml"
|
290
|
+
- ".github/workflows/release.yml"
|
202
291
|
- ".gitignore"
|
292
|
+
- ".overcommit.yml"
|
203
293
|
- ".rspec"
|
204
294
|
- ".rubocop.yml"
|
205
|
-
- ".
|
295
|
+
- ".rubocop_todo.yml"
|
206
296
|
- CHANGELOG.md
|
207
297
|
- Gemfile
|
208
298
|
- LICENSE.md
|
209
299
|
- README.md
|
210
300
|
- Rakefile
|
301
|
+
- bin/console
|
302
|
+
- bin/setup
|
303
|
+
- docker-compose.yml
|
211
304
|
- lib/metal_archives.rb
|
305
|
+
- lib/metal_archives/collection.rb
|
212
306
|
- lib/metal_archives/configuration.rb
|
213
|
-
- lib/metal_archives/
|
307
|
+
- lib/metal_archives/errors.rb
|
214
308
|
- lib/metal_archives/http_client.rb
|
309
|
+
- lib/metal_archives/lru_cache.rb
|
215
310
|
- lib/metal_archives/middleware/cache_check.rb
|
216
311
|
- lib/metal_archives/middleware/encoding.rb
|
217
312
|
- lib/metal_archives/middleware/headers.rb
|
@@ -221,39 +316,23 @@ files:
|
|
221
316
|
- lib/metal_archives/models/base_model.rb
|
222
317
|
- lib/metal_archives/models/label.rb
|
223
318
|
- lib/metal_archives/models/release.rb
|
319
|
+
- lib/metal_archives/nil_date.rb
|
224
320
|
- lib/metal_archives/parsers/artist.rb
|
225
321
|
- lib/metal_archives/parsers/band.rb
|
226
322
|
- lib/metal_archives/parsers/label.rb
|
227
323
|
- lib/metal_archives/parsers/parser.rb
|
228
324
|
- lib/metal_archives/parsers/release.rb
|
229
|
-
- lib/metal_archives/
|
230
|
-
- lib/metal_archives/utils/lru_cache.rb
|
231
|
-
- lib/metal_archives/utils/nil_date.rb
|
232
|
-
- lib/metal_archives/utils/range.rb
|
325
|
+
- lib/metal_archives/range.rb
|
233
326
|
- lib/metal_archives/version.rb
|
327
|
+
- metal_archives.env.example
|
234
328
|
- metal_archives.gemspec
|
329
|
+
- nginx/default.conf
|
235
330
|
- publish.sh
|
236
|
-
- spec/configuration_spec.rb
|
237
|
-
- spec/factories/artist_factory.rb
|
238
|
-
- spec/factories/band_factory.rb
|
239
|
-
- spec/factories/nil_date_factory.rb
|
240
|
-
- spec/factories/range_factory.rb
|
241
|
-
- spec/models/artist_spec.rb
|
242
|
-
- spec/models/band_spec.rb
|
243
|
-
- spec/models/base_model_spec.rb
|
244
|
-
- spec/models/release_spec.rb
|
245
|
-
- spec/parser_spec.rb
|
246
|
-
- spec/spec_helper.rb
|
247
|
-
- spec/support/factory_girl.rb
|
248
|
-
- spec/support/metal_archives.rb
|
249
|
-
- spec/utils/collection_spec.rb
|
250
|
-
- spec/utils/lru_cache_spec.rb
|
251
|
-
- spec/utils/nil_date_spec.rb
|
252
|
-
- spec/utils/range_spec.rb
|
253
331
|
homepage: http://github.com/floriandejonckheere/metal_archives
|
254
332
|
licenses:
|
255
333
|
- MIT
|
256
|
-
metadata:
|
334
|
+
metadata:
|
335
|
+
source_code_uri: https://github.com/floriandejonckheere/metal_archives
|
257
336
|
post_install_message:
|
258
337
|
rdoc_options: []
|
259
338
|
require_paths:
|
@@ -262,33 +341,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
341
|
requirements:
|
263
342
|
- - ">="
|
264
343
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
344
|
+
version: 2.5.8
|
266
345
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
346
|
requirements:
|
268
347
|
- - ">="
|
269
348
|
- !ruby/object:Gem::Version
|
270
349
|
version: '0'
|
271
350
|
requirements: []
|
272
|
-
|
273
|
-
rubygems_version: 2.6.12
|
351
|
+
rubygems_version: 3.1.2
|
274
352
|
signing_key:
|
275
353
|
specification_version: 4
|
276
354
|
summary: Metal Archives Ruby API
|
277
|
-
test_files:
|
278
|
-
- spec/configuration_spec.rb
|
279
|
-
- spec/factories/artist_factory.rb
|
280
|
-
- spec/factories/band_factory.rb
|
281
|
-
- spec/factories/nil_date_factory.rb
|
282
|
-
- spec/factories/range_factory.rb
|
283
|
-
- spec/models/artist_spec.rb
|
284
|
-
- spec/models/band_spec.rb
|
285
|
-
- spec/models/base_model_spec.rb
|
286
|
-
- spec/models/release_spec.rb
|
287
|
-
- spec/parser_spec.rb
|
288
|
-
- spec/spec_helper.rb
|
289
|
-
- spec/support/factory_girl.rb
|
290
|
-
- spec/support/metal_archives.rb
|
291
|
-
- spec/utils/collection_spec.rb
|
292
|
-
- spec/utils/lru_cache_spec.rb
|
293
|
-
- spec/utils/nil_date_spec.rb
|
294
|
-
- spec/utils/range_spec.rb
|
355
|
+
test_files: []
|
data/.travis.yml
DELETED
data/spec/configuration_spec.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe MetalArchives::Configuration do
|
4
|
-
describe 'properties' do
|
5
|
-
it 'has the correct properties' do
|
6
|
-
expect(subject).to respond_to :app_name
|
7
|
-
expect(subject).to respond_to :app_name=
|
8
|
-
expect(subject).to respond_to :app_version
|
9
|
-
expect(subject).to respond_to :app_version=
|
10
|
-
expect(subject).to respond_to :app_contact
|
11
|
-
expect(subject).to respond_to :app_contact=
|
12
|
-
expect(subject).to respond_to :endpoint
|
13
|
-
expect(subject).to respond_to :endpoint=
|
14
|
-
expect(subject).to respond_to :default_endpoint
|
15
|
-
expect(subject).to respond_to :middleware
|
16
|
-
expect(subject).to respond_to :middleware=
|
17
|
-
expect(subject).to respond_to :request_rate
|
18
|
-
expect(subject).to respond_to :request_rate=
|
19
|
-
expect(subject).to respond_to :request_timeout
|
20
|
-
expect(subject).to respond_to :request_timeout=
|
21
|
-
expect(subject).to respond_to :logger
|
22
|
-
expect(subject).to respond_to :logger=
|
23
|
-
expect(subject).to respond_to :cache_size
|
24
|
-
expect(subject).to respond_to :cache_size=
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'has default properties' do
|
28
|
-
expect(subject.default_endpoint).to eq 'https://www.metal-archives.com/'
|
29
|
-
expect(subject.logger).not_to be_nil
|
30
|
-
expect(subject.cache_size).to be_an Integer
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'overrides defaults' do
|
34
|
-
subject.endpoint = 'http://my-proxy.com/'
|
35
|
-
logger = Logger.new STDERR
|
36
|
-
subject.logger = logger
|
37
|
-
subject.cache_size = 0
|
38
|
-
|
39
|
-
expect(subject.endpoint).to eq 'http://my-proxy.com/'
|
40
|
-
expect(subject.logger).to be logger
|
41
|
-
expect(subject.cache_size).to eq 0
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe 'configuration' do
|
46
|
-
after(:each) do
|
47
|
-
# Reset configuration
|
48
|
-
load 'support/metal_archives.rb'
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'is invalid without app_name' do
|
52
|
-
proc = -> do
|
53
|
-
MetalArchives.configure do |c|
|
54
|
-
c.app_version = MetalArchives::VERSION
|
55
|
-
c.app_contact = 'user@example.com'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
expect(proc).to raise_error MetalArchives::Errors::InvalidConfigurationError
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'is invalid without app_version' do
|
63
|
-
proc = -> do
|
64
|
-
MetalArchives.configure do |c|
|
65
|
-
c.app_name = 'MetalArchivesGemTestSuite'
|
66
|
-
c.app_contact = 'user@example.com'
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
expect(proc).to raise_error MetalArchives::Errors::InvalidConfigurationError
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'is invalid without app_contact' do
|
74
|
-
proc = -> do
|
75
|
-
MetalArchives.configure do |c|
|
76
|
-
c.app_name = 'MetalArchivesGemTestSuite'
|
77
|
-
c.app_version = MetalArchives::VERSION
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
expect(proc).to raise_error MetalArchives::Errors::InvalidConfigurationError
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'is valid' do
|
85
|
-
proc = -> do
|
86
|
-
MetalArchives.configure do |c|
|
87
|
-
c.app_name = 'MetalArchivesGemTestSuite'
|
88
|
-
c.app_version = MetalArchives::VERSION
|
89
|
-
c.app_contact = 'user@example.com'
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
expect(proc).not_to raise_error
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|