diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/web/admin_api/controllers/announcement_controller_test.exs | 80 | ||||
| -rw-r--r-- | test/support/factory.ex | 6 | 
2 files changed, 84 insertions, 2 deletions
diff --git a/test/pleroma/web/admin_api/controllers/announcement_controller_test.exs b/test/pleroma/web/admin_api/controllers/announcement_controller_test.exs index 5c9d50120..c6b2163d0 100644 --- a/test/pleroma/web/admin_api/controllers/announcement_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/announcement_controller_test.exs @@ -69,11 +69,89 @@ defmodule Pleroma.Web.AdminAPI.AnnouncementControllerTest do        _response =          conn -        |> get("/api/v1/pleroma/admin/announcements/#{id}xxx") +        |> delete("/api/v1/pleroma/admin/announcements/#{id}xxx") +        |> json_response_and_validate_schema(:not_found) + +      assert %{id: ^id} = Pleroma.Announcement.get_by_id(id) +    end +  end + +  describe "PATCH /api/v1/pleroma/admin/announcements/:id" do +    test "it returns not found for non-existent id", %{conn: conn} do +      %{id: id} = insert(:announcement) + +      _response = +        conn +        |> put_req_header("content-type", "application/json") +        |> patch("/api/v1/pleroma/admin/announcements/#{id}xxx", %{})          |> json_response_and_validate_schema(:not_found)        assert %{id: ^id} = Pleroma.Announcement.get_by_id(id)      end + +    test "it updates a field", %{conn: conn} do +      %{id: id} = insert(:announcement) + +      now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second) +      starts_at = NaiveDateTime.add(now, -10, :second) + +      _response = +        conn +        |> put_req_header("content-type", "application/json") +        |> patch("/api/v1/pleroma/admin/announcements/#{id}", %{ +          starts_at: NaiveDateTime.to_iso8601(starts_at) +        }) +        |> json_response_and_validate_schema(:ok) + +      new = Pleroma.Announcement.get_by_id(id) + +      assert NaiveDateTime.compare(new.starts_at, starts_at) == :eq +    end + +    test "it updates a data field", %{conn: conn} do +      %{id: id} = announcement = insert(:announcement, data: %{"all_day" => true}) + +      assert announcement.data["all_day"] == true + +      new_content = "new content" + +      response = +        conn +        |> put_req_header("content-type", "application/json") +        |> patch("/api/v1/pleroma/admin/announcements/#{id}", %{ +          content: new_content +        }) +        |> json_response_and_validate_schema(:ok) + +      assert response["content"] == new_content +      assert response["all_day"] == true + +      new = Pleroma.Announcement.get_by_id(id) + +      assert new.data["content"] == new_content +      assert new.data["all_day"] == true +    end + +    test "it nullifies a nullable field", %{conn: conn} do +      now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second) +      starts_at = NaiveDateTime.add(now, -10, :second) + +      %{id: id} = insert(:announcement, starts_at: starts_at) + +      response = +        conn +        |> put_req_header("content-type", "application/json") +        |> patch("/api/v1/pleroma/admin/announcements/#{id}", %{ +          starts_at: nil +        }) +        |> json_response_and_validate_schema(:ok) + +      assert response["starts_at"] == nil + +      new = Pleroma.Announcement.get_by_id(id) + +      assert new.starts_at == nil +    end    end    describe "POST /api/v1/pleroma/admin/announcements" do diff --git a/test/support/factory.ex b/test/support/factory.ex index 64b0049ac..d28a56345 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -628,7 +628,11 @@ defmodule Pleroma.Factory do      }    end -  def announcement_factory(params \\ %{}, data \\ %{}) do +  def announcement_factory(params \\ %{}) do +    data = Map.get(params, :data, %{}) + +    {_, params} = Map.pop(params, :data) +      %Pleroma.Announcement{        data: Map.merge(%{"content" => "test announcement", "all_day" => false}, data)      }  | 
