defmodule MicrowavepropWeb.BeaconMonitorControllerTest do use MicrowavepropWeb.ConnCase, async: true import Microwaveprop.AccountsFixtures alias Microwaveprop.BeaconMonitors setup :register_and_log_in_user describe "DELETE /users/beacon-monitors/:id" do test "deletes a monitor owned by the current user", %{conn: conn, user: user} do {:ok, monitor} = BeaconMonitors.create_monitor(user, %{"name" => "Bye"}) conn = delete(conn, ~p"/users/beacon-monitors/#{monitor.id}") assert redirected_to(conn) == ~p"/users/settings" assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "deleted" assert BeaconMonitors.list_monitors_for_user(user) == [] end test "does not delete a monitor owned by another user", %{conn: conn} do other = user_fixture() {:ok, monitor} = BeaconMonitors.create_monitor(other, %{"name" => "Theirs"}) conn = delete(conn, ~p"/users/beacon-monitors/#{monitor.id}") assert redirected_to(conn) == ~p"/users/settings" assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "not found" assert [_] = BeaconMonitors.list_monitors_for_user(other) end end end