Sha256: 64cfc4de9eff8772bee2c6f49dddc58b8fbf105411491d223bf90f1e87e7266a
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'spec_helper' require 'dentaku/ast/functions/pluck' require 'dentaku' describe Dentaku::AST::Pluck do let(:calculator) { Dentaku::Calculator.new } it 'operates on each value in an array' do result = Dentaku('PLUCK(users, age)', users: [ {name: "Bob", age: 44}, {name: "Jane", age: 27} ]) expect(result).to eq([44, 27]) end it 'allows specifying a default for missing values' do result = Dentaku!('PLUCK(users, age, -1)', users: [ {name: "Bob"}, {name: "Jane", age: 27} ]) expect(result).to eq([-1, 27]) end it 'returns nil if pluck key is missing from a hash' do result = Dentaku!('PLUCK(users, age)', users: [ {name: "Bob"}, {name: "Jane", age: 27} ]) expect(result).to eq([nil, 27]) end it 'works with an empty array' do result = Dentaku('PLUCK(users, age)', users: []) expect(result).to eq([]) end it 'raises argument error if a string is passed as identifier' do expect do Dentaku.evaluate!('PLUCK(users, "age")', users: [ {name: "Bob", age: 44}, {name: "Jane", age: 27} ]) end.to raise_error(Dentaku::ParseError, 'PLUCK() requires second argument to be an identifier') end it 'raises argument error if a non array of hashes is passed as collection' do expect { calculator.evaluate!('PLUCK({1, 2, 3}, age)') }.to raise_error( Dentaku::ArgumentError, 'PLUCK() requires first argument to be an array of hashes' ) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dentaku-3.5.4 | spec/ast/pluck_spec.rb |