Sha256: 9e57a3af5929e9e3252f01d073fc5b5ab82cba05f1e6ab013678a9a65422e901

Contents?: true

Size: 953 Bytes

Versions: 2

Compression:

Stored size: 953 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   = mock(gender: 'male')
      female_object = mock(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.3.0 spec/crosscounter/expansion_spec.rb
crosscounter-0.2.0 spec/crosscounter/expansion_spec.rb