Sha256: 0ac9b58ebea0deb22e646e6f5297963147c16046e24c54dc6bbb9f1463bc9cf9

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

shared_examples_for "an Notification subclass" do
  describe "when assigning data for the device" do
    before { allow(Rpush::Deprecation).to receive(:warn) }

    it "calls MultiJson.dump when multi_json responds to :dump" do
      notification = notification_class.new
      allow(MultiJson).to receive(:respond_to?).with(:dump).and_return(true)
      expect(MultiJson).to receive(:dump).with(any_args)
      notification.data = { pirates: 1 }
    end

    it "calls MultiJson.encode when multi_json does not respond to :dump" do
      notification = notification_class.new
      allow(MultiJson).to receive(:respond_to?).with(:dump).and_return(false)
      expect(MultiJson).to receive(:encode).with(any_args)
      notification.data = { ninjas: 1 }
    end

    it "raises an ArgumentError if something other than a Hash is assigned" do
      expect do
        notification.data = Array.new
      end.to raise_error(ArgumentError, "must be a Hash")
    end

    it "encodes the given Hash as JSON" do
      notification.data = { hi: "mom" }
      expect(notification.read_attribute(:data)).to eq("{\"hi\":\"mom\"}")
    end

    it "decodes the JSON when using the reader method" do
      notification.data = { hi: "mom" }
      expect(notification.data).to eq("hi" => "mom")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rpush-2.3.2-java spec/unit/notification_shared.rb
rpush-2.3.2 spec/unit/notification_shared.rb