From 8009b3772319004d2ae67869f58dff49b9d4ecee Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 3 Nov 2022 13:01:02 +1100 Subject: [PATCH] Spec the AddressSerializer before changing it --- .../api/address_serializer_spec.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 spec/serializers/api/address_serializer_spec.rb diff --git a/spec/serializers/api/address_serializer_spec.rb b/spec/serializers/api/address_serializer_spec.rb new file mode 100644 index 0000000000..96ffa9fec7 --- /dev/null +++ b/spec/serializers/api/address_serializer_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Api::AddressSerializer do + subject(:serializer) { described_class.new(address) } + let(:address) { build(:address) } + + describe "#country_name" do + it "provides the country's name" do + address.country.name = "Australia" + expect(serializer.country_name).to eq "Australia" + end + end + + describe "#state_name" do + it "provides the state's abbreviation" do + address.state.abbr = "Vic" + expect(serializer.state_name).to eq "Vic" + end + end + + describe "caching" do + it "updates with the record" do + expect { + address.update!(first_name: "Nick") + }.to change { + serializer.to_json + } + end + + it "updates even when database wasn't changed" do + expect { + address.first_name = "Nick" + }.to change { + serializer.to_json + } + end + end +end