RSpecで日付をPostする際のfixtureどう書こう?
RSpecに限った話じゃないような気がするんだけどとりあえず。
既存のコントローラーについて今から後追いでテスト書いていて、
下記みたいなケースを書いていたとする。
post_data = posts(post_2) post :next_screen, :post_data => post_data response.should be_success
ここでセッションまたいでvalidさせたりする都合、
内部で日付データをパラメータから直接作るメソッドを入れている
のだけどそのメソッドが通らなくて失敗する。
通すために、POSTパラメータのようにfixtureに書いてやると…
post_2 date_from: "(1i)": 1990 "(2i)": 1 "(3i)": 11
余裕のFormat error
ならばと
post_2 date_from: 1990-1-11 date_from(1i): 1990 date_from(2i): 1 date_from(3i): 11
こうかくとPostクラスのdate_from(1i)のようなカラムはfield listにないという
エラーで落ちてしまう。
……そもそもそういう形のバリデーションがまずいのだと理解してリファクタリング
出来そうかどうか試してみるのが正しいアプローチかな?
ただモデルとは分離したところの日付に対してバリデーションかける例もあるわけで、
何かしら対応しないとまずいんじゃないかなぁとも思う…が今回は別のfixtureにして
読ませるわけにもいかないので割りと袋小路だ。
絶賛考え中。