@@ -0,0 +1,101 @@
|
||||
defmodule Mobilizon.Federation.ActivityStream.Converter.EventMetadataTest do
|
||||
@moduledoc """
|
||||
Module to test converting from EventMetadata to AS
|
||||
"""
|
||||
use Mobilizon.DataCase
|
||||
import Mobilizon.Factory
|
||||
alias Mobilizon.Events.EventMetadata
|
||||
alias Mobilizon.Federation.ActivityStream.Converter.EventMetadata, as: EventMetadataConverter
|
||||
|
||||
@property_value "PropertyValue"
|
||||
|
||||
describe "metadata_to_as/1" do
|
||||
test "convert a simple metadata" do
|
||||
%EventMetadata{} = metadata = build(:event_metadata)
|
||||
|
||||
assert %{"propertyID" => metadata.key, "value" => metadata.value, "type" => @property_value} ==
|
||||
EventMetadataConverter.metadata_to_as(metadata)
|
||||
end
|
||||
|
||||
test "convert a boolean" do
|
||||
%EventMetadata{} = metadata = build(:event_metadata, type: :boolean, value: "false")
|
||||
|
||||
assert %{"propertyID" => metadata.key, "value" => false, "type" => @property_value} ==
|
||||
EventMetadataConverter.metadata_to_as(metadata)
|
||||
end
|
||||
|
||||
test "convert an integer" do
|
||||
%EventMetadata{} = metadata = build(:event_metadata, type: :integer, value: "36")
|
||||
|
||||
assert %{"propertyID" => metadata.key, "value" => 36, "type" => @property_value} ==
|
||||
EventMetadataConverter.metadata_to_as(metadata)
|
||||
end
|
||||
|
||||
test "convert a float" do
|
||||
%EventMetadata{} = metadata = build(:event_metadata, type: :float, value: "36.53")
|
||||
|
||||
assert %{"propertyID" => metadata.key, "value" => 36.53, "type" => @property_value} ==
|
||||
EventMetadataConverter.metadata_to_as(metadata)
|
||||
end
|
||||
|
||||
test "convert custom metadata with title" do
|
||||
%EventMetadata{} = metadata = build(:event_metadata, title: "hello")
|
||||
|
||||
assert %{
|
||||
"propertyID" => metadata.key,
|
||||
"value" => metadata.value,
|
||||
"name" => "hello",
|
||||
"type" => @property_value
|
||||
} ==
|
||||
EventMetadataConverter.metadata_to_as(metadata)
|
||||
end
|
||||
end
|
||||
|
||||
describe "as_to_metadata/1" do
|
||||
test "parse a simple metadata" do
|
||||
assert %{key: "somekey", value: "somevalue", type: :string} ==
|
||||
EventMetadataConverter.as_to_metadata(%{
|
||||
"propertyID" => "somekey",
|
||||
"value" => "somevalue",
|
||||
"type" => @property_value
|
||||
})
|
||||
end
|
||||
|
||||
test "parse a boolean metadata" do
|
||||
assert %{key: "somekey", value: "false", type: :boolean} ==
|
||||
EventMetadataConverter.as_to_metadata(%{
|
||||
"propertyID" => "somekey",
|
||||
"value" => false,
|
||||
"type" => @property_value
|
||||
})
|
||||
end
|
||||
|
||||
test "parse an integer metadata" do
|
||||
assert %{key: "somekey", value: "4", type: :integer} ==
|
||||
EventMetadataConverter.as_to_metadata(%{
|
||||
"propertyID" => "somekey",
|
||||
"value" => 4,
|
||||
"type" => @property_value
|
||||
})
|
||||
end
|
||||
|
||||
test "parse a float metadata" do
|
||||
assert %{key: "somekey", value: "4.36", type: :float} ==
|
||||
EventMetadataConverter.as_to_metadata(%{
|
||||
"propertyID" => "somekey",
|
||||
"value" => 4.36,
|
||||
"type" => @property_value
|
||||
})
|
||||
end
|
||||
|
||||
test "parse a custom metadata with title" do
|
||||
assert %{key: "somekey", value: "somevalue", type: :string, title: "title"} ==
|
||||
EventMetadataConverter.as_to_metadata(%{
|
||||
"propertyID" => "somekey",
|
||||
"value" => "somevalue",
|
||||
"name" => "title",
|
||||
"type" => @property_value
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -183,6 +183,7 @@ defmodule Mobilizon.Factory do
|
||||
visibility: :public,
|
||||
tags: build_list(3, :tag),
|
||||
mentions: [],
|
||||
metadata: build_list(2, :event_metadata),
|
||||
local: true,
|
||||
publish_at: DateTime.utc_now(),
|
||||
url: Routes.page_url(Endpoint, :event, uuid),
|
||||
@@ -458,4 +459,12 @@ defmodule Mobilizon.Factory do
|
||||
uri: sequence("https://someshare.uri/p/12")
|
||||
}
|
||||
end
|
||||
|
||||
def event_metadata_factory do
|
||||
%Mobilizon.Events.EventMetadata{
|
||||
key: sequence("mz:custom:something"),
|
||||
value: sequence("a value"),
|
||||
type: :string
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user