Files
adamantium/spec/adamantium/webmention_request_parser_spec.rb

42 lines
1.4 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Adamantium::WebmentionRequestParser do
include Dry::Monads[:result]
subject { described_class.new }
let(:reply_json) {
'{
"type": "entry",
"author": {
"type": "card",
"name": "nitza",
"photo": "",
"url": "https://micro.blog/nitza"
},
"url": "https://micro.blog/nitza/20554783",
"published": "2023-07-05T09:44:41+00:00",
"wm-received": "2023-07-05T09:44:48Z",
"wm-id": 1692950,
"wm-source": "https://micro.blog/nitza/20554783",
"wm-target": "https://dnitza.com/post/e413397a-9912-4914-a0d1-3d1c324e014b",
"content": {
"html": "<p><a href=\"https://micro.blog/example\">@example</a> hah! I thought the same thing — but this is the most affordable thing that Teenage Engineering makes 😅</p>",
"text": "@example hah! I thought the same thing — but this is the most affordable thing that Teenage Engineering makes 😅"
},
"in-reply-to": "https://dnitza.com/post/e413397a-9912-4914-a0d1-3d1c324e014b",
"wm-property": "in-reply-to",
"wm-private": false
}'
}
context "reply" do
it "parses a reply" do
expect(subject.call(params: JSON.parse(reply_json, symbolize_names: true))).to be_success
end
it "fails to parses a reply" do
expect(subject.call(params: JSON.parse("{ }", symbolize_names: true))).to be_failure
end
end
end