Pigeon-Ruby/spec/pigeon/draft_spec.rb

60 lines
1.4 KiB
Ruby

require "spec_helper"
RSpec.describe Pigeon::Draft do
let(:db) do
db = Pigeon::Database.new
db.reset_database
db
end
let(:message) do
db.reset_draft
db.new_draft(kind: "unit_test")
logo = File.read("./logo.png")
db.update_draft("a", "bar")
db.update_draft("b", db.add_blob(logo))
db.get_draft
end
MSG = [
"author DRAFT",
"kind unit_test",
"prev DRAFT",
"depth DRAFT",
"lipmaa DRAFT",
"\na:\"bar\"",
"b:&CHHABX8Q9D9Q0BY2BBZ6FA7SMAFNE9GGMSDTZVZZC9TK2N9F15QG.sha256",
"\n",
].join("\n")
it "renders a message" do
pk = db.who_am_i.multihash
actual = message.render_as_draft
expected = MSG.gsub("___", pk)
expect(actual).to start_with(expected)
end
it "creates a new message" do
db.reset_draft
db.new_draft(kind: "unit_test")
hash = db.add_blob(File.read("./logo.png"))
expectations = {
kind: "unit_test",
body: {
"a" => "bar".to_json,
"b" => hash,
},
}
db.update_draft("a", "bar")
db.update_draft("b", hash)
expect(message["a"]).to eq(expectations.dig(:body, "a"))
expect(message["b"]).to eq(expectations.dig(:body, "b"))
expect(message.kind).to eq("unit_test")
expect(message.body).to eq(expectations.fetch(:body))
expectations.map do |k, v|
left = db.get_draft.send(k)
expect(left).to eq(v)
end
end
end