riiif 0.3.0 → 0.4.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.
data/riiif.gemspec CHANGED
@@ -4,24 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'riiif/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "riiif"
7
+ spec.name = 'riiif'
8
8
  spec.version = Riiif::VERSION
9
- spec.authors = ["Justin Coyne"]
10
- spec.email = ["justin@curationexperts.com"]
11
- spec.description = %q{A IIIF image server}
12
- spec.summary = %q{A rails engine that support IIIF requests}
13
- spec.homepage = "https://github.com/curationexperts/riiif"
14
- spec.license = "APACHE2"
9
+ spec.authors = ['Justin Coyne']
10
+ spec.email = ['justin@curationexperts.com']
11
+ spec.description = 'A IIIF image server'
12
+ spec.summary = 'A rails engine that support IIIF requests'
13
+ spec.homepage = 'https://github.com/curationexperts/riiif'
14
+ spec.license = 'APACHE2'
15
15
 
16
- spec.files = `git ls-files|grep -v spec/samples`.split($/)
16
+ spec.files = `git ls-files|grep -v spec/samples`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "engine_cart", '~> 0.8'
24
- spec.add_development_dependency "rspec-rails"
25
- spec.add_development_dependency "sqlite3"
26
21
  spec.add_dependency 'rails', '> 3.2.0'
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'rake'
24
+ spec.add_development_dependency 'engine_cart', '~> 0.8'
25
+ spec.add_development_dependency 'rspec-rails'
26
+ spec.add_development_dependency 'sqlite3'
27
+ spec.add_development_dependency 'rubocop', '~> 0.41.2'
28
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.5'
27
29
  end
@@ -0,0 +1,132 @@
1
+ require 'spec_helper'
2
+ require 'open-uri'
3
+
4
+ describe Riiif::ImagesController do
5
+ let(:filename) { File.expand_path('spec/samples/world.jp2') }
6
+ routes { Riiif::Engine.routes }
7
+
8
+ describe '#show' do
9
+ it 'sends images to the service' do
10
+ image = double
11
+ expect(Riiif::Image).to receive(:new).with('abcd1234').and_return(image)
12
+ expect(image).to receive(:render).with('region' => 'full', 'size' => 'full',
13
+ 'rotation' => '0', 'quality' => 'default',
14
+ 'format' => 'jpg').and_return('IMAGEDATA')
15
+ get :show, id: 'abcd1234', action: 'show', region: 'full', size: 'full',
16
+ rotation: '0', quality: 'default', format: 'jpg'
17
+ expect(response).to be_successful
18
+ expect(response.body).to eq 'IMAGEDATA'
19
+ expect(response.headers['Link']).to eq '<http://iiif.io/api/image/2/level1.json>;rel="profile"'
20
+ expect(response.headers['Access-Control-Allow-Origin']).to eq '*'
21
+ end
22
+
23
+ context 'with an unauthorized image' do
24
+ let(:auth) { double('no auth service', can?: false) }
25
+ let(:not_found_image) { double('not_found_image', render: 'test data') }
26
+ before do
27
+ allow(controller).to receive(:authorization_service).and_return(auth)
28
+ allow(controller).to receive(:not_found_image).and_return(not_found_image)
29
+ end
30
+ it 'renders 401' do
31
+ get :show, id: 'abcd1234', action: 'show', region: 'full', size: 'full',
32
+ rotation: '0', quality: 'default', format: 'jpg'
33
+ expect(response.body).to eq 'test data'
34
+ expect(response.code).to eq '401'
35
+ end
36
+ end
37
+
38
+ context 'with a invalid region' do
39
+ it 'renders 400' do
40
+ image = double('an image')
41
+ allow(image).to receive(:render).and_raise Riiif::InvalidAttributeError
42
+ allow(Riiif::Image).to receive(:new).with('abcd1234').and_return(image)
43
+ get :show, id: 'abcd1234', action: 'show', region: '`szoW0', size: 'full',
44
+ rotation: '0', quality: 'default', format: 'jpg'
45
+ expect(response.code).to eq '400'
46
+ end
47
+ end
48
+
49
+ context 'with a nonexistent image' do
50
+ it "errors when a default image isn't sent" do
51
+ expect(Riiif::Image).to receive(:new).with('bad_id').and_raise(OpenURI::HTTPError.new('fail', StringIO.new))
52
+ expect do
53
+ get :show, id: 'bad_id', action: 'show', region: 'full', size: 'full',
54
+ rotation: '0', quality: 'default', format: 'jpg'
55
+ end.to raise_error(StandardError)
56
+ end
57
+
58
+ context 'with a default image set' do
59
+ around do |example|
60
+ old_value = Riiif.not_found_image
61
+ Riiif.not_found_image = filename
62
+ example.run
63
+ Riiif.not_found_image = old_value
64
+ end
65
+
66
+ it "sends the default 'not found' image for failed http files" do
67
+ not_found_image = double
68
+ expect(Riiif::Image).to receive(:new) do |_id, file|
69
+ raise Riiif::ImageNotFoundError unless file.present?
70
+ not_found_image
71
+ end.twice
72
+ expect(not_found_image).to receive(:render).with('region' => 'full', 'size' => 'full',
73
+ 'rotation' => '0', 'quality' => 'default',
74
+ 'format' => 'jpg').and_return('default-image-data')
75
+
76
+ get :show, id: 'bad_id', action: 'show', region: 'full', size: 'full',
77
+ rotation: '0', quality: 'default', format: 'jpg'
78
+ expect(response).to be_not_found
79
+ expect(response.body).to eq 'default-image-data'
80
+ end
81
+
82
+ it "sends the default 'not found' image for failed files on the filesystem" do
83
+ not_found_image = double
84
+ expect(Riiif::Image).to receive(:new) do |_id, file|
85
+ raise Riiif::ImageNotFoundError unless file.present?
86
+ not_found_image
87
+ end.twice
88
+ expect(not_found_image).to receive(:render).with('region' => 'full', 'size' => 'full',
89
+ 'rotation' => '0', 'quality' => 'default',
90
+ 'format' => 'jpg').and_return('default-image-data')
91
+
92
+ get :show, id: 'bad_id', action: 'show', region: 'full', size: 'full',
93
+ rotation: '0', quality: 'default', format: 'jpg'
94
+ expect(response).to be_not_found
95
+ expect(response.body).to eq 'default-image-data'
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ describe 'info' do
102
+ it 'returns info' do
103
+ image = double
104
+ expect(Riiif::Image).to receive(:new).with('abcd1234').and_return(image)
105
+ expect(image).to receive(:info).and_return(width: 6000, height: 4000)
106
+ get :info, id: 'abcd1234', format: 'json'
107
+ expect(response).to be_successful
108
+ json = JSON.parse(response.body)
109
+ expect(json).to eq '@context' => 'http://iiif.io/api/image/2/context.json',
110
+ '@id' => 'http://test.host/images/abcd1234',
111
+ 'width' => 6000,
112
+ 'height' => 4000,
113
+ 'profile' => ['http://iiif.io/api/image/2/level1.json', 'formats' => %w(jpg png)],
114
+ 'protocol' => 'http://iiif.io/api/image'
115
+ expect(response.headers['Link']).to eq '<http://iiif.io/api/image/2/level1.json>;rel="profile"'
116
+ expect(response.headers['Content-Type']).to eq 'application/ld+json; charset=utf-8'
117
+ expect(response.headers['Access-Control-Allow-Origin']).to eq '*'
118
+ end
119
+
120
+ context 'with an unauthorized image' do
121
+ let(:auth) { double('no auth service', can?: false) }
122
+ before do
123
+ allow(controller).to receive(:authorization_service).and_return(auth)
124
+ end
125
+ it 'renders 401' do
126
+ get :info, id: 'abcd1234', format: 'json'
127
+ expect(response.body).to eq '{"error":"unauthorized"}'
128
+ expect(response.code).to eq '401'
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riiif::AkubraSystemFileResolver do
4
+ subject { described_class.new(Rails.root.join('../spec/samples/'), 'jp2', [[0, 2], [2, 2], [4, 1]]) }
5
+ it "raises an error when the file isn't found" do
6
+ expect { subject.find('demo:2') }.to raise_error Riiif::ImageNotFoundError
7
+ end
8
+
9
+ it 'gets the jpeg2000 file' do
10
+ expect(subject.find('demo:1').path).to eq Riiif::File.new(Dir.glob(subject.pathroot + '22/7e/9/info%3Afedora%2Fdemo%3A1%2Fjp2%2Fjp2.0').first).path
11
+ end
12
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riiif::FileSystemFileResolver do
4
+ let(:resolver) { described_class.new }
5
+
6
+ describe '#find' do
7
+ subject { resolver.find(id) }
8
+
9
+ context "when the file isn't found" do
10
+ let(:id) { '1234' }
11
+ it 'raises an error' do
12
+ expect { subject }.to raise_error Riiif::ImageNotFoundError
13
+ end
14
+ end
15
+
16
+ context 'when the file is found' do
17
+ let(:id) { 'world' }
18
+ it 'returns the jpeg2000 file' do
19
+ expect(subject.path).to eq resolver.root + '/spec/samples/world.jp2'
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '#pattern' do
25
+ subject { resolver.pattern(id) }
26
+
27
+ context 'with dashes' do
28
+ let(:id) { 'foo-bar-baz' }
29
+ it 'accepts ids with dashes' do
30
+ expect { subject }.not_to raise_error
31
+ end
32
+ end
33
+
34
+ context 'with colins' do
35
+ let(:id) { 'fo:baz' }
36
+ it 'accepts ids with colins' do
37
+ expect { subject }.not_to raise_error
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Riiif::HTTPFileResolver do
4
- subject { Riiif::HTTPFileResolver.new }
4
+ subject { described_class.new }
5
5
 
6
6
  before do
7
- Dir.glob("tmp/network_files/*") do |f|
7
+ Dir.glob('tmp/network_files/*') do |f|
8
8
  File.unlink(f)
9
9
  end
10
- subject.id_to_uri = lambda {|id| id}
10
+ subject.id_to_uri = ->(id) { id }
11
11
  end
12
12
 
13
13
  it "raises an error when the file isn't found" do
14
- expect(Kernel).to receive(:open).and_raise(OpenURI::HTTPError.new("failure", StringIO.new))
14
+ expect(Kernel).to receive(:open).and_raise(OpenURI::HTTPError.new('failure', StringIO.new))
15
15
  begin
16
16
  subject.find('1234')
17
17
  rescue Riiif::ImageNotFoundError => e
@@ -20,14 +20,14 @@ describe Riiif::HTTPFileResolver do
20
20
  expect(e.original_exception).to be_an OpenURI::HTTPError
21
21
  end
22
22
 
23
- context "when basic authentication credentials are set" do
24
- let(:credentials) { ['username', 's0s3kr3t'] }
23
+ context 'when basic authentication credentials are set' do
24
+ let(:credentials) { %w(username s0s3kr3t) }
25
25
  before do
26
26
  subject.basic_auth_credentials = credentials
27
27
  end
28
28
 
29
- it "should use basic auth credentials" do
30
- expect(Kernel).to receive(:open).with("1234", { http_basic_authentication: credentials })
29
+ it 'uses basic auth credentials' do
30
+ expect(Kernel).to receive(:open).with('1234', http_basic_authentication: credentials)
31
31
  subject.find('1234')
32
32
  end
33
33
  end
@@ -3,149 +3,149 @@ require 'spec_helper'
3
3
  describe Riiif::Image do
4
4
  before { Rails.cache.clear }
5
5
  let(:filename) { File.expand_path('spec/samples/world.jp2') }
6
- subject { Riiif::Image.new('world') }
7
- describe "happy path" do
6
+ subject { described_class.new('world') }
7
+ describe 'happy path' do
8
8
  before do
9
9
  expect(subject.image).to receive(:execute).with("convert #{filename} jpg:-").and_return('imagedata')
10
10
  end
11
- it "should render" do
11
+ it 'renders' do
12
12
  expect(subject.render('size' => 'full', format: 'jpg')).to eq 'imagedata'
13
13
  end
14
14
  end
15
15
 
16
- it "should be able to override the file used for the Image" do
17
- img = Riiif::Image.new('some_id', Riiif::File.new(filename))
16
+ it 'is able to override the file used for the Image' do
17
+ img = described_class.new('some_id', Riiif::File.new(filename))
18
18
  expect(img.id).to eq 'some_id'
19
19
  expect(img.info).to eq height: 400, width: 800
20
20
  end
21
21
 
22
- describe "without a format" do
23
- it "should raise an error" do
22
+ describe 'without a format' do
23
+ it 'raises an error' do
24
24
  expect { subject.render('size' => 'full') }.to raise_error ArgumentError
25
25
  end
26
26
  end
27
27
 
28
- describe "info" do
29
- it "should return the data" do
30
- expect(subject.info).to eq height: 400, width:800
28
+ describe 'info' do
29
+ it 'returns the data' do
30
+ expect(subject.info).to eq height: 400, width: 800
31
31
  end
32
32
  end
33
33
 
34
- context "using HTTPFileResolver" do
34
+ context 'using HTTPFileResolver' do
35
35
  before do
36
- Riiif::Image.file_resolver = Riiif::HTTPFileResolver.new
37
- Riiif::Image.file_resolver.id_to_uri = lambda do |id|
36
+ described_class.file_resolver = Riiif::HTTPFileResolver.new
37
+ described_class.file_resolver.id_to_uri = lambda do |id|
38
38
  "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/#{id}.jpg/600px-#{id}.jpg"
39
39
  end
40
40
  end
41
41
  after do
42
- Riiif::Image.file_resolver = Riiif::FileSystemFileResolver.new
42
+ described_class.file_resolver = Riiif::FileSystemFileResolver.new
43
43
  end
44
44
 
45
- describe "get info" do
46
- subject { Riiif::Image.new('Cave_26,_Ajanta') }
47
- it "should be easy" do
48
- expect(subject.info).to eq height: 390, width:600
45
+ describe 'get info' do
46
+ subject { described_class.new('Cave_26,_Ajanta') }
47
+ it 'is easy' do
48
+ expect(subject.info).to eq height: 390, width: 600
49
49
  end
50
50
  end
51
51
 
52
- context "when the rendered image is in the cache" do
53
- subject { Riiif::Image.new('Cave_26,_Ajanta') }
52
+ context 'when the rendered image is in the cache' do
53
+ subject { described_class.new('Cave_26,_Ajanta') }
54
54
  before { allow(Rails.cache).to receive(:fetch).and_return('expected') }
55
55
 
56
- it "should not fetch the file" do
57
- expect(Riiif::Image.file_resolver).not_to receive(:find)
56
+ it 'does not fetch the file' do
57
+ expect(described_class.file_resolver).not_to receive(:find)
58
58
  expect(subject.render(region: 'full', format: 'png')).to eq 'expected'
59
59
  end
60
60
  end
61
61
  end
62
62
 
63
- describe "mogrify" do
64
- describe "region" do
65
- it "should return the original when specifing full size" do
63
+ describe 'mogrify' do
64
+ describe 'region' do
65
+ it 'returns the original when specifing full size' do
66
66
  expect(subject.image).to receive(:execute).with("convert #{filename} png:-")
67
67
  subject.render(region: 'full', format: 'png')
68
68
  end
69
- it "should handle absolute geometry" do
69
+ it 'handles absolute geometry' do
70
70
  expect(subject.image).to receive(:execute).with("convert -crop 60x75+80+15 #{filename} png:-")
71
71
  subject.render(region: '80,15,60,75', format: 'png')
72
72
  end
73
- it "should handle percent geometry" do
73
+ it 'handles percent geometry' do
74
74
  expect(subject.image).to receive(:execute).with("identify -format %hx%w #{filename}").and_return('131x175')
75
75
  expect(subject.image).to receive(:execute).with("convert -crop 80%x70+18+13 #{filename} png:-")
76
76
  subject.render(region: 'pct:10,10,80,70', format: 'png')
77
77
  end
78
- it "should raise an error for invalid geometry" do
78
+ it 'raises an error for invalid geometry' do
79
79
  expect { subject.render(region: '150x75', format: 'png') }.to raise_error Riiif::InvalidAttributeError
80
80
  end
81
81
  end
82
82
 
83
- describe "resize" do
84
- it "should return the original when specifing full size" do
83
+ describe 'resize' do
84
+ it 'returns the original when specifing full size' do
85
85
  expect(subject.image).to receive(:execute).with("convert #{filename} png:-")
86
86
  subject.render(size: 'full', format: 'png')
87
87
  end
88
- it "should handle integer percent sizes" do
88
+ it 'handles integer percent sizes' do
89
89
  expect(subject.image).to receive(:execute).with("convert -resize 50% #{filename} png:-")
90
90
  subject.render(size: 'pct:50', format: 'png')
91
91
  end
92
- it "should handle float percent sizes" do
92
+ it 'handles float percent sizes' do
93
93
  expect(subject.image).to receive(:execute).with("convert -resize 12.5% #{filename} png:-")
94
94
  subject.render(size: 'pct:12.5', format: 'png')
95
95
  end
96
- it "should handle w," do
96
+ it 'handles w,' do
97
97
  expect(subject.image).to receive(:execute).with("convert -resize 50 #{filename} png:-")
98
98
  subject.render(size: '50,', format: 'png')
99
99
  end
100
- it "should handle ,h" do
100
+ it 'handles ,h' do
101
101
  expect(subject.image).to receive(:execute).with("convert -resize x50 #{filename} png:-")
102
102
  subject.render(size: ',50', format: 'png')
103
103
  end
104
- it "should handle w,h" do
104
+ it 'handles w,h' do
105
105
  expect(subject.image).to receive(:execute).with("convert -resize 150x75! #{filename} png:-")
106
106
  subject.render(size: '150,75', format: 'png')
107
107
  end
108
- it "should handle bestfit (!w,h)" do
108
+ it 'handles bestfit (!w,h)' do
109
109
  expect(subject.image).to receive(:execute).with("convert -resize 150x75 #{filename} png:-")
110
110
  subject.render(size: '!150,75', format: 'png')
111
111
  end
112
- it "should raise an error for invalid size" do
112
+ it 'raises an error for invalid size' do
113
113
  expect { subject.render(size: '150x75', format: 'png') }.to raise_error Riiif::InvalidAttributeError
114
114
  end
115
115
  end
116
116
 
117
- describe "rotate" do
118
- it "should return the original when specifing full size" do
117
+ describe 'rotate' do
118
+ it 'returns the original when specifing full size' do
119
119
  expect(subject.image).to receive(:execute).with("convert #{filename} png:-")
120
120
  subject.render(rotation: '0', format: 'png')
121
121
  end
122
- it "should handle floats" do
122
+ it 'handles floats' do
123
123
  expect(subject.image).to receive(:execute).with("convert -virtual-pixel white +distort srt 22.5 #{filename} png:-")
124
124
  subject.render(rotation: '22.5', format: 'png')
125
125
  end
126
- it "should raise an error for invalid angle" do
126
+ it 'raises an error for invalid angle' do
127
127
  expect { subject.render(rotation: '150x', format: 'png') }.to raise_error Riiif::InvalidAttributeError
128
128
  end
129
129
  end
130
130
 
131
- describe "quality" do
132
- it "returns the original when specifing default" do
131
+ describe 'quality' do
132
+ it 'returns the original when specifing default' do
133
133
  expect(subject.image).to receive(:execute).with("convert #{filename} png:-")
134
134
  subject.render(quality: 'default', format: 'png')
135
135
  end
136
- it "should return the original when specifing color" do
136
+ it 'returns the original when specifing color' do
137
137
  expect(subject.image).to receive(:execute).with("convert #{filename} png:-")
138
138
  subject.render(quality: 'color', format: 'png')
139
139
  end
140
- it "should convert to grayscale" do
140
+ it 'converts to grayscale' do
141
141
  expect(subject.image).to receive(:execute).with("convert -colorspace Gray #{filename} png:-")
142
142
  subject.render(quality: 'grey', format: 'png')
143
143
  end
144
- it "should convert to bitonal" do
144
+ it 'converts to bitonal' do
145
145
  expect(subject.image).to receive(:execute).with("convert -colorspace Gray -type Bilevel #{filename} png:-")
146
146
  subject.render(quality: 'bitonal', format: 'png')
147
147
  end
148
- it "should raise an error for invalid angle" do
148
+ it 'raises an error for invalid angle' do
149
149
  expect { subject.render(rotation: '150x', format: 'png') }.to raise_error Riiif::InvalidAttributeError
150
150
  end
151
151
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "GET /abcd%2F1234", type: :request do
4
- it "redirects, without unescaping" do
5
- get "/images/abcd%2F1234"
6
- expect(response).to redirect_to ('/images/abcd%2F1234/info.json')
3
+ describe 'GET /abcd%2F1234', type: :request do
4
+ it 'redirects, without unescaping' do
5
+ get '/images/abcd%2F1234'
6
+ expect(response).to redirect_to '/images/abcd%2F1234/info.json'
7
7
  end
8
8
  end
@@ -1,58 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "routes" do
3
+ describe 'routes' do
4
4
  routes { Riiif::Engine.routes }
5
5
 
6
6
  describe 'for conversion' do
7
- it "routes GET /abcd1234/full/full/0/default.jpg" do
7
+ it 'routes GET /abcd1234/full/full/0/default.jpg' do
8
8
  expect(
9
- get: "/abcd1234/full/full/0/default.jpg"
10
- ).to route_to(controller: "riiif/images", id: 'abcd1234', action: "show",
11
- region: 'full', size: 'full', rotation: '0',
12
- quality: 'default', format: 'jpg', model: "riiif/image")
9
+ get: '/abcd1234/full/full/0/default.jpg'
10
+ ).to route_to(controller: 'riiif/images', id: 'abcd1234', action: 'show',
11
+ region: 'full', size: 'full', rotation: '0',
12
+ quality: 'default', format: 'jpg', model: 'riiif/image')
13
13
  end
14
14
 
15
- it "routes requests with floating point percent size" do
15
+ it 'routes requests with floating point percent size' do
16
16
  expect(
17
- get: "/abcd1234/full/pct:12.5/22.5/default.jpg"
18
- ).to route_to(controller: "riiif/images", id: 'abcd1234', action: "show",
17
+ get: '/abcd1234/full/pct:12.5/22.5/default.jpg'
18
+ ).to route_to(controller: 'riiif/images', id: 'abcd1234', action: 'show',
19
19
  region: 'full', size: 'pct:12.5', rotation: '22.5',
20
- quality: 'default', format: 'jpg', model: "riiif/image")
20
+ quality: 'default', format: 'jpg', model: 'riiif/image')
21
21
  end
22
- it "routes requests with pixel size" do
22
+ it 'routes requests with pixel size' do
23
23
  expect(
24
- get: "/abcd1234/full/100,50/22.5/default.jpg"
25
- ).to route_to(controller: "riiif/images", id: 'abcd1234', action: "show",
24
+ get: '/abcd1234/full/100,50/22.5/default.jpg'
25
+ ).to route_to(controller: 'riiif/images', id: 'abcd1234', action: 'show',
26
26
  region: 'full', size: '100,50', rotation: '22.5',
27
- quality: 'default', format: 'jpg', model: "riiif/image")
27
+ quality: 'default', format: 'jpg', model: 'riiif/image')
28
28
  end
29
- it "routes requests with dashes in the id" do
29
+ it 'routes requests with dashes in the id' do
30
30
  expect(
31
- get: "/abcd-1234-5678/full/full/0/default.jpg"
32
- ).to route_to(controller: "riiif/images", id: 'abcd-1234-5678', action: "show",
31
+ get: '/abcd-1234-5678/full/full/0/default.jpg'
32
+ ).to route_to(controller: 'riiif/images', id: 'abcd-1234-5678', action: 'show',
33
33
  region: 'full', size: 'full', rotation: '0',
34
- quality: 'default', format: 'jpg', model: "riiif/image")
34
+ quality: 'default', format: 'jpg', model: 'riiif/image')
35
35
  end
36
36
 
37
- describe "route helper" do
38
- it "takes all the options" do
37
+ describe 'route helper' do
38
+ it 'takes all the options' do
39
39
  expect(image_path('abcd1234', region: 'full', size: '100,50', rotation: '22.5', quality: 'default',
40
- format: 'jpg')).to eq '/images/abcd1234/full/100,50/22.5/default.jpg'
40
+ format: 'jpg')).to eq '/images/abcd1234/full/100,50/22.5/default.jpg'
41
41
  end
42
- it "has defaults" do
42
+ it 'has defaults' do
43
43
  expect(image_path('abcd1234', size: '100,50')).to eq '/images/abcd1234/full/100,50/0/default.jpg'
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
- describe "for info" do
49
- it "routes GET /abcd1234/info.json" do
48
+ describe 'for info' do
49
+ it 'routes GET /abcd1234/info.json' do
50
50
  expect(
51
- get: "/abcd1234/info.json"
52
- ).to route_to(controller: "riiif/images", id: 'abcd1234',
53
- action: "info", format: 'json', model: "riiif/image")
51
+ get: '/abcd1234/info.json'
52
+ ).to route_to(controller: 'riiif/images', id: 'abcd1234',
53
+ action: 'info', format: 'json', model: 'riiif/image')
54
54
  end
55
- it "should have a route helper" do
55
+ it 'has a route helper' do
56
56
  expect(info_path('abcd1234')).to eq '/images/abcd1234/info.json'
57
57
  end
58
58
  end
data/spec/spec_helper.rb CHANGED
@@ -1,17 +1,14 @@
1
1
  require 'engine_cart'
2
- ENV["RAILS_ENV"] ||= 'test'
3
-
2
+ ENV['RAILS_ENV'] ||= 'test'
4
3
 
5
4
  EngineCart.load_application!
6
5
  require 'rspec/rails'
7
6
 
8
-
9
7
  RSpec.configure do |config|
10
8
  config.run_all_when_everything_filtered = true
11
9
 
12
10
  config.infer_spec_type_from_file_location!
13
11
 
14
-
15
12
  # Run specs in random order to surface order dependencies. If you find an
16
13
  # order dependency and want to debug it, you can fix the order by providing
17
14
  # the seed, which is printed after each run.
@@ -1,10 +1,9 @@
1
1
  require 'rails/generators'
2
2
 
3
3
  class TestAppGenerator < Rails::Generators::Base
4
- source_root "spec/test_app_templates"
4
+ source_root 'spec/test_app_templates'
5
5
 
6
6
  def add_routes
7
7
  route "mount Riiif::Engine => '/images', as: 'riiif'"
8
8
  end
9
-
10
9
  end