From 81b5a844a2a155e28c497a8ce671eb5f02803e5d Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Sat, 1 Sep 2018 16:07:22 +0200 Subject: Import shardweb --- .../test/shard_web/channels/room_channel_test.exs | 28 ++++++++++++++++++ .../shard_web/controllers/page_controller_test.exs | 8 +++++ shardweb/test/shard_web/views/error_view_test.exs | 16 ++++++++++ shardweb/test/shard_web/views/layout_view_test.exs | 3 ++ shardweb/test/shard_web/views/page_view_test.exs | 3 ++ shardweb/test/support/channel_case.ex | 33 +++++++++++++++++++++ shardweb/test/support/conn_case.ex | 34 ++++++++++++++++++++++ shardweb/test/test_helper.exs | 2 ++ 8 files changed, 127 insertions(+) create mode 100644 shardweb/test/shard_web/channels/room_channel_test.exs create mode 100644 shardweb/test/shard_web/controllers/page_controller_test.exs create mode 100644 shardweb/test/shard_web/views/error_view_test.exs create mode 100644 shardweb/test/shard_web/views/layout_view_test.exs create mode 100644 shardweb/test/shard_web/views/page_view_test.exs create mode 100644 shardweb/test/support/channel_case.ex create mode 100644 shardweb/test/support/conn_case.ex create mode 100644 shardweb/test/test_helper.exs (limited to 'shardweb/test') diff --git a/shardweb/test/shard_web/channels/room_channel_test.exs b/shardweb/test/shard_web/channels/room_channel_test.exs new file mode 100644 index 0000000..f6241d8 --- /dev/null +++ b/shardweb/test/shard_web/channels/room_channel_test.exs @@ -0,0 +1,28 @@ +defmodule ShardWeb.RoomChannelTest do + use ShardWeb.ChannelCase + + alias ShardWeb.RoomChannel + + setup do + {:ok, _, socket} = + socket("user_id", %{some: :assign}) + |> subscribe_and_join(RoomChannel, "room:lobby") + + {:ok, socket: socket} + end + + test "ping replies with status ok", %{socket: socket} do + ref = push socket, "ping", %{"hello" => "there"} + assert_reply ref, :ok, %{"hello" => "there"} + end + + test "shout broadcasts to room:lobby", %{socket: socket} do + push socket, "shout", %{"hello" => "all"} + assert_broadcast "shout", %{"hello" => "all"} + end + + test "broadcasts are pushed to the client", %{socket: socket} do + broadcast_from! socket, "broadcast", %{"some" => "data"} + assert_push "broadcast", %{"some" => "data"} + end +end diff --git a/shardweb/test/shard_web/controllers/page_controller_test.exs b/shardweb/test/shard_web/controllers/page_controller_test.exs new file mode 100644 index 0000000..225eb76 --- /dev/null +++ b/shardweb/test/shard_web/controllers/page_controller_test.exs @@ -0,0 +1,8 @@ +defmodule ShardWeb.PageControllerTest do + use ShardWeb.ConnCase + + test "GET /", %{conn: conn} do + conn = get conn, "/" + assert html_response(conn, 200) =~ "Welcome to Phoenix!" + end +end diff --git a/shardweb/test/shard_web/views/error_view_test.exs b/shardweb/test/shard_web/views/error_view_test.exs new file mode 100644 index 0000000..a174f48 --- /dev/null +++ b/shardweb/test/shard_web/views/error_view_test.exs @@ -0,0 +1,16 @@ +defmodule ShardWeb.ErrorViewTest do + use ShardWeb.ConnCase, async: true + + # Bring render/3 and render_to_string/3 for testing custom views + import Phoenix.View + + test "renders 404.html" do + assert render_to_string(ShardWeb.ErrorView, "404.html", []) == + "Not Found" + end + + test "renders 500.html" do + assert render_to_string(ShardWeb.ErrorView, "500.html", []) == + "Internal Server Error" + end +end diff --git a/shardweb/test/shard_web/views/layout_view_test.exs b/shardweb/test/shard_web/views/layout_view_test.exs new file mode 100644 index 0000000..2e94c0e --- /dev/null +++ b/shardweb/test/shard_web/views/layout_view_test.exs @@ -0,0 +1,3 @@ +defmodule ShardWeb.LayoutViewTest do + use ShardWeb.ConnCase, async: true +end diff --git a/shardweb/test/shard_web/views/page_view_test.exs b/shardweb/test/shard_web/views/page_view_test.exs new file mode 100644 index 0000000..a4b5ba5 --- /dev/null +++ b/shardweb/test/shard_web/views/page_view_test.exs @@ -0,0 +1,3 @@ +defmodule ShardWeb.PageViewTest do + use ShardWeb.ConnCase, async: true +end diff --git a/shardweb/test/support/channel_case.ex b/shardweb/test/support/channel_case.ex new file mode 100644 index 0000000..eb16bc9 --- /dev/null +++ b/shardweb/test/support/channel_case.ex @@ -0,0 +1,33 @@ +defmodule ShardWeb.ChannelCase do + @moduledoc """ + This module defines the test case to be used by + channel tests. + + Such tests rely on `Phoenix.ChannelTest` and also + import other functionality to make it easier + to build common datastructures and query the data layer. + + Finally, if the test case interacts with the database, + it cannot be async. For this reason, every test runs + inside a transaction which is reset at the beginning + of the test unless the test case is marked as async. + """ + + use ExUnit.CaseTemplate + + using do + quote do + # Import conveniences for testing with channels + use Phoenix.ChannelTest + + # The default endpoint for testing + @endpoint ShardWeb.Endpoint + end + end + + + setup _tags do + :ok + end + +end diff --git a/shardweb/test/support/conn_case.ex b/shardweb/test/support/conn_case.ex new file mode 100644 index 0000000..2b7cb9e --- /dev/null +++ b/shardweb/test/support/conn_case.ex @@ -0,0 +1,34 @@ +defmodule ShardWeb.ConnCase do + @moduledoc """ + This module defines the test case to be used by + tests that require setting up a connection. + + Such tests rely on `Phoenix.ConnTest` and also + import other functionality to make it easier + to build common datastructures and query the data layer. + + Finally, if the test case interacts with the database, + it cannot be async. For this reason, every test runs + inside a transaction which is reset at the beginning + of the test unless the test case is marked as async. + """ + + use ExUnit.CaseTemplate + + using do + quote do + # Import conveniences for testing with connections + use Phoenix.ConnTest + import ShardWeb.Router.Helpers + + # The default endpoint for testing + @endpoint ShardWeb.Endpoint + end + end + + + setup _tags do + {:ok, conn: Phoenix.ConnTest.build_conn()} + end + +end diff --git a/shardweb/test/test_helper.exs b/shardweb/test/test_helper.exs new file mode 100644 index 0000000..0a76a58 --- /dev/null +++ b/shardweb/test/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.start() + -- cgit v1.2.3