心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

   


5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。ちょっとTDDにこだわってみています。

既にお気付きの方もいると思いますが、これまで行なってきた、レイアウト上のリンクのルーティングテストは、そのリンクが実際に正しいページへのリンクになっているかどうかをチェックしていません。このようなテストを実装する方法のひとつは、RSpecの結合テスト内でvisitとclick_linkを使用することです。レイアウトのリンクが正しく定義されていることを確認するコードを追加して、リスト5.37を補ってください。

リンクを貼るべき箇所はどこだろう

仕様の探求です。すっ飛ばしている、

  • 5.3.3章 名前付きルート
  • 5.4.2章のリスト5.35 ボタンをユーザー登録ページにリンクする

にあります。

ヘッダーナビにある、Help,Help
フッターにある、About,Contactにリンクをはります。
フッターのNewsは既に貼ってあります。
以上が5.3.3章。

5.4.2章のリスト5.35は、トップページにある”signup now”ボタンにリンクを貼る作業です。

リンクのテストを書く

仕様がわかったところで、テストを書くのですが、
”RSpecの結合テスト内でvisitとclick_link”を使うとの事。
リスト5.37 レイアウトのリンクをテストする。にだいたい答えが書いてあるので、それにならって書いてみます。
失敗するんだけど、全部itでまとめてあるので、エラーが1個しか出ない。この書き方は問題だな。
なので、テストをこう書き換えてみました。

require 'spec_helper'

describe "静的ページのテスト" do

  subject { page } 
  let(:base_title) { 'Ruby on Rails Tutorial Sample App' }
  let(:title_delimiter) { ' | ' }

  shared_examples_for "静的ページ共通テスト" do
    it { should have_content(heading) }
    it { should have_title("#{base_title}#{title_delimiter}#{heading}") }
  end

  describe "Homeページのテスト" do
    before { visit root_path }
    #コンテンツに'Twili'という文字がある" 
    it {should have_content('Twili')}
    #"トップページのタイトル(サブタイトルがない)" 
    it {should have_title("#{base_title}")}
    #"カスタマイズしたページのタイトル(タイトルにHomeがない)"
    it {should_not have_title("#{title_delimiter}Home")}
  end

  describe "Helpページのテスト" do
    before { visit help_path }
    let(:heading) { 'Help' }

    #コンテンツに'Help'という文字がある
    #サブタイトルに'Help'という文字がある 
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "Aboutページのテスト" do
    before { visit about_path }
    let(:heading) { 'About' }

    #コンテンツに'About Us'という文字がある
    #サブタイトルに'About Us'という文字がある
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "Contactページのテスト" do
    before { visit contact_path }
    let(:heading) { 'Contact' }

    #コンテンツに'Contact'という文字がある
    #タイトルに'Contact'という文字がある
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "へッダーナビ、トップページ内、フッターのリンクチェック" do
    before { visit root_path }

    it "ヘッダーナビsample appのリンクチェック" do
      click_link "sample app"
        expect(page).to have_title("#{base_title}")
    end
    it "ヘッダーナビHomeのリンクチェック" do
      click_link "Home"
        expect(page).to have_title("#{base_title}")
    end
    it "ヘッダーナビHelpのリンクチェック" do
      click_link "Help"
        expect(page).to have_title("#{base_title}#{title_delimiter}Help")
    end
    it "ヘッダーナビSing inのリンクチェック" do
  #    click_link "Sign in"
    end
    it "トップページSign up now!のリンクチェック" do
      click_link "Sign up now!"
        expect(page).to have_title("#{base_title}#{title_delimiter}Sign up")
    end
    it "フッターAboutのリンクチェック" do
      click_link "About"
        expect(page).to have_title("#{base_title}#{title_delimiter}About Us")
    end
    it "フッターContactのリンクチェック" do
      click_link "Contact"
        expect(page).to have_title("#{base_title}#{title_delimiter}Contact")
    end
  end
end

it “” do
end
でそれぞれのリンクのテストを書いたので、実装が失敗していたらそこがエラーになります。
長くなったので続きます。テスト書けたので、リンクをひとつづつ貼って、エラーが消えるか確認していきます。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
formatはどこから取ってくる?

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

Google Webfont使ってみたよ

地元に戻ってきてまず思ったのは「観光サイトを立ち上げたい」ということ。いや、観光 …

確定申告終わったぁ〜MoneyForwardのおかげです

確定申告終わりました。青色で申請しているので決算書必要なのですが、昨年から使い始 …

RailsTutorial4.0を高速で復習する。9章。

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

no image
wordpressのサーバー移行したい

本当に自分の備忘録として。 サーバー移行したいなと考えています。 同時に、Wor …

no image
RailsTutorial4.0を高速で復習する。9.3.4章。

9.3.4パーシャルのリファクタリング、です。 テストパスしているのでリファクタ …

no image
RubyとRailsのお作法

コーディングスタイルって結構気になります。 最初につとめた会社で、プログラミング …

WordPressのテンプレートを自分で作ってみました

ブログ更新は久々になりました。この2週間、ずっとこのブログ用にWordPress …

Ruby on Railsを4.1.0にバージョンアップする

真央ロス真央廃を超えた腐まお状態な1ヶ月1週間、まるで娘が嫁に行った父親のごとし …

no image
Macで.htaccessを表示する設定

MacBook Air2代目。以前は行っていた.(ドット)がついたファイルをMa …