require 'test_helper' class ActionsTest < Hermes::IntegrationCase test "select date and time should raise error when id_prefix is not supplied" do visit '/users/new' assert_raise ArgumentError do select_datetime(Time.current, {}) end end test "select date and time using id_prefix" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?datetime=true' within '#datetime' do select_datetime(date, :id_prefix => 'user_active_at') assert find_selected_option('user[active_at(1i)]', '2011') assert find_selected_option('user[active_at(2i)]', '2') assert find_selected_option('user[active_at(3i)]', '28') assert find_selected_option('user[active_at(4i)]', '16') assert find_selected_option('user[active_at(5i)]', '00') end end test "select date and time using from as label" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?datetime=true' within '#datetime' do select_datetime(date, :from => 'Active at') assert find_selected_option('user[active_at(1i)]', '2011') assert find_selected_option('user[active_at(2i)]', '2') assert find_selected_option('user[active_at(3i)]', '28') assert find_selected_option('user[active_at(4i)]', '16') assert find_selected_option('user[active_at(5i)]', '00') end end test "select time using id_prefix" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?time=true' within '#time' do select_time(date, :id_prefix => 'user_active_at') assert find_selected_option('user[active_at(4i)]', '16') assert find_selected_option('user[active_at(5i)]', '00') end end test "select time using label" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?time=true' within '#time' do select_time(date, :from => 'Active at') assert find_selected_option('user[active_at(4i)]', '16') assert find_selected_option('user[active_at(5i)]', '00') end end test "select date using id_prefix" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?date=true' within '#date' do select_date(date, :id_prefix => 'user_active_at') assert find_selected_option('user[active_at(1i)]', '2011') assert find_selected_option('user[active_at(2i)]', '2') assert find_selected_option('user[active_at(3i)]', '28') end end test "select date using label" do date = DateTime.new(2011, 2, 28, 16, 0) visit '/users/new?date=true' within '#date' do select_date(date, :from => 'Active at') assert find_selected_option('user[active_at(1i)]', '2011') assert find_selected_option('user[active_at(2i)]', '2') assert find_selected_option('user[active_at(3i)]', '28') end end test "select date and time didn't find the label" do msg = "cannot select option, select with label 'Unexistant' not found" visit '/users/new' assert_raise_with_message Capybara::ElementNotFound, msg do select_datetime(Time.current, :from => 'Unexistant') end end test "select date and time didn't find the id prefix" do msg = "cannot select option, no select box with id prefix 'unexistant' found" visit '/users/new' assert_raise_with_message Capybara::ElementNotFound, msg do select_datetime(Time.current, :id_prefix => 'unexistant') end end private def find_selected_option(select_name, value) find("select[name='#{select_name}'] > option[selected][value='#{value}']") end end