summaryrefslogtreecommitdiff
path: root/test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs
blob: bca7a32b998a0a44e8adeb96c075de40be59eacc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidatorTest do
  use Pleroma.DataCase, async: true

  alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator

  test "it validates an Edition" do
    edition = %{
      "@context" => "https://www.w3.org/ns/activitystreams",
      "asin" => "",
      "authors" => ["https://bookwyrm.com/author/3"],
      "cover" => %{
        "@context" => "https://www.w3.org/ns/activitystreams",
        "name" => "Piranesi (2020, Bloomsbury Publishing)",
        "type" => "Document",
        "url" => "https://bookwyrm.com/images/covers/9fd28af7-ebb8-4df3-80c8-28488fc5349f.jpeg"
      },
      "description" => "",
      "editionRank" => 7,
      "firstPublishedDate" => "",
      "goodreadsKey" => "",
      "id" => "https://bookwyrm.com/book/10",
      "isbn10" => "163557563X",
      "isbn13" => "9781635575637",
      "languages" => ["English"],
      "librarythingKey" => "",
      "oclcNumber" => "",
      "openlibraryKey" => "OL28300471M",
      "pages" => 272,
      "physicalFormat" => "",
      "physicalFormatDetail" => "hardcover",
      "publishedDate" => "2020-09-15T00:00:00+00:00",
      "publishers" => ["Bloomsbury Publishing"],
      "series" => "",
      "seriesNumber" => "",
      "sortTitle" => "",
      "subjectPlaces" => [],
      "subjects" => [],
      "subtitle" => "",
      "title" => "Piranesi",
      "type" => "Edition",
      "work" => "https://bookwyrm.com/book/9"
    }

    assert %{valid?: true, changes: %{name: "Piranesi"}} = TagValidator.cast_and_validate(edition)
  end

  test "it should validate an author" do
    author = %{
      "@context" => "https://www.w3.org/ns/activitystreams",
      "aliases" => [],
      "bio" => "snipped",
      "bnfId" => "14603397h",
      "born" => "1959-11-01T00:00:00+00:00",
      "goodreadsKey" => "",
      "id" => "https://bookwyrm.com/author/3",
      "isni" => "0000 0001 0877 1086",
      "librarythingKey" => "",
      "name" => "Susanna Clarke",
      "openlibraryKey" => "OL1387961A",
      "type" => "Author",
      "viafId" => "19931023",
      "wikipediaLink" => ""
    }

    assert %{valid?: true, changes: %{name: "Susanna Clarke"}} =
             TagValidator.cast_and_validate(author)
  end

  test "it should validate a work" do
    work = %{
      "@context" => "https://www.w3.org/ns/activitystreams",
      "authors" => ["https://bookwyrm.com/author/3"],
      "cover" => %{
        "@context" => "https://www.w3.org/ns/activitystreams",
        "name" => "Piranesi",
        "type" => "Document",
        "url" => "https://bookwyrm.com/images/covers/e950ac10-feaf-4c3e-b2d3-de20d3a28329.jpeg"
      },
      "description" => "snipped",
      "editions" => [
        "https://bookwyrm.com/book/12",
        "https://bookwyrm.com/book/10",
        "https://bookwyrm.com/book/14",
        "https://bookwyrm.com/book/13",
        "https://bookwyrm.com/book/11",
        "https://bookwyrm.com/book/15"
      ],
      "firstPublishedDate" => "",
      "goodreadsKey" => "",
      "id" => "https://bookwyrm.com/book/9",
      "languages" => [],
      "lccn" => "",
      "librarythingKey" => "",
      "openlibraryKey" => "OL20893680W",
      "publishedDate" => "",
      "series" => "",
      "seriesNumber" => "",
      "sortTitle" => "",
      "subjectPlaces" => [],
      "subjects" => ["English literature"],
      "subtitle" => "",
      "title" => "Piranesi",
      "type" => "Work"
    }

    assert %{valid?: true, changes: %{name: "Piranesi"}} = TagValidator.cast_and_validate(work)
  end
end