paperclip 4.1.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of paperclip might be problematic. Click here for more details.

Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -6
  3. data/.travis.yml +4 -13
  4. data/Appraisals +0 -10
  5. data/CONTRIBUTING.md +10 -5
  6. data/Gemfile +8 -4
  7. data/NEWS +1 -1
  8. data/README.md +51 -10
  9. data/Rakefile +6 -8
  10. data/features/basic_integration.feature +5 -5
  11. data/features/step_definitions/attachment_steps.rb +4 -4
  12. data/features/step_definitions/rails_steps.rb +4 -4
  13. data/features/step_definitions/web_steps.rb +2 -2
  14. data/features/support/env.rb +2 -2
  15. data/features/support/fixtures/gemfile.txt +1 -1
  16. data/features/support/rails.rb +2 -1
  17. data/gemfiles/3.2.gemfile +5 -3
  18. data/gemfiles/4.0.gemfile +5 -3
  19. data/gemfiles/4.1.gemfile +5 -3
  20. data/lib/generators/paperclip/paperclip_generator.rb +0 -2
  21. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +1 -1
  22. data/lib/paperclip.rb +4 -1
  23. data/lib/paperclip/attachment.rb +90 -29
  24. data/lib/paperclip/content_type_detector.rb +1 -1
  25. data/lib/paperclip/geometry_detector_factory.rb +3 -1
  26. data/lib/paperclip/has_attached_file.rb +2 -1
  27. data/lib/paperclip/interpolations.rb +8 -0
  28. data/lib/paperclip/io_adapters/abstract_adapter.rb +1 -1
  29. data/lib/paperclip/io_adapters/data_uri_adapter.rb +1 -1
  30. data/lib/paperclip/io_adapters/stringio_adapter.rb +5 -11
  31. data/lib/paperclip/locales/de.yml +18 -0
  32. data/lib/paperclip/locales/es.yml +18 -0
  33. data/lib/paperclip/matchers/have_attached_file_matcher.rb +2 -1
  34. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +2 -1
  35. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +2 -1
  36. data/lib/paperclip/media_type_spoof_detector.rb +10 -2
  37. data/lib/paperclip/storage/filesystem.rb +1 -1
  38. data/lib/paperclip/storage/s3.rb +26 -4
  39. data/lib/paperclip/style.rb +1 -1
  40. data/lib/paperclip/thumbnail.rb +6 -6
  41. data/lib/paperclip/validators.rb +5 -3
  42. data/lib/paperclip/validators/attachment_size_validator.rb +7 -3
  43. data/lib/paperclip/version.rb +1 -1
  44. data/lib/tasks/paperclip.rake +1 -2
  45. data/paperclip.gemspec +5 -3
  46. data/shoulda_macros/paperclip.rb +0 -1
  47. data/{test → spec}/database.yml +0 -0
  48. data/spec/paperclip/attachment_definitions_spec.rb +13 -0
  49. data/{test/attachment_processing_test.rb → spec/paperclip/attachment_processing_spec.rb} +20 -21
  50. data/{test/attachment_registry_test.rb → spec/paperclip/attachment_registry_spec.rb} +10 -11
  51. data/{test/attachment_test.rb → spec/paperclip/attachment_spec.rb} +367 -360
  52. data/{test/content_type_detector_test.rb → spec/paperclip/content_type_detector_spec.rb} +8 -8
  53. data/{test/file_command_content_type_detector_test.rb → spec/paperclip/file_command_content_type_detector_spec.rb} +5 -5
  54. data/spec/paperclip/filename_cleaner_spec.rb +14 -0
  55. data/spec/paperclip/geometry_detector_spec.rb +39 -0
  56. data/{test/geometry_parser_test.rb → spec/paperclip/geometry_parser_spec.rb} +27 -27
  57. data/{test/geometry_test.rb → spec/paperclip/geometry_spec.rb} +49 -51
  58. data/{test/has_attached_file_test.rb → spec/paperclip/has_attached_file_spec.rb} +18 -27
  59. data/{test/integration_test.rb → spec/paperclip/integration_spec.rb} +134 -126
  60. data/{test/interpolations_test.rb → spec/paperclip/interpolations_spec.rb} +54 -40
  61. data/{test/io_adapters/abstract_adapter_test.rb → spec/paperclip/io_adapters/abstract_adapter_spec.rb} +21 -10
  62. data/{test/io_adapters/attachment_adapter_test.rb → spec/paperclip/io_adapters/attachment_adapter_spec.rb} +27 -29
  63. data/{test/io_adapters/data_uri_adapter_test.rb → spec/paperclip/io_adapters/data_uri_adapter_spec.rb} +22 -18
  64. data/spec/paperclip/io_adapters/empty_string_adapter_spec.rb +17 -0
  65. data/{test/io_adapters/file_adapter_test.rb → spec/paperclip/io_adapters/file_adapter_spec.rb} +32 -28
  66. data/{test/io_adapters/http_url_proxy_adapter_test.rb → spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb} +22 -22
  67. data/spec/paperclip/io_adapters/identity_adapter_spec.rb +8 -0
  68. data/{test/io_adapters/nil_adapter_test.rb → spec/paperclip/io_adapters/nil_adapter_spec.rb} +7 -7
  69. data/{test/io_adapters/registry_test.rb → spec/paperclip/io_adapters/registry_spec.rb} +10 -7
  70. data/{test/io_adapters/stringio_adapter_test.rb → spec/paperclip/io_adapters/stringio_adapter_spec.rb} +16 -17
  71. data/{test/io_adapters/uploaded_file_adapter_test.rb → spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb} +41 -41
  72. data/{test/io_adapters/uri_adapter_test.rb → spec/paperclip/io_adapters/uri_adapter_spec.rb} +22 -22
  73. data/spec/paperclip/matchers/have_attached_file_matcher_spec.rb +19 -0
  74. data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +99 -0
  75. data/spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb +69 -0
  76. data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +88 -0
  77. data/{test/media_type_spoof_detector_test.rb → spec/paperclip/media_type_spoof_detector_spec.rb} +13 -8
  78. data/spec/paperclip/meta_class_spec.rb +30 -0
  79. data/spec/paperclip/paperclip_missing_attachment_styles_spec.rb +84 -0
  80. data/{test/paperclip_test.rb → spec/paperclip/paperclip_spec.rb} +47 -47
  81. data/{test/plural_cache_test.rb → spec/paperclip/plural_cache_spec.rb} +6 -6
  82. data/{test/processor_test.rb → spec/paperclip/processor_spec.rb} +5 -5
  83. data/{test/rake_test.rb → spec/paperclip/rake_spec.rb} +15 -15
  84. data/spec/paperclip/schema_spec.rb +206 -0
  85. data/{test/storage/filesystem_test.rb → spec/paperclip/storage/filesystem_spec.rb} +18 -18
  86. data/{test/storage/fog_test.rb → spec/paperclip/storage/fog_spec.rb} +145 -140
  87. data/spec/paperclip/storage/s3_live_spec.rb +182 -0
  88. data/spec/paperclip/storage/s3_spec.rb +1475 -0
  89. data/spec/paperclip/style_spec.rb +255 -0
  90. data/spec/paperclip/tempfile_factory_spec.rb +29 -0
  91. data/{test/thumbnail_test.rb → spec/paperclip/thumbnail_spec.rb} +107 -107
  92. data/{test/url_generator_test.rb → spec/paperclip/url_generator_spec.rb} +55 -56
  93. data/spec/paperclip/validators/attachment_content_type_validator_spec.rb +322 -0
  94. data/spec/paperclip/validators/attachment_file_name_validator_spec.rb +160 -0
  95. data/{test/validators/attachment_presence_validator_test.rb → spec/paperclip/validators/attachment_presence_validator_spec.rb} +19 -19
  96. data/{test/validators/attachment_size_validator_test.rb → spec/paperclip/validators/attachment_size_validator_spec.rb} +65 -58
  97. data/{test/validators/media_type_spoof_detection_validator_test.rb → spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb} +8 -8
  98. data/spec/paperclip/validators_spec.rb +164 -0
  99. data/spec/spec_helper.rb +40 -0
  100. data/spec/support/assertions.rb +71 -0
  101. data/spec/support/fake_model.rb +21 -0
  102. data/spec/support/fake_rails.rb +12 -0
  103. data/{test → spec/support}/fixtures/12k.png +0 -0
  104. data/{test → spec/support}/fixtures/50x50.png +0 -0
  105. data/{test → spec/support}/fixtures/5k.png +0 -0
  106. data/{test → spec/support}/fixtures/animated +0 -0
  107. data/{test → spec/support}/fixtures/animated.gif +0 -0
  108. data/{test → spec/support}/fixtures/animated.unknown +0 -0
  109. data/{test → spec/support}/fixtures/bad.png +0 -0
  110. data/{test → spec/support}/fixtures/empty.html +0 -0
  111. data/{test → spec/support}/fixtures/fog.yml +0 -0
  112. data/{test → spec/support}/fixtures/rotated.jpg +0 -0
  113. data/{test → spec/support}/fixtures/s3.yml +0 -0
  114. data/spec/support/fixtures/spaced file.jpg +0 -0
  115. data/test/fixtures/spaced file.png b/data/spec/support/fixtures/spaced → file.png +0 -0
  116. data/{test → spec/support}/fixtures/text.txt +0 -0
  117. data/{test → spec/support}/fixtures/twopage.pdf +0 -0
  118. data/{test → spec/support}/fixtures/uppercase.PNG +0 -0
  119. data/spec/support/matchers/accept.rb +5 -0
  120. data/spec/support/matchers/exist.rb +5 -0
  121. data/{test → spec}/support/mock_attachment.rb +0 -0
  122. data/{test → spec}/support/mock_interpolator.rb +0 -0
  123. data/{test → spec}/support/mock_model.rb +0 -0
  124. data/{test → spec}/support/mock_url_generator_builder.rb +0 -0
  125. data/spec/support/model_reconstruction.rb +60 -0
  126. data/spec/support/rails_helpers.rb +7 -0
  127. data/spec/support/test_data.rb +13 -0
  128. data/spec/support/version_helper.rb +9 -0
  129. metadata +256 -210
  130. data/gemfiles/3.0.gemfile +0 -11
  131. data/gemfiles/3.1.gemfile +0 -11
  132. data/test/attachment_definitions_test.rb +0 -13
  133. data/test/filename_cleaner_test.rb +0 -14
  134. data/test/generator_test.rb +0 -84
  135. data/test/geometry_detector_test.rb +0 -24
  136. data/test/helper.rb +0 -239
  137. data/test/io_adapters/empty_string_adapter_test.rb +0 -18
  138. data/test/io_adapters/identity_adapter_test.rb +0 -8
  139. data/test/matchers/have_attached_file_matcher_test.rb +0 -25
  140. data/test/matchers/validate_attachment_content_type_matcher_test.rb +0 -111
  141. data/test/matchers/validate_attachment_presence_matcher_test.rb +0 -70
  142. data/test/matchers/validate_attachment_size_matcher_test.rb +0 -87
  143. data/test/meta_class_test.rb +0 -32
  144. data/test/paperclip_missing_attachment_styles_test.rb +0 -90
  145. data/test/schema_test.rb +0 -206
  146. data/test/storage/s3_live_test.rb +0 -179
  147. data/test/storage/s3_test.rb +0 -1357
  148. data/test/style_test.rb +0 -251
  149. data/test/tempfile_factory_test.rb +0 -29
  150. data/test/validators/attachment_content_type_validator_test.rb +0 -324
  151. data/test/validators/attachment_file_name_validator_test.rb +0 -162
  152. data/test/validators_test.rb +0 -101
@@ -1,24 +1,24 @@
1
- require './test/helper'
1
+ require 'spec_helper'
2
2
 
3
- class ContentTypeDetectorTest < Test::Unit::TestCase
4
- should 'give a sensible default when the name is empty' do
3
+ describe Paperclip::ContentTypeDetector do
4
+ it 'gives a sensible default when the name is empty' do
5
5
  assert_equal "application/octet-stream", Paperclip::ContentTypeDetector.new("").detect
6
6
  end
7
7
 
8
- should 'return the empty content type when the file is empty' do
8
+ it 'returns the empty content type when the file is empty' do
9
9
  tempfile = Tempfile.new("empty")
10
10
  assert_equal "inode/x-empty", Paperclip::ContentTypeDetector.new(tempfile.path).detect
11
11
  tempfile.close
12
12
  end
13
13
 
14
- should 'return content type of file if it is an acceptable type' do
14
+ it 'returns content type of file if it is an acceptable type' do
15
15
  MIME::Types.stubs(:type_for).returns([MIME::Type.new('application/mp4'), MIME::Type.new('video/mp4'), MIME::Type.new('audio/mp4')])
16
16
  Paperclip.stubs(:run).returns("video/mp4")
17
17
  @filename = "my_file.mp4"
18
18
  assert_equal "video/mp4", Paperclip::ContentTypeDetector.new(@filename).detect
19
19
  end
20
20
 
21
- should 'find the right type in the list via the file command' do
21
+ it 'finds the right type in the list via the file command' do
22
22
  @filename = "#{Dir.tmpdir}/something.hahalolnotreal"
23
23
  File.open(@filename, "w+") do |file|
24
24
  file.puts "This is a text file."
@@ -28,12 +28,12 @@ class ContentTypeDetectorTest < Test::Unit::TestCase
28
28
  FileUtils.rm @filename
29
29
  end
30
30
 
31
- should 'return a sensible default if something is wrong, like the file is gone' do
31
+ it 'returns a sensible default if something is wrong, like the file is gone' do
32
32
  @filename = "/path/to/nothing"
33
33
  assert_equal "application/octet-stream", Paperclip::ContentTypeDetector.new(@filename).detect
34
34
  end
35
35
 
36
- should 'return a sensible default when the file command is missing' do
36
+ it 'returns a sensible default when the file command is missing' do
37
37
  Paperclip.stubs(:run).raises(Cocaine::CommandLineError.new)
38
38
  @filename = "/path/to/something"
39
39
  assert_equal "application/octet-stream", Paperclip::ContentTypeDetector.new(@filename).detect
@@ -1,7 +1,7 @@
1
- require './test/helper'
1
+ require 'spec_helper'
2
2
 
3
- class FileCommandContentTypeDetectorTest < Test::Unit::TestCase
4
- should 'return a content type based on the content of the file' do
3
+ describe Paperclip::FileCommandContentTypeDetector do
4
+ it 'returns a content type based on the content of the file' do
5
5
  tempfile = Tempfile.new("something")
6
6
  tempfile.write("This is a file.")
7
7
  tempfile.rewind
@@ -11,14 +11,14 @@ class FileCommandContentTypeDetectorTest < Test::Unit::TestCase
11
11
  tempfile.close
12
12
  end
13
13
 
14
- should 'return a sensible default when the file command is missing' do
14
+ it 'returns a sensible default when the file command is missing' do
15
15
  Paperclip.stubs(:run).raises(Cocaine::CommandLineError.new)
16
16
  @filename = "/path/to/something"
17
17
  assert_equal "application/octet-stream",
18
18
  Paperclip::FileCommandContentTypeDetector.new(@filename).detect
19
19
  end
20
20
 
21
- should 'return a sensible default on the odd chance that run returns nil' do
21
+ it 'returns a sensible default on the odd chance that run returns nil' do
22
22
  Paperclip.stubs(:run).returns(nil)
23
23
  assert_equal "application/octet-stream",
24
24
  Paperclip::FileCommandContentTypeDetector.new("windows").detect
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Paperclip::FilenameCleaner do
5
+ it 'converts invalid characters to underscores' do
6
+ cleaner = Paperclip::FilenameCleaner.new(/[aeiou]/)
7
+ expect(cleaner.call("baseball")).to eq "b_s_b_ll"
8
+ end
9
+
10
+ it 'does not convert anything if the character regex is nil' do
11
+ cleaner = Paperclip::FilenameCleaner.new(nil)
12
+ expect(cleaner.call("baseball")).to eq "baseball"
13
+ end
14
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Paperclip::GeometryDetector do
4
+ it 'identifies an image and extract its dimensions' do
5
+ Paperclip::GeometryParser.stubs(:new).with("434x66,").returns(stub(make: :correct))
6
+ file = fixture_file("5k.png")
7
+ factory = Paperclip::GeometryDetector.new(file)
8
+
9
+ output = factory.make
10
+
11
+ expect(output).to eq :correct
12
+ end
13
+
14
+ it 'identifies an image and extract its dimensions and orientation' do
15
+ Paperclip::GeometryParser.stubs(:new).with("300x200,6").returns(stub(make: :correct))
16
+ file = fixture_file("rotated.jpg")
17
+ factory = Paperclip::GeometryDetector.new(file)
18
+
19
+ output = factory.make
20
+
21
+ expect(output).to eq :correct
22
+ end
23
+
24
+ it 'avoids reading EXIF orientation if so configured' do
25
+ begin
26
+ Paperclip.options[:use_exif_orientation] = false
27
+ Paperclip::GeometryParser.stubs(:new).with("300x200,1").returns(stub(make: :correct))
28
+ file = fixture_file("rotated.jpg")
29
+ factory = Paperclip::GeometryDetector.new(file)
30
+
31
+ output = factory.make
32
+
33
+ expect(output).to eq :correct
34
+ ensure
35
+ Paperclip.options[:use_exif_orientation] = true
36
+ end
37
+ end
38
+ end
39
+
@@ -1,12 +1,12 @@
1
- require './test/helper'
1
+ require 'spec_helper'
2
2
 
3
- class GeometryParserTest < Test::Unit::TestCase
4
- should 'identify an image and extract its dimensions with no orientation' do
3
+ describe Paperclip::GeometryParser do
4
+ it 'identifies an image and extract its dimensions with no orientation' do
5
5
  Paperclip::Geometry.stubs(:new).with(
6
- :height => '73',
7
- :width => '434',
8
- :modifier => nil,
9
- :orientation => nil
6
+ height: '73',
7
+ width: '434',
8
+ modifier: nil,
9
+ orientation: nil
10
10
  ).returns(:correct)
11
11
  factory = Paperclip::GeometryParser.new("434x73")
12
12
 
@@ -15,12 +15,12 @@ class GeometryParserTest < Test::Unit::TestCase
15
15
  assert_equal :correct, output
16
16
  end
17
17
 
18
- should 'identify an image and extract its dimensions with an empty orientation' do
18
+ it 'identifies an image and extract its dimensions with an empty orientation' do
19
19
  Paperclip::Geometry.stubs(:new).with(
20
- :height => '73',
21
- :width => '434',
22
- :modifier => nil,
23
- :orientation => ''
20
+ height: '73',
21
+ width: '434',
22
+ modifier: nil,
23
+ orientation: ''
24
24
  ).returns(:correct)
25
25
  factory = Paperclip::GeometryParser.new("434x73,")
26
26
 
@@ -29,12 +29,12 @@ class GeometryParserTest < Test::Unit::TestCase
29
29
  assert_equal :correct, output
30
30
  end
31
31
 
32
- should 'identify an image and extract its dimensions and orientation' do
32
+ it 'identifies an image and extract its dimensions and orientation' do
33
33
  Paperclip::Geometry.stubs(:new).with(
34
- :height => '200',
35
- :width => '300',
36
- :modifier => nil,
37
- :orientation => '6'
34
+ height: '200',
35
+ width: '300',
36
+ modifier: nil,
37
+ orientation: '6'
38
38
  ).returns(:correct)
39
39
  factory = Paperclip::GeometryParser.new("300x200,6")
40
40
 
@@ -43,12 +43,12 @@ class GeometryParserTest < Test::Unit::TestCase
43
43
  assert_equal :correct, output
44
44
  end
45
45
 
46
- should 'identify an image and extract its dimensions and modifier' do
46
+ it 'identifies an image and extract its dimensions and modifier' do
47
47
  Paperclip::Geometry.stubs(:new).with(
48
- :height => '64',
49
- :width => '64',
50
- :modifier => '#',
51
- :orientation => nil
48
+ height: '64',
49
+ width: '64',
50
+ modifier: '#',
51
+ orientation: nil
52
52
  ).returns(:correct)
53
53
  factory = Paperclip::GeometryParser.new("64x64#")
54
54
 
@@ -57,12 +57,12 @@ class GeometryParserTest < Test::Unit::TestCase
57
57
  assert_equal :correct, output
58
58
  end
59
59
 
60
- should 'identify an image and extract its dimensions, orientation, and modifier' do
60
+ it 'identifies an image and extract its dimensions, orientation, and modifier' do
61
61
  Paperclip::Geometry.stubs(:new).with(
62
- :height => '50',
63
- :width => '100',
64
- :modifier => '>',
65
- :orientation => '7'
62
+ height: '50',
63
+ width: '100',
64
+ modifier: '>',
65
+ orientation: '7'
66
66
  ).returns(:correct)
67
67
  factory = Paperclip::GeometryParser.new("100x50,7>")
68
68
 
@@ -1,56 +1,56 @@
1
- require './test/helper'
1
+ require 'spec_helper'
2
2
 
3
- class GeometryTest < Test::Unit::TestCase
3
+ describe Paperclip::Geometry do
4
4
  context "Paperclip::Geometry" do
5
- should "correctly report its given dimensions" do
5
+ it "correctly reports its given dimensions" do
6
6
  assert @geo = Paperclip::Geometry.new(1024, 768)
7
7
  assert_equal 1024, @geo.width
8
8
  assert_equal 768, @geo.height
9
9
  end
10
10
 
11
- should "set height to 0 if height dimension is missing" do
11
+ it "sets height to 0 if height dimension is missing" do
12
12
  assert @geo = Paperclip::Geometry.new(1024)
13
13
  assert_equal 1024, @geo.width
14
14
  assert_equal 0, @geo.height
15
15
  end
16
16
 
17
- should "set width to 0 if width dimension is missing" do
17
+ it "sets width to 0 if width dimension is missing" do
18
18
  assert @geo = Paperclip::Geometry.new(nil, 768)
19
19
  assert_equal 0, @geo.width
20
20
  assert_equal 768, @geo.height
21
21
  end
22
22
 
23
- should "be generated from a WxH-formatted string" do
23
+ it "is generated from a WxH-formatted string" do
24
24
  assert @geo = Paperclip::Geometry.parse("800x600")
25
25
  assert_equal 800, @geo.width
26
26
  assert_equal 600, @geo.height
27
27
  end
28
28
 
29
- should "be generated from a xH-formatted string" do
29
+ it "is generated from a xH-formatted string" do
30
30
  assert @geo = Paperclip::Geometry.parse("x600")
31
31
  assert_equal 0, @geo.width
32
32
  assert_equal 600, @geo.height
33
33
  end
34
34
 
35
- should "be generated from a Wx-formatted string" do
35
+ it "is generated from a Wx-formatted string" do
36
36
  assert @geo = Paperclip::Geometry.parse("800x")
37
37
  assert_equal 800, @geo.width
38
38
  assert_equal 0, @geo.height
39
39
  end
40
40
 
41
- should "be generated from a W-formatted string" do
41
+ it "is generated from a W-formatted string" do
42
42
  assert @geo = Paperclip::Geometry.parse("800")
43
43
  assert_equal 800, @geo.width
44
44
  assert_equal 0, @geo.height
45
45
  end
46
46
 
47
- should "ensure the modifier is nil if not present" do
47
+ it "ensures the modifier is nil if not present" do
48
48
  assert @geo = Paperclip::Geometry.parse("123x456")
49
49
  assert_nil @geo.modifier
50
50
  end
51
51
 
52
- should "recognize an EXIF orientation and not rotate with auto_orient if not necessary" do
53
- geo = Paperclip::Geometry.new(:width => 1024, :height => 768, :orientation => 1)
52
+ it "recognizes an EXIF orientation and not rotate with auto_orient if not necessary" do
53
+ geo = Paperclip::Geometry.new(width: 1024, height: 768, orientation: 1)
54
54
  assert geo
55
55
  assert_equal 1024, geo.width
56
56
  assert_equal 768, geo.height
@@ -61,8 +61,8 @@ class GeometryTest < Test::Unit::TestCase
61
61
  assert_equal 768, geo.height
62
62
  end
63
63
 
64
- should "recognize an EXIF orientation and rotate with auto_orient if necessary" do
65
- geo = Paperclip::Geometry.new(:width => 1024, :height => 768, :orientation => 6)
64
+ it "recognizes an EXIF orientation and rotate with auto_orient if necessary" do
65
+ geo = Paperclip::Geometry.new(width: 1024, height: 768, orientation: 6)
66
66
  assert geo
67
67
  assert_equal 1024, geo.width
68
68
  assert_equal 768, geo.height
@@ -73,7 +73,7 @@ class GeometryTest < Test::Unit::TestCase
73
73
  assert_equal 1024, geo.height
74
74
  end
75
75
 
76
- should "treat x and X the same in geometries" do
76
+ it "treats x and X the same in geometries" do
77
77
  @lower = Paperclip::Geometry.parse("123x456")
78
78
  @upper = Paperclip::Geometry.parse("123X456")
79
79
  assert_equal 123, @lower.width
@@ -83,48 +83,46 @@ class GeometryTest < Test::Unit::TestCase
83
83
  end
84
84
 
85
85
  ['>', '<', '#', '@', '%', '^', '!', nil].each do |mod|
86
- should "ensure the modifier #{mod.inspect} is preserved" do
86
+ it "ensures the modifier #{description} is preserved" do
87
87
  assert @geo = Paperclip::Geometry.parse("123x456#{mod}")
88
88
  assert_equal mod, @geo.modifier
89
89
  assert_equal "123x456#{mod}", @geo.to_s
90
90
  end
91
- end
92
91
 
93
- ['>', '<', '#', '@', '%', '^', '!', nil].each do |mod|
94
- should "ensure the modifier #{mod.inspect} is preserved with no height" do
92
+ it "ensures the modifier #{description} is preserved with no height" do
95
93
  assert @geo = Paperclip::Geometry.parse("123x#{mod}")
96
94
  assert_equal mod, @geo.modifier
97
95
  assert_equal "123#{mod}", @geo.to_s
98
96
  end
99
97
  end
100
98
 
101
- should "make sure the modifier gets passed during transformation_to" do
99
+ it "makes sure the modifier gets passed during transformation_to" do
102
100
  assert @src = Paperclip::Geometry.parse("123x456")
103
101
  assert @dst = Paperclip::Geometry.parse("123x456>")
104
102
  assert_equal ["123x456>", nil], @src.transformation_to(@dst)
105
103
  end
106
104
 
107
- should "generate correct ImageMagick formatting string for W-formatted string" do
105
+ it "generates correct ImageMagick formatting string for W-formatted string" do
108
106
  assert @geo = Paperclip::Geometry.parse("800")
109
107
  assert_equal "800", @geo.to_s
110
108
  end
111
109
 
112
- should "generate correct ImageMagick formatting string for Wx-formatted string" do
110
+ it "generates correct ImageMagick formatting string for Wx-formatted string" do
113
111
  assert @geo = Paperclip::Geometry.parse("800x")
114
112
  assert_equal "800", @geo.to_s
115
113
  end
116
114
 
117
- should "generate correct ImageMagick formatting string for xH-formatted string" do
115
+ it "generates correct ImageMagick formatting string for xH-formatted string" do
118
116
  assert @geo = Paperclip::Geometry.parse("x600")
119
117
  assert_equal "x600", @geo.to_s
120
118
  end
121
119
 
122
- should "generate correct ImageMagick formatting string for WxH-formatted string" do
120
+ it "generates correct ImageMagick formatting string for WxH-formatted string" do
123
121
  assert @geo = Paperclip::Geometry.parse("800x600")
124
122
  assert_equal "800x600", @geo.to_s
125
123
  end
126
124
 
127
- should "be generated from a file" do
125
+ it "is generated from a file" do
128
126
  file = fixture_file("5k.png")
129
127
  file = File.new(file, 'rb')
130
128
  assert_nothing_raised{ @geo = Paperclip::Geometry.from_file(file) }
@@ -132,14 +130,14 @@ class GeometryTest < Test::Unit::TestCase
132
130
  assert_equal 434, @geo.width
133
131
  end
134
132
 
135
- should "be generated from a file path" do
133
+ it "is generated from a file path" do
136
134
  file = fixture_file("5k.png")
137
135
  assert_nothing_raised{ @geo = Paperclip::Geometry.from_file(file) }
138
136
  assert_equal 66, @geo.height
139
137
  assert_equal 434, @geo.width
140
138
  end
141
139
 
142
- should 'calculate an EXIF-rotated image dimensions from a path' do
140
+ it 'calculates an EXIF-rotated image dimensions from a path' do
143
141
  file = fixture_file("rotated.jpg")
144
142
  assert_nothing_raised{ @geo = Paperclip::Geometry.from_file(file) }
145
143
  @geo.auto_orient
@@ -147,28 +145,28 @@ class GeometryTest < Test::Unit::TestCase
147
145
  assert_equal 200, @geo.width
148
146
  end
149
147
 
150
- should "not generate from a bad file" do
148
+ it "does not generate from a bad file" do
151
149
  file = "/home/This File Does Not Exist.omg"
152
- assert_raise(Paperclip::Errors::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) }
150
+ expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
153
151
  end
154
152
 
155
- should "not generate from a blank filename" do
153
+ it "does not generate from a blank filename" do
156
154
  file = ""
157
- assert_raise(Paperclip::Errors::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) }
155
+ expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
158
156
  end
159
157
 
160
- should "not generate from a nil file" do
158
+ it "does not generate from a nil file" do
161
159
  file = nil
162
- assert_raise(Paperclip::Errors::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) }
160
+ expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
163
161
  end
164
162
 
165
- should "not generate from a file with no path" do
166
- file = mock("file", :path => "")
163
+ it "does not generate from a file with no path" do
164
+ file = mock("file", path: "")
167
165
  file.stubs(:respond_to?).with(:path).returns(true)
168
- assert_raise(Paperclip::Errors::NotIdentifiedByImageMagickError){ @geo = Paperclip::Geometry.from_file(file) }
166
+ expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
169
167
  end
170
168
 
171
- should "let us know when a command isn't found versus a processing error" do
169
+ it "lets us know when a command isn't found versus a processing error" do
172
170
  old_path = ENV['PATH']
173
171
  begin
174
172
  ENV['PATH'] = ''
@@ -185,32 +183,32 @@ class GeometryTest < Test::Unit::TestCase
185
183
  ['horizontal', 1024, 768, false, true, false, 1024, 768, 1.3333],
186
184
  ['square', 100, 100, false, false, true, 100, 100, 1]].each do |args|
187
185
  context "performing calculations on a #{args[0]} viewport" do
188
- setup do
186
+ before do
189
187
  @geo = Paperclip::Geometry.new(args[1], args[2])
190
188
  end
191
189
 
192
- should "#{args[3] ? "" : "not"} be vertical" do
190
+ it "is #{args[3] ? "" : "not"} vertical" do
193
191
  assert_equal args[3], @geo.vertical?
194
192
  end
195
193
 
196
- should "#{args[4] ? "" : "not"} be horizontal" do
194
+ it "is #{args[4] ? "" : "not"} horizontal" do
197
195
  assert_equal args[4], @geo.horizontal?
198
196
  end
199
197
 
200
- should "#{args[5] ? "" : "not"} be square" do
198
+ it "is #{args[5] ? "" : "not"} square" do
201
199
  assert_equal args[5], @geo.square?
202
200
  end
203
201
 
204
- should "report that #{args[6]} is the larger dimension" do
202
+ it "reports that #{args[6]} is the larger dimension" do
205
203
  assert_equal args[6], @geo.larger
206
204
  end
207
205
 
208
- should "report that #{args[7]} is the smaller dimension" do
206
+ it "reports that #{args[7]} is the smaller dimension" do
209
207
  assert_equal args[7], @geo.smaller
210
208
  end
211
209
 
212
- should "have an aspect ratio of #{args[8]}" do
213
- assert_in_delta args[8], @geo.aspect, 0.0001
210
+ it "has an aspect ratio of #{args[8]}" do
211
+ expect(@geo.aspect).to be_within(0.0001).of(args[8])
214
212
  end
215
213
  end
216
214
  end
@@ -219,17 +217,17 @@ class GeometryTest < Test::Unit::TestCase
219
217
  [ [100, 1000], [50, 950], "x950", "50x950+22+0" ],
220
218
  [ [100, 1000], [50, 25], "50x", "50x25+0+237" ]]. each do |args|
221
219
  context "of #{args[0].inspect} and given a Geometry #{args[1].inspect} and sent transform_to" do
222
- setup do
220
+ before do
223
221
  @geo = Paperclip::Geometry.new(*args[0])
224
222
  @dst = Paperclip::Geometry.new(*args[1])
225
223
  @scale, @crop = @geo.transformation_to @dst, true
226
224
  end
227
225
 
228
- should "be able to return the correct scaling transformation geometry #{args[2]}" do
226
+ it "is able to return the correct scaling transformation geometry #{args[2]}" do
229
227
  assert_equal args[2], @scale
230
228
  end
231
229
 
232
- should "be able to return the correct crop transformation geometry #{args[3]}" do
230
+ it "is able to return the correct crop transformation geometry #{args[3]}" do
233
231
  assert_equal args[3], @crop
234
232
  end
235
233
  end
@@ -240,14 +238,14 @@ class GeometryTest < Test::Unit::TestCase
240
238
  ['600x400', {'512x512!' => [512, 512], '512x512#' => [512, 512], '512x512>' => [512, 341], '512x512<' => [600, 400], '512x512' => [512, 341]}]].each do |original_size, options|
241
239
  options.each_pair do |size, dimensions|
242
240
  context "#{original_size} resize_to #{size}" do
243
- setup do
241
+ before do
244
242
  @source = Paperclip::Geometry.parse original_size
245
243
  @new_geometry = @source.resize_to size
246
244
  end
247
- should "have #{dimensions.first} width" do
245
+ it "has #{dimensions.first} width" do
248
246
  assert_equal dimensions.first, @new_geometry.width
249
247
  end
250
- should "have #{dimensions.last} height" do
248
+ it "has #{dimensions.last} height" do
251
249
  assert_equal dimensions.last, @new_geometry.height
252
250
  end
253
251
  end