21
1
Fork 0
mirror of https://github.com/Evolix/chexpire.git synced 2024-04-27 22:40:49 +02:00
chexpire/test/controllers/checks_controller_test.rb
2018-07-04 11:42:16 +02:00

143 lines
4.2 KiB
Ruby

require "test_helper"
class ChecksControllerTest < ActionDispatch::IntegrationTest
setup do
@user = create(:user)
login_as(@user)
end
test "no logged users are redirected to signin form" do
logout
get new_check_path
assert_redirected_to new_user_session_path
end
test "new without kind does not trigger an error" do
get new_check_path
assert_response :success
end
test "new with kind domain does not trigger an error" do
get new_check_path(kind: :domain)
assert_response :success
end
test "new with kind ssl does not trigger an error" do
get new_check_path(kind: :ssl)
assert_response :success
end
test "new with an invalid kind returns an error" do
get new_check_path(kind: :invalid)
assert_response :not_found
end
test "checks are ordered by default by expiry date sort" do
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
get checks_path
assert_equal [c3, c2, c1], current_checks
end
test "checks are ordered by expiry date asc" do
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
get checks_path(sort: :domain_expires_at_asc)
assert_equal [c3, c2, c1], current_checks
end
test "checks are ordered by reverse expiring date" do
c1 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
c3 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
get checks_path(sort: :domain_expires_at_desc)
assert_equal [c3, c2, c1], current_checks
end
test "checks are ordered by domain name asc" do
c1 = create(:check, user: @user, domain: "a")
c2 = create(:check, user: @user, domain: "b")
c3 = create(:check, user: @user, domain: "c")
get checks_path(sort: :domain_asc)
assert_equal [c1, c2, c3], current_checks
end
test "checks are ordered by domain name desc" do
c1 = create(:check, user: @user, domain: "a")
c2 = create(:check, user: @user, domain: "b")
c3 = create(:check, user: @user, domain: "c")
get checks_path(sort: :domain_desc)
assert_equal [c3, c2, c1], current_checks
end
test "invalid sort fallback to default sort" do
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
get checks_path(sort: :invalid_sort_asc)
assert_equal [c3, c2, c1], current_checks
end
test "checks are filtered by domain kind" do
c1 = create(:check, :domain, user: @user)
c2 = create(:check, :domain, user: @user)
create(:check, :ssl, user: @user)
get checks_path(kind: :domain)
assert_equal [c1, c2], current_checks
end
test "checks are filtered by ssl kind" do
create(:check, :domain, user: @user)
create(:check, :domain, user: @user)
c3 = create(:check, :ssl, user: @user)
get checks_path(kind: :ssl)
assert_equal [c3], current_checks
end
test "checks are filtered by domain name" do
c1 = create(:check, user: @user, domain: "abc")
c2 = create(:check, user: @user, domain: "bcde")
create(:check, user: @user, domain: "hijk")
get checks_path(by_domain: "bc")
assert_equal [c1, c2], current_checks
get checks_path(by_domain: "klm")
assert_empty current_checks
end
test "checks are paginated" do
create_list(:check, 40, user: @user)
get checks_path
assert_equal 1, current_checks.current_page
first_page = current_checks
get checks_path(page: 2)
assert_equal 2, current_checks.current_page
assert_not_equal first_page, current_checks
end
test "checks are scoped to current user" do
c1 = create(:check, user: @user)
create(:check)
get checks_path
assert_equal [c1], current_checks
end
def current_checks
@controller.instance_variable_get("@checks")
end
end