Swap map with each
[akkoma] / test / web / mastodon_api / controllers / scheduled_activity_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
6 use Pleroma.Web.ConnCase, async: true
7
8 alias Pleroma.Repo
9 alias Pleroma.ScheduledActivity
10
11 import Pleroma.Factory
12
13 test "shows scheduled activities", %{conn: conn} do
14 user = insert(:user)
15 scheduled_activity_id1 = insert(:scheduled_activity, user: user).id |> to_string()
16 scheduled_activity_id2 = insert(:scheduled_activity, user: user).id |> to_string()
17 scheduled_activity_id3 = insert(:scheduled_activity, user: user).id |> to_string()
18 scheduled_activity_id4 = insert(:scheduled_activity, user: user).id |> to_string()
19
20 conn =
21 conn
22 |> assign(:user, user)
23
24 # min_id
25 conn_res =
26 conn
27 |> get("/api/v1/scheduled_statuses?limit=2&min_id=#{scheduled_activity_id1}")
28
29 result = json_response(conn_res, 200)
30 assert [%{"id" => ^scheduled_activity_id3}, %{"id" => ^scheduled_activity_id2}] = result
31
32 # since_id
33 conn_res =
34 conn
35 |> get("/api/v1/scheduled_statuses?limit=2&since_id=#{scheduled_activity_id1}")
36
37 result = json_response(conn_res, 200)
38 assert [%{"id" => ^scheduled_activity_id4}, %{"id" => ^scheduled_activity_id3}] = result
39
40 # max_id
41 conn_res =
42 conn
43 |> get("/api/v1/scheduled_statuses?limit=2&max_id=#{scheduled_activity_id4}")
44
45 result = json_response(conn_res, 200)
46 assert [%{"id" => ^scheduled_activity_id3}, %{"id" => ^scheduled_activity_id2}] = result
47 end
48
49 test "shows a scheduled activity", %{conn: conn} do
50 user = insert(:user)
51 scheduled_activity = insert(:scheduled_activity, user: user)
52
53 res_conn =
54 conn
55 |> assign(:user, user)
56 |> get("/api/v1/scheduled_statuses/#{scheduled_activity.id}")
57
58 assert %{"id" => scheduled_activity_id} = json_response(res_conn, 200)
59 assert scheduled_activity_id == scheduled_activity.id |> to_string()
60
61 res_conn =
62 conn
63 |> assign(:user, user)
64 |> get("/api/v1/scheduled_statuses/404")
65
66 assert %{"error" => "Record not found"} = json_response(res_conn, 404)
67 end
68
69 test "updates a scheduled activity", %{conn: conn} do
70 user = insert(:user)
71 scheduled_activity = insert(:scheduled_activity, user: user)
72
73 new_scheduled_at =
74 NaiveDateTime.add(NaiveDateTime.utc_now(), :timer.minutes(120), :millisecond)
75
76 res_conn =
77 conn
78 |> assign(:user, user)
79 |> put("/api/v1/scheduled_statuses/#{scheduled_activity.id}", %{
80 scheduled_at: new_scheduled_at
81 })
82
83 assert %{"scheduled_at" => expected_scheduled_at} = json_response(res_conn, 200)
84 assert expected_scheduled_at == Pleroma.Web.CommonAPI.Utils.to_masto_date(new_scheduled_at)
85
86 res_conn =
87 conn
88 |> assign(:user, user)
89 |> put("/api/v1/scheduled_statuses/404", %{scheduled_at: new_scheduled_at})
90
91 assert %{"error" => "Record not found"} = json_response(res_conn, 404)
92 end
93
94 test "deletes a scheduled activity", %{conn: conn} do
95 user = insert(:user)
96 scheduled_activity = insert(:scheduled_activity, user: user)
97
98 res_conn =
99 conn
100 |> assign(:user, user)
101 |> delete("/api/v1/scheduled_statuses/#{scheduled_activity.id}")
102
103 assert %{} = json_response(res_conn, 200)
104 assert nil == Repo.get(ScheduledActivity, scheduled_activity.id)
105
106 res_conn =
107 conn
108 |> assign(:user, user)
109 |> delete("/api/v1/scheduled_statuses/#{scheduled_activity.id}")
110
111 assert %{"error" => "Record not found"} = json_response(res_conn, 404)
112 end
113 end