Files
ubicloud/spec/serializers/postgres_spec.rb
Burak Yucesoy 69ecb12e8d Combine all serializers under top level namespace
We merged all web and api serializers. There is no need for separate namespaces
anymore.
2024-05-28 21:42:31 +03:00

45 lines
2.5 KiB
Ruby

# frozen_string_literal: true
require_relative "../spec_helper"
RSpec.describe Serializers::Postgres do
let(:pg) { PostgresResource.new(name: "pg-name").tap { _1.id = "69c0f4cd-99c1-8ed0-acfe-7b013ce2fa0b" } }
it "can serialize when no earliest/latest restore times" do
expect(pg).to receive(:strand).and_return(instance_double(Strand, label: "start")).at_least(:once)
expect(pg).to receive(:timeline).and_return(instance_double(PostgresTimeline, earliest_restore_time: nil, latest_restore_time: nil)).exactly(3)
expect(pg).to receive(:representative_server).and_return(instance_double(PostgresServer, primary?: true, vm: nil, strand: nil)).at_least(:once)
data = described_class.serialize(pg, {detailed: true})
expect(data[:earliest_restore_time]).to be_nil
expect(data[:latest_restore_time]).to be_nil
end
it "can serialize when have earliest/latest restore times" do
time = Time.now
expect(pg).to receive(:strand).and_return(instance_double(Strand, label: "start")).at_least(:once)
expect(pg).to receive(:timeline).and_return(instance_double(PostgresTimeline, earliest_restore_time: time, latest_restore_time: time)).exactly(3)
expect(pg).to receive(:representative_server).and_return(instance_double(PostgresServer, primary?: true, vm: nil, strand: nil)).at_least(:once)
data = described_class.serialize(pg, {detailed: true})
expect(data[:earliest_restore_time]).to eq(time.iso8601)
expect(data[:latest_restore_time]).to eq(time.iso8601)
end
it "can serialize when not primary" do
expect(pg).to receive(:strand).and_return(instance_double(Strand, label: "start")).at_least(:once)
expect(pg).to receive(:representative_server).and_return(instance_double(PostgresServer, primary?: false, vm: nil, strand: nil)).at_least(:once)
data = described_class.serialize(pg, {detailed: true})
expect(data[:earliest_restore_time]).to be_nil
expect(data[:latest_restore_time]).to be_nil
end
it "can serialize when there is no server" do
expect(pg).to receive(:strand).and_return(instance_double(Strand, label: "start")).at_least(:once)
expect(pg).to receive(:timeline).and_return(instance_double(PostgresTimeline, earliest_restore_time: nil, latest_restore_time: nil))
expect(pg).to receive(:representative_server).and_return(nil).at_least(:once)
data = described_class.serialize(pg, {detailed: true})
expect(data[:primary?]).to be_nil
expect(data[:earliest_restore_time]).to be_nil
expect(data[:latest_restore_time]).to be_nil
end
end