8.5 Iteration C5 - Caching 8.3 Iteration C3: Use a Helper to Format the Price
Demonstrate use of assert_select to test views.
Verify that the tests still pass.
rails test
Run options: --seed 17310
# Running:
.....E
Error:
StoreControllerTest#test_should_get_index:
ActionView::Template::Error: The asset "ruby.png" is not present in the asset pipeline.
app/views/store/index.html.erb:7:in `block in _app_views_store_index_html_erb___14457506798847555_56731560'
app/views/store/index.html.erb:5:in `_app_views_store_index_html_erb___14457506798847555_56731560'
test/controllers/store_controller_test.rb:5:in `block in <class:StoreControllerTest>'
bin/rails test test/controllers/store_controller_test.rb:4
.....E
Error:
ProductsControllerTest#test_should_get_index:
ActionView::Template::Error: The asset "ruby.png" is not present in the asset pipeline.
app/views/products/index.html.erb:10:in `block in _app_views_products_index_html_erb___1120784584670067386_54979800'
app/views/products/index.html.erb:6:in `_app_views_products_index_html_erb___1120784584670067386_54979800'
test/controllers/products_controller_test.rb:20:in `block in <class:ProductsControllerTest>'
bin/rails test test/controllers/products_controller_test.rb:19
.
Finished in 0.427001s, 30.4449 runs/s, 72.5994 assertions/s.
13 runs, 31 assertions, 0 failures, 2 errors, 0 skips
Make sure the images exists
touch app/assets/images/ruby.png
Rerun the tests.
rails test
Run options: --seed 15747
# Running:
.............
Finished in 0.351168s, 37.0193 runs/s, 93.9721 assertions/s.
13 runs, 33 assertions, 0 failures, 0 errors, 0 skips
Add tests for layout, product display, and formatting, using counts, string comparisons, and regular expressions.
edit test/controllers/store_controller_test.rb
require 'test_helper'
class StoreControllerTest < ActionDispatch::IntegrationTest
test "should get index" do
get store_index_url
assert_response :success
assert_select '#columns #side a', minimum: 4
assert_select '#main .entry', 3
assert_select 'h3', 'Programming Ruby 1.9'
assert_select '.price', /\$[,\d]+\.\d\d/
end
end
Review fixure data
edit test/fixtures/products.yml
# Read about fixtures at
# http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
description: MyText
image_url: lorem.jpg
price: 9.99
two:
title: MyString
description: MyText
image_url: lorem.jpg
price: 9.99
ruby:
title: Programming Ruby 1.9
description:
Ruby is the fastest growing and most exciting dynamic
language out there. If you need to get working programs
delivered fast, you should add Ruby to your toolbox.
price: 49.50
image_url: ruby.png
Show that the tests pass.
rails test:controllers
Run options: --seed 13304
# Running:
........
Finished in 0.300198s, 26.6491 runs/s, 46.6360 assertions/s.
8 runs, 14 assertions, 0 failures, 0 errors, 0 skips
8.5 Iteration C5 - Caching 8.3 Iteration C3: Use a Helper to Format the Price