discourse/spec/system/page_objects/admin_badges.rb
Joffrey JAFFEUX fee8caf529
FIX: correctly reset form before destroying it (#28516)
This change is preventing the "is dirty check" from happening when clicking delete on this form. This was not good UX and was also causing bugs by leaving the form in a unexpected state.
2024-08-23 14:58:31 +02:00

65 lines
1.4 KiB
Ruby

# frozen_string_literal: true
module PageObjects
module Pages
class AdminBadges < PageObjects::Pages::Base
def visit_page(badge_id = nil)
path = "/admin/badges"
path += "/#{badge_id}" if badge_id
page.visit path
self
end
def new_page
page.visit "/admin/badges/new"
self
end
def has_badge?(title)
page.has_css?(".current-badge-header .badge-display-name", text: title)
end
def has_saved_form?
expect(PageObjects::Components::Toasts.new).to have_success(I18n.t("js.saved"))
end
def submit_form
form.submit
self
end
def delete_badge
page.find(".badge-form__delete-badge-btn").click
self
end
def choose_icon(name)
form.choose_conditional("choose-icon")
form.field("icon").select("ambulance")
self
end
def fill_query(query)
form.field("query").fill_in(query)
self
end
def upload_image(name)
form.choose_conditional("upload-image")
attach_file(File.absolute_path(file_from_fixtures(name))) do
form.field("image_url").find(".image-upload-controls .btn").click
end
expect(form.field("image_url")).to have_css(".btn-danger")
self
end
def form
@form ||= PageObjects::Components::FormKit.new("form")
end
end
end
end