Jobeet チュートリアル 6日目と9日目について

20 views
Skip to first unread message

shishi

unread,
Aug 7, 2010, 1:27:40 PM8/7/10
to symfony-...@googlegroups.com
こんにちは。shishiです。
現在Jobeetを実際に進めながら訳を見直していっています。

途中まで来たところで解決できない疑問が出てきましたので、ご指導頂ければ幸いです。

Jobeet6日目の
求人ページの保護(Secure the Job Page) で、

/frontend_dev.php/job/sensio-labs/paris-france/ID/web-developer-expired

というURLが登場します。
私の見た限りではこれ以前にも以後にもこのタイプのURL(末尾に -expired とつくもの)は登場しませんし、
そのようなroutingもないのですが、

9日目の

機能テストを書く(Writing Functional Tests) で

テストの一環として"expired"という文字列が含まれていないことをチェックしています。
これまでにこなしてきたことをやっていれば expired なものはリストされないためテスト自体は問題なのですが、
括弧書きにて、expired したものにしか expired はつかないと書いてあります。
これから expired なものには上記URLのように expired がつくはずなのですが、もし expired なレコードを取得した場合に
expired を URL に付け加える何かが見当たりません。

メソッドかルーティングかで付け加えられないと全く意味のないテストなので、そのような何かがあるはずなのですが、
私には分からなかったのでそもそもないのか、それとも間違っているのか教えて頂きたいです。

よろしくお願いします。

hidenorigoto

unread,
Aug 9, 2010, 12:00:11 AM8/9/10
to 日本Symfonyユーザー会
shishiさん

後藤です

こちらの件、昨日のSymfony IRC集会に参加された方々と検証してみました。


> Jobeet6日目の
> 求人ページの保護(Secure the Job Page) で、
>
> /frontend_dev.php/job/sensio-labs/paris-france/ID/web-developer-expired
>
> というURLが登場します。

まず6日目のこの部分ですが、
「web-developer-expired」
の部分はルーティングとしては「:position_slug」なので、DBに入っているJobレコードの
positionに相当するものです。

で、期限切れ用のデータはどこで登録しているのかというと、6日目の最初の方でfixtureに
追記しています。(expired_jobという見出し)

しかし、expired_jobのfixtureでは、positionが「Web Developer」のままで、expiredはつい
ていません。


ですので、現状のドキュメントにやや不備があり、以下のいずれかが正しいのではないか
という結論になりました。

A. 6日目の最初で登録するfixtureのpositionを「Web Developer Expired」にする
B. アクセスするURlを「/frontend_dev.php/job/sensio-labs/paris-france/ID/web-
developer」
(IDは該当するIDに置き換え)と、-expiredのないものにする。


# 以下の9日目の内容も鑑みると、A がより正しいのではないかと思われます。


> 私の見た限りではこれ以前にも以後にもこのタイプのURL(末尾に -expired とつくもの)は登場しませんし、
> そのようなroutingもないのですが、
>
> 9日目の
>
> 機能テストを書く(Writing Functional Tests) で
>
> テストの一環として"expired"という文字列が含まれていないことをチェックしています。
> これまでにこなしてきたことをやっていれば expired なものはリストされないためテスト自体は問題なのですが、
> 括弧書きにて、expired したものにしか expired はつかないと書いてあります。
> これから expired なものには上記URLのように expired がつくはずなのですが、もし expired なレコードを取得した場合に
> expired を URL に付け加える何かが見当たりません。

こちらの9日目ですが、英語原文では以下のように書かれています。
remember that in the fixture files, the only expired job we have
contains "expired" in the position
つまりこれは、fixtureファイルに記述するデータのことを指していて、メソッドなどでexpiredとつけるわけではない
という説明です。

ですので、6日目で追加する期限切れ用のfixtureのpositionにexpiredと書くという、上のAのように
なっていればよいと思われます。



なぜドキュメントがこのような状況になっているのかは分かりませんが、1.2→1.4と改版が重ねられていく
うちに、全体での整合性が崩れてしまっているのかもしれません。


今回はこういった指摘を挙げて頂いてありがとうございます。
このような矛盾点に限らず、(他の方も)お気軽に疑問点などをMLへ投げていただければと思います。

Shin Ohno

unread,
Aug 9, 2010, 2:26:29 AM8/9/10
to symfony-...@googlegroups.com
こんにちは

大野です。

後藤さん、すいません。私の方で昨晩、返事をしようと思っていたのですが、そのまま寝てしまいました。

後藤さんの考えと同じく、フィクスチャの方を変更する必要があるように見えますね。
つまり、"Web Developer" ではなく、"Web Developer expired"に。もしくは、テストの方も変更して、"Web
Developer Expired"に。

"Expired"だと6日目のroutingに関しては、:position_slugだとslugifyしているところで、strtolowerしているので大丈夫なのですが、テストが通らないですね。つまり、テストでは、文字列に"expired"があるかどうかで、eが大文字だと、このテストでは見つけることができない、ということになってしまいますので。

なので、"Web Developer Expired"にするのであれば、さらに9日目のテストの方で、

checkElement('.jobs td.position:contains("expired")', false)->

とあるとことろを、

checkElement('.jobs td.position:contains("Expired")', false)->

に直さないといけないように見えます。

と、ここまで書いてから思ったのですが、CSSセレクタってcase sensitiveでしたよね。


2010/8/8 shishi <shish...@gmail.com>:

> --
> -------------------
> Symfonyに関する疑問・質問、ユーザー会の活動やサイトに対するご意見、その他雑談など、お気軽にMLへ投稿してください!
>
>
> 日本Symfonyユーザー会
> http://www.symfony.gr.jp/
>
> 日本Symfonyユーザー会メーリングリスト
> http://groups.google.com/group/symfony-users-ja
>

shishi

unread,
Aug 9, 2010, 6:18:46 AM8/9/10
to symfony-...@googlegroups.com
shishiです。

後藤さん、大野さんを始め検証してくださった皆さんありがとうございました。

確かに原文には ~ in the fixture file ~ とあったのですが、今までの fixture を作成した結果で
position に expired が無いことは明らかであったため、何らかのメソッドやルーティングで解決する
のではないかと思いました。

fixture 側に expired を含めて
/frontend_dev.php/job/sensio-labs/paris-france/ID/web-developer
にした方が他の部分は修正しないで済みますのでそれが良さそうですね。

ドキュメントに不備があったと答えが見つかってすっきりしました。
ありがとうございました。

2010年8月9日13:00 hidenorigoto <hideno...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages