add Properties tests, handle bookmarks and likes

This commit is contained in:
Inhji 2024-12-05 15:36:18 +01:00
parent 7b19e42f57
commit 12005618a9
3 changed files with 66 additions and 1 deletions

View file

@ -1,3 +1,9 @@
defmodule PlugIndie.Post do defmodule PlugIndie.Post do
defstruct [:type, :title, :content] defstruct [
:bookmark_of,
:content,
:like_of,
:title,
:type
]
end end

View file

@ -13,6 +13,22 @@ defmodule PlugIndie.Properties do
content: content content: content
}} }}
:bookmark ->
{:ok,
%PlugIndie.Post{
type: type,
title: title,
content: content,
bookmark_of: get_bookmarked_url(properties)
}}
:like ->
{:ok,
%PlugIndie.Post{
type: type,
like_of: get_liked_url(properties)
}}
:unknown -> :unknown ->
{:error, :parse_error} {:error, :parse_error}
end end

43
test/properties_test.exs Normal file
View file

@ -0,0 +1,43 @@
defmodule PropertiesTest do
use ExUnit.Case
doctest PlugIndie.Properties
import PlugIndie.Properties, only: [parse: 1]
test "parse/1 identifies a note" do
props = %{
"content" => ["Hello World!"]
}
assert {:ok,
%PlugIndie.Post{
type: :note,
content: "Hello World!"
}} == parse(props)
end
test "parse/1 identifies a bookmark" do
props = %{
"content" => ["Hello World!"],
"bookmark-of" => ["https://100r.co"]
}
assert {:ok,
%PlugIndie.Post{
type: :bookmark,
content: "Hello World!",
bookmark_of: "https://100r.co"
}} == parse(props)
end
test "parse/1 identifies a like" do
props = %{
"like-of" => ["https://100r.co"]
}
assert {:ok,
%PlugIndie.Post{
type: :like,
like_of: "https://100r.co"
}} == parse(props)
end
end