Sha256: cbe491c9bf36172d6745e2300fa79c005b9bd7bb116e8264dc41fe421bfc05f3

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'
module Alf
  module Lang
    describe ObjectOriented, 'tuple_extract' do

      def subject(&bl)
        rel.extend(ObjectOriented.new(rel))
        rel.tuple_extract(&bl)
      end

      context 'on a singleton' do
        let(:rel)     { [{name: "Jones"}] }
        let(:expected){ Tuple(name: "Jones") }

        it 'returns the tuple' do
          subject.should eq(expected)
        end

        it 'is aliased as tuple!' do
          rel.extend(ObjectOriented.new(rel))
          rel.tuple!.should eq(expected)
        end
      end

      context 'on an empty relation' do
        let(:rel){ [] }

        it 'raises a NoSuchTupleError without block' do
          lambda{
            subject
          }.should raise_error(NoSuchTupleError)
        end

        it 'yields if a block' do
          subject{ {id: 12} }.should eq(Tuple(id: 12))
        end
      end

      context 'on a relation with more than one tuple' do
        let(:rel){ [{name: "Jones"}, {name: "Smith"}] }

        it 'raises a NoSuchTupleError' do
          lambda{
            subject
          }.should raise_error(NoSuchTupleError)
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
alf-core-0.15.0 spec/unit/alf-lang/object_oriented/test_tuple_extract.rb
alf-core-0.14.0 spec/unit/alf-lang/object_oriented/test_tuple_extract.rb
alf-core-0.13.1 spec/unit/alf-lang/object_oriented/test_tuple_extract.rb
alf-core-0.13.0 spec/unit/alf-lang/object_oriented/test_tuple_extract.rb