Sha256: 01bda102129d4d8082614f7d68042c82ab2aa84f384c7eee221c39869919b942

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 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 = []
      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

5 entries across 5 versions & 1 rubygems

Version Path
rpush-2.6.0-java spec/unit/notification_shared.rb
rpush-2.6.0 spec/unit/notification_shared.rb
rpush-2.5.0 spec/unit/notification_shared.rb
rpush-2.4.0-java spec/unit/notification_shared.rb
rpush-2.4.0 spec/unit/notification_shared.rb