First
[anni] / test / pleroma / web / pleroma_api / controllers / scrobble_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do
6   use Pleroma.Web.ConnCase, async: true
7
8   alias Pleroma.Web.CommonAPI
9
10   describe "POST /api/v1/pleroma/scrobble" do
11     test "works correctly" do
12       %{conn: conn} = oauth_access(["write"])
13
14       conn =
15         conn
16         |> put_req_header("content-type", "application/json")
17         |> post("/api/v1/pleroma/scrobble", %{
18           "title" => "lain radio episode 1",
19           "artist" => "lain",
20           "album" => "lain radio",
21           "length" => "180000"
22         })
23
24       assert %{"title" => "lain radio episode 1"} = json_response_and_validate_schema(conn, 200)
25     end
26   end
27
28   describe "GET /api/v1/pleroma/accounts/:id/scrobbles" do
29     test "works correctly" do
30       %{user: user, conn: conn} = oauth_access(["read"])
31
32       {:ok, _activity} =
33         CommonAPI.listen(user, %{
34           title: "lain radio episode 1",
35           artist: "lain",
36           album: "lain radio"
37         })
38
39       {:ok, _activity} =
40         CommonAPI.listen(user, %{
41           title: "lain radio episode 2",
42           artist: "lain",
43           album: "lain radio"
44         })
45
46       {:ok, _activity} =
47         CommonAPI.listen(user, %{
48           title: "lain radio episode 3",
49           artist: "lain",
50           album: "lain radio"
51         })
52
53       conn = get(conn, "/api/v1/pleroma/accounts/#{user.id}/scrobbles")
54
55       result = json_response_and_validate_schema(conn, 200)
56
57       assert length(result) == 3
58     end
59   end
60 end