roadie 3.0.0.pre1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Changelog.md +22 -1
  4. data/Gemfile +0 -4
  5. data/Guardfile +3 -2
  6. data/README.md +6 -4
  7. data/lib/roadie.rb +3 -1
  8. data/lib/roadie/filesystem_provider.rb +13 -2
  9. data/lib/roadie/inliner.rb +10 -8
  10. data/lib/roadie/markup_improver.rb +1 -1
  11. data/lib/roadie/provider_list.rb +5 -1
  12. data/lib/roadie/rspec/asset_provider.rb +9 -9
  13. data/lib/roadie/selector.rb +1 -0
  14. data/lib/roadie/style_attribute_builder.rb +25 -0
  15. data/lib/roadie/style_block.rb +0 -1
  16. data/lib/roadie/upgrade_guide.rb +36 -0
  17. data/lib/roadie/version.rb +1 -1
  18. data/roadie.gemspec +2 -1
  19. data/spec/integration_spec.rb +15 -15
  20. data/spec/lib/roadie/asset_scanner_spec.rb +27 -27
  21. data/spec/lib/roadie/css_not_found_spec.rb +4 -3
  22. data/spec/lib/roadie/document_spec.rb +19 -19
  23. data/spec/lib/roadie/filesystem_provider_spec.rb +29 -6
  24. data/spec/lib/roadie/inliner_spec.rb +18 -18
  25. data/spec/lib/roadie/markup_improver_spec.rb +17 -17
  26. data/spec/lib/roadie/null_provider_spec.rb +4 -4
  27. data/spec/lib/roadie/provider_list_spec.rb +23 -15
  28. data/spec/lib/roadie/selector_spec.rb +16 -13
  29. data/spec/lib/roadie/style_attribute_builder_spec.rb +29 -0
  30. data/spec/lib/roadie/style_block_spec.rb +6 -6
  31. data/spec/lib/roadie/style_property_spec.rb +22 -22
  32. data/spec/lib/roadie/stylesheet_spec.rb +8 -8
  33. data/spec/lib/roadie/test_provider_spec.rb +5 -5
  34. data/spec/lib/roadie/url_generator_spec.rb +21 -20
  35. data/spec/lib/roadie/url_rewriter_spec.rb +7 -7
  36. data/spec/shared_examples/asset_provider.rb +4 -4
  37. data/spec/shared_examples/url_rewriter.rb +6 -6
  38. data/spec/spec_helper.rb +2 -1
  39. data/spec/support/have_attribute_matcher.rb +2 -2
  40. data/spec/support/have_node_matcher.rb +2 -2
  41. data/spec/support/have_selector_matcher.rb +2 -2
  42. data/spec/support/have_styling_matcher.rb +7 -5
  43. metadata +36 -21
  44. data/lib/roadie/style_properties.rb +0 -29
  45. data/spec/lib/roadie/style_properties_spec.rb +0 -61
@@ -7,10 +7,10 @@ module Roadie
7
7
  it_behaves_like "asset provider role"
8
8
 
9
9
  def expect_empty_stylesheet(stylesheet)
10
- stylesheet.should_not be_nil
11
- stylesheet.name.should == "(null)"
12
- stylesheet.should have(0).blocks
13
- stylesheet.to_s.should be_empty
10
+ expect(stylesheet).not_to be_nil
11
+ expect(stylesheet.name).to eq("(null)")
12
+ expect(stylesheet).to have(0).blocks
13
+ expect(stylesheet.to_s).to be_empty
14
14
  end
15
15
 
16
16
  it "finds an empty stylesheet for every name" do
@@ -16,19 +16,27 @@ module Roadie
16
16
  second = TestProvider.new "bar.css" => "bar { color: green; }"
17
17
  provider = ProviderList.new [first, second]
18
18
 
19
- provider.find_stylesheet("foo.css").to_s.should include "foo"
20
- provider.find_stylesheet("bar.css").to_s.should include "bar"
21
- provider.find_stylesheet("baz.css").should be_nil
19
+ expect(provider.find_stylesheet("foo.css").to_s).to include "foo"
20
+ expect(provider.find_stylesheet("bar.css").to_s).to include "bar"
21
+ expect(provider.find_stylesheet("baz.css")).to be_nil
22
22
  end
23
23
 
24
24
  it "is enumerable" do
25
- provider.should be_kind_of(Enumerable)
26
- provider.should respond_to(:each)
27
- provider.each.to_a.should == [test_provider]
25
+ expect(provider).to be_kind_of(Enumerable)
26
+ expect(provider).to respond_to(:each)
27
+ expect(provider.each.to_a).to eq([test_provider])
28
28
  end
29
29
 
30
30
  it "has a size" do
31
- provider.size.should == 1
31
+ expect(provider.size).to eq(1)
32
+ expect(provider).not_to be_empty
33
+ end
34
+
35
+ it "has a first and a last element" do
36
+ providers = [double("1"), double("2"), double("3")]
37
+ list = ProviderList.new(providers)
38
+ expect(list.first).to eq(providers.first)
39
+ expect(list.last).to eq(providers.last)
32
40
  end
33
41
 
34
42
  it "can have providers pushed and popped" do
@@ -40,7 +48,7 @@ module Roadie
40
48
  }.to change(provider, :size).by(2)
41
49
 
42
50
  expect {
43
- provider.pop.should == other
51
+ expect(provider.pop).to eq(other)
44
52
  }.to change(provider, :size).by(-1)
45
53
  end
46
54
 
@@ -52,29 +60,29 @@ module Roadie
52
60
  }.to change(provider, :size).by(1)
53
61
 
54
62
  expect {
55
- provider.shift.should == other
63
+ expect(provider.shift).to eq(other)
56
64
  }.to change(provider, :size).by(-1)
57
65
  end
58
66
 
59
67
  describe "wrapping" do
60
68
  it "creates provider lists with the arguments" do
61
- ProviderList.wrap(test_provider).should be_instance_of(ProviderList)
62
- ProviderList.wrap(test_provider, test_provider).size.should == 2
69
+ expect(ProviderList.wrap(test_provider)).to be_instance_of(ProviderList)
70
+ expect(ProviderList.wrap(test_provider, test_provider).size).to eq(2)
63
71
  end
64
72
 
65
73
  it "flattens arrays" do
66
- ProviderList.wrap([test_provider, test_provider], test_provider).size.should == 3
67
- ProviderList.wrap([test_provider, test_provider]).size.should == 2
74
+ expect(ProviderList.wrap([test_provider, test_provider], test_provider).size).to eq(3)
75
+ expect(ProviderList.wrap([test_provider, test_provider]).size).to eq(2)
68
76
  end
69
77
 
70
78
  it "combines with providers from other lists" do
71
79
  other_list = ProviderList.new([test_provider, test_provider])
72
- ProviderList.wrap(test_provider, other_list).size.should == 3
80
+ expect(ProviderList.wrap(test_provider, other_list).size).to eq(3)
73
81
  end
74
82
 
75
83
  it "returns the passed list if only a single ProviderList is passed" do
76
84
  other_list = ProviderList.new([test_provider])
77
- ProviderList.wrap(other_list).should eql other_list
85
+ expect(ProviderList.wrap(other_list)).to eql other_list
78
86
  end
79
87
  end
80
88
  end
@@ -4,11 +4,11 @@ require 'spec_helper'
4
4
  module Roadie
5
5
  describe Selector do
6
6
  it "can be coerced into String" do
7
- ("I love " + Selector.new("html")).should == "I love html"
7
+ expect("I love " + Selector.new("html")).to eq("I love html")
8
8
  end
9
9
 
10
10
  it "can be inlined when simple" do
11
- Selector.new("html body #main p.class").should be_inlinable
11
+ expect(Selector.new("html body #main p.class")).to be_inlinable
12
12
  end
13
13
 
14
14
  it "cannot be inlined when containing pseudo functions" do
@@ -19,42 +19,45 @@ module Roadie
19
19
  p:link
20
20
  p:target
21
21
  p:visited
22
- p:before
23
- p:after
24
22
  p:-ms-input-placeholder
25
23
  p:-moz-placeholder
24
+ p:before
25
+ p:after
26
+ p:enabled
27
+ p:disabled
28
+ p:checked
26
29
  ].each do |bad_selector|
27
- Selector.new(bad_selector).should_not be_inlinable
30
+ expect(Selector.new(bad_selector)).not_to be_inlinable
28
31
  end
29
32
 
30
- Selector.new('p.active').should be_inlinable
33
+ expect(Selector.new('p.active')).to be_inlinable
31
34
  end
32
35
 
33
36
  it "cannot be inlined when containing pseudo elements" do
34
- Selector.new('p::some-element').should_not be_inlinable
37
+ expect(Selector.new('p::some-element')).not_to be_inlinable
35
38
  end
36
39
 
37
40
  it "cannot be inlined when selector is an at-rule" do
38
- Selector.new('@keyframes progress-bar-stripes').should_not be_inlinable
41
+ expect(Selector.new('@keyframes progress-bar-stripes')).not_to be_inlinable
39
42
  end
40
43
 
41
44
  it "has a calculated specificity" do
42
45
  selector = "html p.active.nice #main.deep-selector"
43
- Selector.new(selector).specificity.should == CssParser.calculate_specificity(selector)
46
+ expect(Selector.new(selector).specificity).to eq(CssParser.calculate_specificity(selector))
44
47
  end
45
48
 
46
49
  it "can be told about the specificity at initialization" do
47
50
  selector = "html p.active.nice #main.deep-selector"
48
- Selector.new(selector, 1337).specificity.should == 1337
51
+ expect(Selector.new(selector, 1337).specificity).to eq(1337)
49
52
  end
50
53
 
51
54
  it "is equal to other selectors when they match the same things" do
52
- Selector.new("foo").should == Selector.new("foo ")
53
- Selector.new("foo").should_not == "foo"
55
+ expect(Selector.new("foo")).to eq(Selector.new("foo "))
56
+ expect(Selector.new("foo")).not_to eq("foo")
54
57
  end
55
58
 
56
59
  it "strips the given selector" do
57
- Selector.new(" foo \n").to_s.should == Selector.new("foo").to_s
60
+ expect(Selector.new(" foo \n").to_s).to eq(Selector.new("foo").to_s)
58
61
  end
59
62
  end
60
63
  end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ module Roadie
4
+ describe StyleAttributeBuilder do
5
+ it "sorts the added properties" do
6
+ builder = StyleAttributeBuilder.new
7
+
8
+ builder << StyleProperty.new("color", "green", true, 1)
9
+ builder << StyleProperty.new("font-size", "110%", false, 15)
10
+ builder << StyleProperty.new("color", "red", false, 15)
11
+
12
+ expect(builder.attribute_string).to eq "font-size:110%;color:red;color:green !important"
13
+ end
14
+
15
+ it "preserves the order of added attributes with the same specificity" do
16
+ builder = StyleAttributeBuilder.new
17
+
18
+ builder << StyleProperty.new("color", "pink", false, 50)
19
+ builder << StyleProperty.new("color", "red", false, 50)
20
+ builder << StyleProperty.new("color", "green", false, 50)
21
+
22
+ # We need one different element to trigger the problem with Ruby's
23
+ # unstable sort
24
+ builder << StyleProperty.new("background", "white", false, 1)
25
+
26
+ expect(builder.attribute_string).to eq "background:white;color:pink;color:red;color:green"
27
+ end
28
+ end
29
+ end
@@ -8,28 +8,28 @@ module Roadie
8
8
  selector = double "Selector"
9
9
 
10
10
  block = StyleBlock.new(selector, properties)
11
- block.selector.should == selector
12
- block.properties.should == properties
11
+ expect(block.selector).to eq(selector)
12
+ expect(block.properties).to eq(properties)
13
13
  end
14
14
 
15
15
  it "delegates #specificity to the selector" do
16
16
  selector = double "Selector", specificity: 45
17
- StyleBlock.new(selector, []).specificity.should == 45
17
+ expect(StyleBlock.new(selector, []).specificity).to eq(45)
18
18
  end
19
19
 
20
20
  it "delegates #inlinable? to the selector" do
21
21
  selector = double "Selector", inlinable?: "maybe"
22
- StyleBlock.new(selector, []).inlinable?.should == "maybe"
22
+ expect(StyleBlock.new(selector, []).inlinable?).to eq("maybe")
23
23
  end
24
24
 
25
25
  it "delegates #selector_string to selector#to_s" do
26
26
  selector = double "Selector", to_s: "yey"
27
- StyleBlock.new(selector, []).selector_string.should == "yey"
27
+ expect(StyleBlock.new(selector, []).selector_string).to eq("yey")
28
28
  end
29
29
 
30
30
  it "has a string representation" do
31
31
  properties = [double(to_s: "bar"), double(to_s: "baz")]
32
- StyleBlock.new(double(to_s: "foo"), properties).to_s.should == "foo{bar;baz}"
32
+ expect(StyleBlock.new(double(to_s: "foo"), properties).to_s).to eq("foo{bar;baz}")
33
33
  end
34
34
  end
35
35
  end
@@ -4,21 +4,21 @@ module Roadie
4
4
  describe StyleProperty do
5
5
  it "is initialized with a property, value, if it is marked as important, and the specificity" do
6
6
  StyleProperty.new('color', 'green', true, 45).tap do |declaration|
7
- declaration.property.should == 'color'
8
- declaration.value.should == 'green'
9
- declaration.should be_important
10
- declaration.specificity.should == 45
7
+ expect(declaration.property).to eq('color')
8
+ expect(declaration.value).to eq('green')
9
+ expect(declaration).to be_important
10
+ expect(declaration.specificity).to eq(45)
11
11
  end
12
12
  end
13
13
 
14
14
  describe "string representation" do
15
15
  it "is the property and the value joined with a colon" do
16
- StyleProperty.new('color', 'green', false, 1).to_s.should == 'color:green'
17
- StyleProperty.new('font-size', '1.1em', false, 1).to_s.should == 'font-size:1.1em'
16
+ expect(StyleProperty.new('color', 'green', false, 1).to_s).to eq('color:green')
17
+ expect(StyleProperty.new('font-size', '1.1em', false, 1).to_s).to eq('font-size:1.1em')
18
18
  end
19
19
 
20
20
  it "contains the !important flag when set" do
21
- StyleProperty.new('color', 'green', true, 1).to_s.should == 'color:green !important'
21
+ expect(StyleProperty.new('color', 'green', true, 1).to_s).to eq('color:green !important')
22
22
  end
23
23
  end
24
24
 
@@ -28,20 +28,20 @@ module Roadie
28
28
  end
29
29
 
30
30
  it "compares on specificity" do
31
- declaration(5).should be == declaration(5)
32
- declaration(4).should be < declaration(5)
33
- declaration(6).should be > declaration(5)
31
+ expect(declaration(5)).to eq(declaration(5))
32
+ expect(declaration(4)).to be < declaration(5)
33
+ expect(declaration(6)).to be > declaration(5)
34
34
  end
35
35
 
36
36
  context "with an important declaration" do
37
37
  it "is less than the important declaration regardless of the specificity" do
38
- declaration(99, false).should be < declaration(1, true)
38
+ expect(declaration(99, false)).to be < declaration(1, true)
39
39
  end
40
40
 
41
41
  it "compares like normal when both declarations are important" do
42
- declaration(5, true).should be == declaration(5, true)
43
- declaration(4, true).should be < declaration(5, true)
44
- declaration(6, true).should be > declaration(5, true)
42
+ expect(declaration(5, true)).to eq(declaration(5, true))
43
+ expect(declaration(4, true)).to be < declaration(5, true)
44
+ expect(declaration(6, true)).to be > declaration(5, true)
45
45
  end
46
46
  end
47
47
  end
@@ -53,23 +53,23 @@ module Roadie
53
53
  end
54
54
 
55
55
  it "understands simple declarations" do
56
- parsing("color: green", 1).should == ["color", "green", false, 1]
57
- parsing(" color:green; ", 1).should == ["color", "green", false, 1]
58
- parsing("color: green ", 1).should == ["color", "green", false, 1]
59
- parsing("color: green ; ", 1).should == ["color", "green", false, 1]
56
+ expect(parsing("color: green", 1)).to eq(["color", "green", false, 1])
57
+ expect(parsing(" color:green; ", 1)).to eq(["color", "green", false, 1])
58
+ expect(parsing("color: green ", 1)).to eq(["color", "green", false, 1])
59
+ expect(parsing("color: green ; ", 1)).to eq(["color", "green", false, 1])
60
60
  end
61
61
 
62
62
  it "understands more complex values" do
63
- parsing("padding:0 1px 5rem 9%;", 89).should == ["padding", "0 1px 5rem 9%", false, 89]
63
+ expect(parsing("padding:0 1px 5rem 9%;", 89)).to eq(["padding", "0 1px 5rem 9%", false, 89])
64
64
  end
65
65
 
66
66
  it "understands more complex names" do
67
- parsing("font-size: 50%", 10).should == ["font-size", "50%", false, 10]
67
+ expect(parsing("font-size: 50%", 10)).to eq(["font-size", "50%", false, 10])
68
68
  end
69
69
 
70
70
  it "correctly reads !important declarations" do
71
- parsing("color: green !important", 1).should == ["color", "green", true, 1]
72
- parsing("color: green !important;", 1).should == ["color", "green", true, 1]
71
+ expect(parsing("color: green !important", 1)).to eq(["color", "green", true, 1])
72
+ expect(parsing("color: green !important;", 1)).to eq(["color", "green", true, 1])
73
73
  end
74
74
 
75
75
  it "raises an error on unparseable declarations" do
@@ -5,7 +5,7 @@ module Roadie
5
5
  describe Stylesheet do
6
6
  it "is initialized with a name and CSS" do
7
7
  stylesheet = Stylesheet.new("foo.css", "body { color: green; }")
8
- stylesheet.name.should == "foo.css"
8
+ expect(stylesheet.name).to eq("foo.css")
9
9
  end
10
10
 
11
11
  it "has a list of blocks" do
@@ -13,12 +13,12 @@ module Roadie
13
13
  body { color: green !important; font-size: 200%; }
14
14
  a, i { color: red; }
15
15
  CSS
16
- stylesheet.should have(3).blocks
17
- stylesheet.blocks.map(&:to_s).should == [
16
+ expect(stylesheet).to have(3).blocks
17
+ expect(stylesheet.blocks.map(&:to_s)).to eq([
18
18
  "body{color:green !important;font-size:200%}",
19
19
  "a{color:red}",
20
20
  "i{color:red}",
21
- ]
21
+ ])
22
22
  end
23
23
 
24
24
  it "can iterate all inlinable blocks" do
@@ -26,16 +26,16 @@ module Roadie
26
26
  bad = double(inlinable?: false, selector: "bad", properties: "props")
27
27
 
28
28
  stylesheet = Stylesheet.new("example.css", "")
29
- stylesheet.stub blocks: [bad, inlinable, bad]
29
+ allow(stylesheet).to receive_messages blocks: [bad, inlinable, bad]
30
30
 
31
- stylesheet.each_inlinable_block.to_a.should == [
31
+ expect(stylesheet.each_inlinable_block.to_a).to eq([
32
32
  ["good", "props"],
33
- ]
33
+ ])
34
34
  end
35
35
 
36
36
  it "has a string representation of the contents" do
37
37
  stylesheet = Stylesheet.new("example.css", "body { color: green;}a{ color: red; font-size: small }")
38
- stylesheet.to_s.should == "body{color:green}\na{color:red;font-size:small}"
38
+ expect(stylesheet.to_s).to eq("body{color:green}\na{color:red;font-size:small}")
39
39
  end
40
40
  end
41
41
  end
@@ -13,9 +13,9 @@ describe TestProvider do
13
13
  "foo.css" => "a { color: red; }",
14
14
  "bar.css" => "body { color: green; }",
15
15
  })
16
- provider.find_stylesheet("foo.css").to_s.should_not include("body")
17
- provider.find_stylesheet("bar.css").to_s.should include("body")
18
- provider.find_stylesheet("baz.css").should be_nil
16
+ expect(provider.find_stylesheet("foo.css").to_s).not_to include("body")
17
+ expect(provider.find_stylesheet("bar.css").to_s).to include("body")
18
+ expect(provider.find_stylesheet("baz.css")).to be_nil
19
19
  end
20
20
 
21
21
  it "can have a default for missing entries" do
@@ -23,7 +23,7 @@ describe TestProvider do
23
23
  "foo.css" => "a { color: red; }",
24
24
  :default => "body { color: green; }",
25
25
  })
26
- provider.find_stylesheet("foo.css").to_s.should_not include("body")
27
- provider.find_stylesheet("bar.css").to_s.should include("body")
26
+ expect(provider.find_stylesheet("foo.css").to_s).not_to include("body")
27
+ expect(provider.find_stylesheet("bar.css").to_s).to include("body")
28
28
  end
29
29
  end
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  module Roadie
5
5
  describe UrlGenerator do
6
6
  it "is initialized with URL options" do
7
- UrlGenerator.new(host: "foo.com").url_options.should == {host: "foo.com"}
7
+ expect(UrlGenerator.new(host: "foo.com").url_options).to eq({host: "foo.com"})
8
8
  end
9
9
 
10
10
  it "raises an argument error if no URL options are specified" do
@@ -31,37 +31,38 @@ module Roadie
31
31
  end
32
32
 
33
33
  it "uses the given host" do
34
- url("/hello.jpg", host: "goats.com").should == "http://goats.com/hello.jpg"
34
+ expect(url("/hello.jpg", host: "goats.com")).to eq("http://goats.com/hello.jpg")
35
35
  end
36
36
 
37
37
  it "uses the given port" do
38
- url("/", host: "example.com", port: 1337).should == "http://example.com:1337/"
38
+ expect(url("/", host: "example.com", port: 1337)).to eq("http://example.com:1337/")
39
39
  end
40
40
 
41
41
  it "uses the given scheme" do
42
- url("/", host: "example.com", scheme: "https").should == "https://example.com/"
42
+ expect(url("/", host: "example.com", scheme: "https")).to eq("https://example.com/")
43
43
  end
44
44
 
45
45
  it "regards :protocol as an alias for scheme" do
46
- url("/", host: "example.com", protocol: "https").should == "https://example.com/"
46
+ expect(url("/", host: "example.com", protocol: "https")).to eq("https://example.com/")
47
47
  end
48
48
 
49
49
  it "strips extra characters from the scheme" do
50
- url("/", host: "example.com", scheme: "https://").should == "https://example.com/"
50
+ expect(url("/", host: "example.com", scheme: "https://")).to eq("https://example.com/")
51
51
  end
52
52
 
53
53
  it "uses the given path as a prefix" do
54
- url("/my_file", host: "example.com", path: "/my_app").should ==
54
+ expect(url("/my_file", host: "example.com", path: "/my_app")).to eq(
55
55
  "http://example.com/my_app/my_file"
56
+ )
56
57
  end
57
58
 
58
59
  it "returns the original URL if it is absolute" do
59
- url("http://foo.com/", host: "bar.com").should == "http://foo.com/"
60
+ expect(url("http://foo.com/", host: "bar.com")).to eq("http://foo.com/")
60
61
  end
61
62
 
62
63
  it "returns the base URL for blank paths" do
63
- url("", host: "foo.com").should == "http://foo.com"
64
- url(nil, host: "foo.com").should == "http://foo.com"
64
+ expect(url("", host: "foo.com")).to eq("http://foo.com")
65
+ expect(url(nil, host: "foo.com")).to eq("http://foo.com")
65
66
  end
66
67
 
67
68
  it "raises an error on invalid path" do
@@ -71,17 +72,17 @@ module Roadie
71
72
  end
72
73
 
73
74
  it "accepts base paths without a slash in the beginning" do
74
- url("/bar", host: "example.com", path: "foo").should == "http://example.com/foo/bar"
75
- url("/bar/", host: "example.com", path: "foo/").should == "http://example.com/foo/bar/"
75
+ expect(url("/bar", host: "example.com", path: "foo")).to eq("http://example.com/foo/bar")
76
+ expect(url("/bar/", host: "example.com", path: "foo/")).to eq("http://example.com/foo/bar/")
76
77
  end
77
78
 
78
79
  it "accepts input paths without a slash in the beginning" do
79
- url("bar", host: "example.com", path: "/foo").should == "http://example.com/foo/bar"
80
- url("bar", host: "example.com", path: "/foo/").should == "http://example.com/foo/bar"
80
+ expect(url("bar", host: "example.com", path: "/foo")).to eq("http://example.com/foo/bar")
81
+ expect(url("bar", host: "example.com", path: "/foo/")).to eq("http://example.com/foo/bar")
81
82
  end
82
83
 
83
84
  it "does not touch data: URIs" do
84
- url("data:deadbeef", host: "example.com").should == "data:deadbeef"
85
+ expect(url("data:deadbeef", host: "example.com")).to eq("data:deadbeef")
85
86
  end
86
87
  end
87
88
 
@@ -105,15 +106,15 @@ module Roadie
105
106
  describe "generating URLs with custom base" do
106
107
  it "resolves relative paths" do
107
108
  generator = UrlGenerator.new(host: "foo.com")
108
- generator.generate_url("../images/bg.png", "/stylesheets").should == "http://foo.com/images/bg.png"
109
- generator.generate_url("../images/bg.png", "email/stylesheets").should == "http://foo.com/email/images/bg.png"
110
- generator.generate_url("images/bg.png", "email/").should == "http://foo.com/email/images/bg.png"
109
+ expect(generator.generate_url("../images/bg.png", "/stylesheets")).to eq("http://foo.com/images/bg.png")
110
+ expect(generator.generate_url("../images/bg.png", "email/stylesheets")).to eq("http://foo.com/email/images/bg.png")
111
+ expect(generator.generate_url("images/bg.png", "email/")).to eq("http://foo.com/email/images/bg.png")
111
112
  end
112
113
 
113
114
  it "does not use the base when presented with a root-based path" do
114
115
  generator = UrlGenerator.new(host: "foo.com")
115
- generator.generate_url("/images/bg.png", "/stylesheets").should == "http://foo.com/images/bg.png"
116
- generator.generate_url("/images/bg.png", "email/stylesheets").should == "http://foo.com/images/bg.png"
116
+ expect(generator.generate_url("/images/bg.png", "/stylesheets")).to eq("http://foo.com/images/bg.png")
117
+ expect(generator.generate_url("/images/bg.png", "email/stylesheets")).to eq("http://foo.com/images/bg.png")
117
118
  end
118
119
  end
119
120
  end