Sha256: 3c47872d2db504083eda08c2322c71ba9cd5aabd24b5693523c4a50c93a48ba0

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

require 'spec_helper'

describe Mixpal::Revenue do
  let(:properties) do
    {
      sku: 'SKU-1010'
    }
  end

  let(:amount) { 50 }

  let(:subject) { described_class.new(amount, properties) }

  describe '#render' do
    it 'delegates to Util for js_object composition' do
      expect(Mixpal::Util).to receive(:hash_to_js_object_string).with(properties)
      subject.render
    end

    it 'outputs a call to people.track_charge' do
      js_object = Mixpal::Util.hash_to_js_object_string(properties)
      expect(subject.render)
        .to eq "mixpanel.people.track_charge(#{amount}, #{js_object});"
    end

    it 'outputs an html safe string' do
      expect(subject.render).to be_html_safe
    end
  end

  describe '#to_store' do
    it 'returns a hash with its data' do
      expect(subject.to_store).to eq(
        'amount' => amount,
        'properties' => properties
      )
    end
  end

  describe '#from_store' do
    let(:result) do
      described_class.from_store(
        'amount' => amount,
        'properties' => properties
      )
    end

    it 'instantiates a new instance' do
      expect(result).to be_an_instance_of(described_class)
    end

    it 'sets its amount from the data' do
      expect(result.amount).to eq amount
    end

    it 'sets its properties from the data' do
      expect(result.properties).to eq properties
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mixpal-0.5.0 spec/lib/mixpal/revenue_spec.rb
mixpal-0.4.2 spec/lib/mixpal/revenue_spec.rb
mixpal-0.4.1 spec/lib/mixpal/revenue_spec.rb
mixpal-0.4.0 spec/lib/mixpal/revenue_spec.rb