Sha256: 35bc3bd49bd12d9c1048cb0fda6d910fe0e82210416087a99363b3bbc5eba334

Contents?: true

Size: 957 Bytes

Versions: 2

Compression:

Stored size: 957 Bytes

Contents

require 'crosscounter/expansion'

describe Crosscounter::Expansion do
  subject(:expansion) { Crosscounter::Expansion }

  describe '.expand' do
    it 'replaces a set of keywords with statically defined values' do
      expanded = expansion.expand([:days], days: %w[sunday monday])

      expanded.should == { days: %w[sunday monday] }
    end

    it 'replaces a keyword with dynamically defined values' do
      expanded = expansion.expand([:ages], ages: -> { (18..21).map(&:to_s) })

      expanded.should == { ages: %w[18 19 20 21] }
    end
  end

  describe '.replace' do
    it 'replaces all objects with mapped values' do
      male_object   = double(gender: 'male')
      female_object = double(gender: 'female')

      replaced = expansion.replace([male_object, female_object],
                                   gender: -> object { object.gender.downcase })

      replaced.should == [{ gender: 'male' }, { gender: 'female' }]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
crosscounter-0.5.0 spec/crosscounter/expansion_spec.rb
crosscounter-0.4.0 spec/crosscounter/expansion_spec.rb