fc18ba8e07
Test that pasting markdown with block separators produces extra spacing between blocks, and that single line breaks are preserved.
149 lines
4.3 KiB
Ruby
149 lines
4.3 KiB
Ruby
require "application_system_test_case"
|
|
|
|
class SmokeTest < ApplicationSystemTestCase
|
|
test "joining an account" do
|
|
account = accounts("37s")
|
|
|
|
visit join_url(code: account.join_code.code, script_name: account.slug)
|
|
fill_in "Email address", with: "newbie@example.com"
|
|
click_on "Continue"
|
|
|
|
assert_selector "h1", text: "Check your email"
|
|
identity = Identity.find_by!(email_address: "newbie@example.com")
|
|
code = identity.magic_links.active.first.code
|
|
fill_in "code", with: code
|
|
send_keys :enter
|
|
|
|
assert_selector "input[id=user_name]"
|
|
assert account.users.find_by!(identity:).verified?, "User was not properly verified"
|
|
fill_in "Full name", with: "New Bee"
|
|
click_on "Continue"
|
|
|
|
assert_selector "h1", text: "Writebook"
|
|
end
|
|
|
|
test "create a card" do
|
|
sign_in_as(users(:david))
|
|
|
|
visit board_url(boards(:writebook))
|
|
click_on "Add a card"
|
|
fill_in "card_title", with: "Hello, world!"
|
|
fill_in_lexxy with: "I am editing this thing"
|
|
click_on "Create card"
|
|
|
|
assert_selector "h3", text: "Hello, world!"
|
|
end
|
|
|
|
test "active storage attachments" do
|
|
sign_in_as(users(:david))
|
|
|
|
visit card_url(cards(:layout))
|
|
fill_in_lexxy with: "Here is a comment"
|
|
attach_file file_fixture("moon.jpg") do
|
|
click_on "Upload file"
|
|
end
|
|
|
|
within("form lexxy-editor figure.attachment[data-content-type='image/jpeg']") do
|
|
assert_selector "img[src*='/rails/active_storage']"
|
|
assert_selector "figcaption textarea[placeholder='moon.jpg']"
|
|
end
|
|
|
|
click_on "Post"
|
|
|
|
within("action-text-attachment") do
|
|
assert_selector "a img[src*='/rails/active_storage']"
|
|
assert_selector "figcaption span.attachment__name", text: "moon.jpg"
|
|
end
|
|
|
|
# Click the image to open the lightbox
|
|
find("action-text-attachment figure.attachment a:has(img)").click
|
|
|
|
assert_selector "dialog.lightbox[open]"
|
|
within("dialog.lightbox") do
|
|
assert_selector "img.lightbox__image[src*='/rails/active_storage']"
|
|
end
|
|
end
|
|
|
|
test "dismissing notifications" do
|
|
sign_in_as(users(:david))
|
|
|
|
notification = notifications(:logo_mentioned_david)
|
|
|
|
assert_selector "div##{dom_id(notification)}"
|
|
|
|
within_window(open_new_window) { visit card_url(notification.card) }
|
|
|
|
assert_no_selector "div##{dom_id(notification)}"
|
|
end
|
|
|
|
test "markdown paste adds block spacing" do
|
|
sign_in_as(users(:david))
|
|
|
|
visit card_url(cards(:layout))
|
|
find("lexxy-editor").click
|
|
paste_markdown("Hello\n\nWorld")
|
|
|
|
within("lexxy-editor") do
|
|
assert_selector "p", text: "Hello"
|
|
assert_selector "p br", visible: :all
|
|
assert_selector "p", text: "World"
|
|
end
|
|
end
|
|
|
|
test "markdown paste preserves line breaks" do
|
|
sign_in_as(users(:david))
|
|
|
|
visit card_url(cards(:layout))
|
|
find("lexxy-editor").click
|
|
paste_markdown("Hello\nWorld")
|
|
|
|
inner_html = find("lexxy-editor p", text: "Hello").native.property("innerHTML")
|
|
children = Nokogiri::HTML5.fragment(inner_html).children
|
|
assert_pattern do
|
|
children => [
|
|
{ name: "span", inner_html: "Hello" },
|
|
{ name: "br" },
|
|
{ name: "span", inner_html: "World" }
|
|
]
|
|
end
|
|
end
|
|
|
|
test "dragging card to a new column" do
|
|
sign_in_as(users(:david))
|
|
|
|
card = Card.find("03axhd1h3qgnsffqplkyf28fv")
|
|
assert_nil(card.column)
|
|
|
|
visit board_url(boards(:writebook))
|
|
|
|
card_el = page.find("#article_card_03axhd1h3qgnsffqplkyf28fv")
|
|
column_el = page.find("#column_03axmcferfmbnv4qg816nw6bg")
|
|
cards_count = column_el.find(".cards__expander-count").text.to_i
|
|
|
|
card_el.drag_to(column_el)
|
|
|
|
column_el.find(".cards__expander-count", text: cards_count + 1)
|
|
assert_equal("Triage", card.reload.column.name)
|
|
end
|
|
|
|
private
|
|
def sign_in_as(user)
|
|
visit session_transfer_url(user.identity.transfer_id, script_name: nil)
|
|
assert_selector "h1", text: "Latest Activity"
|
|
end
|
|
|
|
def fill_in_lexxy(selector = "lexxy-editor", with:)
|
|
editor_element = find(selector)
|
|
editor_element.set with
|
|
page.execute_script("arguments[0].value = '#{with}'", editor_element)
|
|
end
|
|
|
|
def paste_markdown(markdown)
|
|
page.execute_script(<<~JS, markdown)
|
|
const dt = new DataTransfer();
|
|
dt.setData("text/plain", arguments[0]);
|
|
document.activeElement.dispatchEvent(new ClipboardEvent("paste", { clipboardData: dt, bubbles: true }));
|
|
JS
|
|
end
|
|
end
|