require "application_system_test_case"

<% module_namespacing do -%>
class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
  setup do
    @<%= singular_table_name %> = <%= fixture_name %>(:one)
  end

  test "visiting the index" do
    visit <%= plural_table_name %>_url
    assert_selector "h1", text: "<%= human_name.pluralize %>"
  end

  test "should create <%= human_name.downcase %>" do
    visit <%= plural_table_name %>_url
    click_on "New <%= human_name.downcase %>"

    <%- attributes_hash.each do |attr, value| -%>
    <%- if boolean?(attr) -%>
    check "<%= attr.humanize %>" if <%= value %>
    <%- else -%>
    fill_in "<%= attr.humanize %>", with: <%= value %>
    <%- end -%>
    <%- end -%>
    click_on "Create <%= human_name %>"

    assert_text "<%= human_name %> was successfully created"
    click_on "Back"
  end

  test "should update <%= human_name %>" do
    visit <%= singular_table_name %>_url(@<%= singular_table_name %>)
    click_on "Edit this <%= human_name.downcase %>", match: :first

    <%- attributes_hash.each do |attr, value| -%>
    <%- if boolean?(attr) -%>
    check "<%= attr.humanize %>" if <%= value %>
    <%- elsif datetime?(attr) || time?(attr) -%>
    fill_in "<%= attr.humanize %>", with: <%= value %>.to_s
    <%- else -%>
    fill_in "<%= attr.humanize %>", with: <%= value %>
    <%- end -%>
    <%- end -%>
    click_on "Update <%= human_name %>"

    assert_text "<%= human_name %> was successfully updated"
    click_on "Back"
  end

  test "should destroy <%= human_name %>" do
    visit <%= singular_table_name %>_url(@<%= singular_table_name %>)
    click_on "Destroy this <%= human_name.downcase %>", match: :first

    assert_text "<%= human_name %> was successfully destroyed"
  end
end
<% end -%>
