aboutsummaryrefslogtreecommitdiff
path: root/shardweb/test
diff options
context:
space:
mode:
Diffstat (limited to 'shardweb/test')
-rw-r--r--shardweb/test/shard_web/channels/room_channel_test.exs28
-rw-r--r--shardweb/test/shard_web/controllers/page_controller_test.exs8
-rw-r--r--shardweb/test/shard_web/views/error_view_test.exs16
-rw-r--r--shardweb/test/shard_web/views/layout_view_test.exs3
-rw-r--r--shardweb/test/shard_web/views/page_view_test.exs3
-rw-r--r--shardweb/test/support/channel_case.ex33
-rw-r--r--shardweb/test/support/conn_case.ex34
-rw-r--r--shardweb/test/test_helper.exs2
8 files changed, 127 insertions, 0 deletions
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()
+