Rails応用2
2023.11.12
まずはbreadcrumb(パンくず)が何なのか確認。
なるほど。
「ユーザーが”自分が今サイトの階層構造のどこにいるか”をわかりやすく表示するあれ」のことなのね。
「タグ一覧ページ」と「タグ編集ページ」が実際にどうなっているか確認する。
たしかにパンくずリストが表示されてないな。
ついでにスラッグって何?と思って調べた。
スラッグとは、ページを識別するURLの一部で、URLの末尾にあります。IT用語で「位置を示すコード」という意味があり、任意の文字列を指定できる機能です。
スラッグには、任意の文字列を自由に指定することができますが、意味のある単語を使用することが推奨されています。スラッグの命名はSEOで重要です。適切なキーワードなどを設定することで、ユーザーにも分かりやすく、SEOにも良い影響があると言われています。
スラッグとパーマリンクの違いは、スラッグはURLを構成する一部の文字列であることに対して、パーマリンクは各ウェブページの全URLを指します(固定リンク)。
さて、課題に取り組んでいく。
まずconfig/breadcrumbs.rb
を確認する。
「タグ一覧ページ」「タグ編集ページ」がないので追記する。
リンクを書かなきゃいけないからルーティングを確認しよう。コンソールでもできるけど、確かブラウザからも特定のURLにアクセスするとできるんだよな。やってみよう。
できた。URLメモっとこう。
configの追記OK。次はビューの確認と修正。
他のページがどうなってるか確認してそれに合わせる。
よし、両方OK!
目安時間でなんとなく察してはいたけど、今回のは割と簡単だな。
あとはテスト書いて通して、見本のテストも通して、それからプルリクして、LGTM出たらbreadcrumbのまとめ、って感じかな。
というわけでテストを書いていく。
まずはFactoryBotを確認。Userはたぶんあるけど、Tagがなければ作る。
Tagのtypeってなんだ…?入力フォームには無いみたいだけど。とりあえず放っておく。
taxonomiesってのも謎だなあ。これも必要になるまでは放置でいいか。
TagのFactoryBotができたので、テストコードを書いていく。
タグ一覧ページ
- adminユーザーを作成
- タグを作成
- ログイン
- 「タグ」リンクをクリック
- パンくずリストに"タグ"という文字列があるか確認
タグ編集ページ
- 途中まで一覧ページと同じ
- 「編集」リンクをクリック
- パンくずリストに”タグ編集”という文字列があるか確認
こんな流れでいいかな。
よし、書いたのでとりあえず走らせてみよう。
お、expect(.breadcrumb)
って書き方はダメらしい。こっちはCSS準拠じゃないのか?
要素をクラスで指定する方法を調べてみよう。
find
を使えばよかったみたいだ。
無事テスト通った!
怒られたことメモ
-
let
はbefore
の中では使えない。あくまでdescribe
やcontext
といった具体的なテストケースの中で使うこと -
create!
なんてメソッドはない。let!
と勘違いしていた
無事テストも書けたし通ったので、今度は見本のテストをダウンロードして通るか確認する。
自分が書いたテストは一旦ゴミ箱に入れてあとで見本と見比べる。
テストは通ったけどexample 5!?って思ったけどたぶんあれだ、パンくずリストのリンクがちゃんと正常に飛べるかどうかもテストしてるんだなこれは。そこ忘れてた。
ともあれ通ったのでプルリクする。
あと今気づいたけどspecファイルの拡張子は普通に.rb
で良かったんだな。間違えて.spec.rb
にしてた。だからexec rspec
で実行されなかったのか。
xxx_spec.rb
が一般的って感じだな。
一発LGTM〜!
あ〜やっぱりリンク先のURLが間違ってないかのテストしてるな。次から気をつけよう。
within
とかいう便利なメソッド使ってる!find
使って入れ子にするよりこっちのほうがわかりやすくていいな。
あ、しまった。GitHubの草に反映されるようになってなかった。今からやってもされるのかな。やってみよ。
反映された!過去のも…と思ったけど、メルアド設定前のを反映するのはたしかちょっと面倒なんだよな…それはまた今度にするか。