From 38e1e03b260d6a0e86987188fbb1f47f8c841ff6 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Fri, 6 Sep 2024 12:57:53 +0300 Subject: [PATCH] Add a E2E test to create new link without a random shorten. --- .../live/features/link_live_test.exs | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/link_shortener_web/live/features/link_live_test.exs diff --git a/test/link_shortener_web/live/features/link_live_test.exs b/test/link_shortener_web/live/features/link_live_test.exs new file mode 100644 index 0000000..a57df10 --- /dev/null +++ b/test/link_shortener_web/live/features/link_live_test.exs @@ -0,0 +1,54 @@ +defmodule LinkShortenerWeb.Features.LinkLiveTest do + use ExUnit.Case + use Wallaby.Feature + + import LinkShortener.LinksFixtures + import LinkShortener.AccountsFixtures + + alias LinkShortener.Factories.UserFactory + alias LinkShortener.Factories.LinkFactory + + alias LinkShortener.Links + alias LinkShortener.Links.Link + + @create_attrs %{name: "some name", shorten: "some shorten", url: "some url"} + @update_attrs %{name: "some updated name", shorten: "some updated shorten", url: "some updated url"} + @invalid_attrs %{name: nil, shorten: nil, url: nil} + + setup %{session: session} do + user_attrs = UserFactory.user_attrs_factory() + user = user_fixture(user_attrs) + link = LinkFactory.create_link(%{user_id: user.id}) + + %{session: log_in_user(session, user_attrs), + user: user, + user_attrs: user_attrs, + link: link} + end + + describe "Index" do + test "saves new link without a random shorten", %{session: session} do + new_link = LinkFactory.link_attrs_factory() + + session + |> visit("/links") + |> click(Query.button("New Link")) + |> click(Query.checkbox("Random shorten")) + |> fill_in(Query.text_field("Name"), with: new_link.name) + |> fill_in(Query.text_field("Url"), with: new_link.url) + |> fill_in(Query.text_field("Shorten"), with: new_link.shorten) + |> click(Query.button("Save Link")) + |> assert_has(Query.xpath("//*[@id='flash-info']", text: "Link created successfully")) + + assert Links.get_one_by_shorten(new_link.shorten) + end + end + + def log_in_user(session, user) do + session + |> visit("/users/log_in/") + |> fill_in(Query.text_field("Email"), with: user.email) + |> fill_in(Query.text_field("Password"), with: user.password) + |> click(Query.button("Log in")) + end +end