Sha256: 1bf7fa6984077e2862cb8d1982f5c108e5774b140cf68bb7701a3fdfc6351f16

Contents?: true

Size: 1.48 KB

Versions: 7

Compression:

Stored size: 1.48 KB

Contents

require 'spec_helper'
require 'rom/lint/spec'
require 'rom/memory/dataset'

describe ROM::Memory::Dataset do
  subject(:dataset) { described_class.new(data) }

  let(:data) do
    [
      { name: 'Jane', email: 'jane@doe.org', age: 10 },
      { name: 'Jade', email: 'jade@doe.org', age: 11 },
      { name: 'Joe', email: 'joe@doe.org', age: 12 }
    ]
  end

  it_behaves_like "a rom enumerable dataset"

  describe '#project' do
    it 'projects tuples with the provided keys' do
      expect(dataset.project(:name, :age)).to match_array([
        { name: 'Jane', age: 10 },
        { name: 'Jade', age: 11 },
        { name: 'Joe', age: 12 }
      ])
    end
  end

  describe '#restrict' do
    it 'restricts data using criteria hash' do
      expect(dataset.restrict(age: 10)).to match_array([
        { name: 'Jane', email: 'jane@doe.org', age: 10 }
      ])

      expect(dataset.restrict(age: 10.0)).to match_array([])
    end

    it 'restricts data using block' do
      expect(dataset.restrict { |tuple| tuple[:age] > 10 }).to match_array([
        { name: 'Jade', email: 'jade@doe.org', age: 11 },
        { name: 'Joe', email: 'joe@doe.org', age: 12 }
      ])
    end
  end

  describe '#order' do
    it 'sorts data using provided attribute names' do
      expect(dataset.order(:name)).to match_array([
        { name: 'Jade', email: 'jade@doe.org', age: 11 },
        { name: 'Jane', email: 'jane@doe.org', age: 10 },
        { name: 'Joe', email: 'joe@doe.org', age: 12 }
      ])
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rom-0.6.2 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.1 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.0 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.0.rc1 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.0.beta3 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.0.beta2 spec/unit/rom/memory/dataset_spec.rb
rom-0.6.0.beta1 spec/unit/rom/memory/dataset_spec.rb