Pigeon-Ruby/spec/pigeon/template_spec.rb

37 lines
1000 B
Ruby

require "spec_helper"
RSpec.describe Pigeon::MessageSerializer do
SHIM_ATTRS = %i[author body kind depth prev signature lipmaa].freeze
MessageShim = Struct.new(*SHIM_ATTRS)
TOP_HALF = ["author FAKE_AUTHOR",
"\nkind FAKE_KIND",
"\nprev NONE",
"\ndepth 23",
"\nlipmaa 22",
"\n\nfoo:\"bar\"\n\n"].join("")
BOTTOM_HALF = "signature XYZ.sig.sha256"
EXPECTED_DRAFT = TOP_HALF + BOTTOM_HALF
class FakeLocalIdentity
def self.multihash
"FAKE_AUTHOR"
end
end
it "renders a draft" do
params = {
author: FakeLocalIdentity,
body: { foo: "bar".inspect },
kind: "FAKE_KIND",
depth: 23,
prev: nil,
signature: "XYZ.sig.sha256",
lipmaa: 22,
}.values
message = MessageShim.new(*params)
template = Pigeon::MessageSerializer.new(message)
expect(template.render).to eq(EXPECTED_DRAFT)
expect(template.render_without_signature).to eq(TOP_HALF)
end
end