Feature: Relative Assets
In order easily switch between relative and absolute paths
Scenario: Previewing css with the feature disabled
Given "relative_assets" feature is "disabled"
And the Server is running at "relative-assets-app"
When I go to "/stylesheets/relative_assets.css"
Then I should not see "url('../"
And I should see "/images/blank.gif')"
Scenario: Building css with the feature disabled
Given a fixture app "relative-assets-app"
And a file named "config.rb" with:
"""
"""
Given a successfully built app at "relative-assets-app"
When I cd to "build"
Then the file "stylesheets/relative_assets.css" should contain "url('/images/blank.gif')"
Scenario: Rendering html with the feature disabled
Given "relative_assets" feature is "disabled"
And the Server is running at "relative-assets-app"
When I go to "/relative_image.html"
Then I should see '"/stylesheets/relative_assets.css"'
Then I should see '"/javascripts/app.js"'
Then I should see "/images/blank.gif"
When I go to "/absolute_image_relative_css.html"
Then I should see '"stylesheets/relative_assets.css"'
Then I should see '"javascripts/app.js"'
Then I should see "/images/blank.gif"
Scenario: Rendering css with the feature enabled
Given "relative_assets" feature is "enabled"
And the Server is running at "relative-assets-app"
When I go to "/stylesheets/relative_assets.css"
Then I should see "url('../images/blank.gif"
Scenario: Building css with the feature enabled
Given a fixture app "relative-assets-app"
And a file named "config.rb" with:
"""
activate :relative_assets
"""
Given a successfully built app at "relative-assets-app"
When I cd to "build"
Then the file "stylesheets/relative_assets.css" should contain "url('../images/blank.gif')"
Scenario: Relative css reference with directory indexes
Given a fixture app "relative-assets-app"
And a file named "config.rb" with:
"""
activate :directory_indexes
activate :relative_assets
"""
Given a successfully built app at "relative-assets-app"
When I cd to "build"
Then the file "relative_image/index.html" should contain "../stylesheets/relative_assets.css"
Scenario: Rendering html with the feature enabled
Given "relative_assets" feature is "enabled"
And the Server is running at "relative-assets-app"
When I go to "/relative_image.html"
Then I should see '"stylesheets/relative_assets.css"'
Then I should see '"javascripts/app.js"'
When I go to "/relative_image_absolute_css.html"
Then I should see '"/stylesheets/relative_assets.css"'
Then I should see '"/javascripts/app.js"'
Then I should not see "/images/blank.gif"
And I should see "images/blank.gif"
Scenario: Rendering css with a custom images_dir
Given "relative_assets" feature is "enabled"
And "images_dir" is set to "img"
And the Server is running at "relative-assets-app"
When I go to "/stylesheets/relative_assets.css"
Then I should see "url('../img/blank.gif')"
Scenario: Building css with a custom images_dir
Given a fixture app "relative-assets-app"
And a file named "config.rb" with:
"""
set :images_dir, "img"
activate :relative_assets
"""
Given a successfully built app at "relative-assets-app"
When I cd to "build"
Then the file "stylesheets/relative_assets.css" should contain "url('../img/blank.gif')"
Scenario: Rendering html with a custom images_dir
Given "relative_assets" feature is "enabled"
And "images_dir" is set to "img"
And the Server is running at "relative-assets-app"
When I go to "/relative_image.html"
Then I should not see "/images/blank.gif"
Then I should not see "/img/blank.gif"
And I should see "img/blank.gif"
Scenario: Rendering scss with the feature enabled
Given "relative_assets" feature is "enabled"
And the Server is running at "fonts-app"
When I go to "/stylesheets/fonts.css"
Then I should see "url('../fonts/StMarie-Thin.otf"
And I should see "url('../fonts/blank/blank.otf"
Scenario: Rendering scss with the feature enabled and a custom fonts_dir
Given "relative_assets" feature is "enabled"
And "fonts_dir" is set to "otf"
And the Server is running at "fonts-app"
When I go to "/stylesheets/fonts.css"
Then I should not see "url('../fonts/StMarie-Thin.otf"
And I should see "url('../otf/StMarie-Thin.otf"
And I should see "url('../otf/blank/blank.otf"
Scenario: Building scss with the feature enabled
Given a fixture app "fonts-app"
And a file named "config.rb" with:
"""
activate :relative_assets
"""
Given a successfully built app at "fonts-app"
When I cd to "build"
Then the file "stylesheets/fonts.css" should contain "url('../fonts/StMarie-Thin.otf')"
And the file "stylesheets/fonts.css" should contain "url('../fonts/blank/blank.otf')"
Scenario: Building scss with the feature enabled and a custom fonts_dir
Given a fixture app "fonts-app"
And a file named "config.rb" with:
"""
set :fonts_dir, "otf"
activate :relative_assets
"""
Given a successfully built app at "fonts-app"
When I cd to "build"
Then the file "stylesheets/fonts.css" should not contain "url('../fonts/StMarie-Thin.otf')"
And the file "stylesheets/fonts.css" should contain "url('../otf/StMarie-Thin.otf')"
And the file "stylesheets/fonts.css" should contain "url('../otf/blank/blank.otf')"
Scenario: Relative assets via image_tag
Given a fixture app "relative-assets-app"
Given "relative_assets" feature is "enabled"
And a file named "source/sub/image_tag.html.erb" with:
"""
<%= image_tag '/img/blank.gif' %>
"""
And the Server is running at "relative-assets-app"
When I go to "/sub/image_tag.html"
Then I should see ''
Scenario: Relative assets should not break data URIs in image_tag
Given a fixture app "relative-assets-app"
Given "relative_assets" feature is "enabled"
And a file named "source/sub/image_tag.html.erb" with:
"""
<%= image_tag "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" %>
"""
And the Server is running at "relative-assets-app"
When I go to "/sub/image_tag.html"
Then I should see ''