途中になってしまったので、受入テストの続きを行う。デザインに関しては後で設定することとして、とりあえず動く実装を作る。まず、app/views/teacher/kyoumus/index.html に年度変更のリンクを設置する。
%h2 年度に関する情報 %table %tr %th リンク %th 内容 %th 権限 %tr %th= link_to '[年度変更]', teacher_years_path %td 処理年度を変更します。 %td 教務室
この結果、以下のようなエラーになる。
Failure/Error: 前提 教務室でログインする
ActionView::Template::Error:
undefined local variable or method `teacher_years_path' for #<#
teacher_years_path を作成するため、controller を generate する。
$ bin/rails g controller teacher/years create app/controllers/teacher/years_controller.rb invoke haml create app/views/teacher/years invoke rspec create spec/controllers/teacher/years_controller_spec.rb invoke assets invoke coffee invoke scss
また、config/routes.rb に resources を追加する。
namespace :teacher do resources :years, only: [ :index, :create, :show, :update ]
Guard は以下のようになる。
# No such step: '[年度変更]リンクをクリックする' # ./spec/acceptance/features/kyoumu_years.feature:6
step がないので、この step を追加しておく。
# リンクをクリック (textはリンク文字列かid) # 同じ名前のリンクが複数ある場合には文字列は指定できない step %(:textリンクをクリックする) do |text| click_link text end
step については、[http://techracho.bpsinc.jp/hachi8833/2014_06_26/18068:title=[RSpec][Turnip] 一般的に使えるTurnipステップ集]に便利な一覧が載っているので common.rb に登録しておく。
この結果、Guard は以下のようになる。
Failure/Error: もし "[年度変更]"リンクをクリックする AbstractController::ActionNotFound: The action 'index' could not be found for Teacher::YearsController
権限関係は後で記述することにし、取り急ぎテストが通る実装を作成する。spec/controllers/teacher/years_controller_spec.rb は以下のようになる。
RSpec.describe Teacher::YearsController, :type => :controller do describe "GET index" do it "returns http success" do get :index expect(response).to have_http_status(:success) end end end
続いて、app/controllers/teacher/years_controller.rb に index を作成する。
def index end
さらに、app/views/teacher/years/index.html.haml を以下のように記述する。
%h1 年度一覧
この結果、テストはすべて通過する。
年度の追加、変更 教務室のトップページから年度変更に飛び、新規年度を作成し、年度を変更する 前提教務室でログインする -> ならば"[年度変更]"と表示されていること -> もし"[年度変更]"リンクをクリックする -> ならば年度一覧と表示されていること
実際の年度変更処理を書きたいところだが、権限周りがまだ未実装部分が多いため、この受入テストは一端中断する。
今日はここまで。
written by iHatenaSync