File: data_table_spec.rb

package info (click to toggle)
ruby-cucumber-core 1.5.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 580 kB
  • sloc: ruby: 5,763; makefile: 2
file content (80 lines) | stat: -rw-r--r-- 2,282 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# encoding: utf-8
require 'cucumber/core/ast/data_table'

module Cucumber
  module Core
    module Ast
      describe DataTable do
        let(:location) { Location.new('foo.feature', 9..12) }

        before do
          @table = DataTable.new([
            %w{one four seven},
            %w{4444 55555 666666}
          ], location)
        end

        describe "equality" do
          it "is equal to another table with the same data" do
            expect( DataTable.new([[1,2],[3,4]], location) ).to eq DataTable.new([[1,2],[3,4]], location)
          end

          it "is not equal to another table with different data" do
            expect( DataTable.new([[1,2],[3,4]], location) ).not_to eq DataTable.new([[1,2]], location)
          end

          it "is not equal to a non table" do
            expect( DataTable.new([[1,2],[3,4]], location) ).not_to eq Object.new
          end
        end

        describe "#data_table?" do
          let(:table) { DataTable.new([[1,2],[3,4]], location) }

          it "returns true" do
            expect(table).to be_data_table
          end
        end

        describe "#doc_string" do
          let(:table) { DataTable.new([[1,2],[3,4]], location) }

          it "returns false" do
            expect(table).not_to be_doc_string
          end
        end

        describe "#map" do
          let(:table) { DataTable.new([ %w{foo bar}, %w{1 2} ], location) }

          it 'yields the contents of each cell to the block' do

            expect { |b| table.map(&b) }.to yield_successive_args('foo', 'bar', '1', '2')
          end

          it 'returns a new table with the cells modified by the block' do
            expect( table.map { |cell| "*#{cell}*" } ).to eq  DataTable.new([%w{*foo* *bar*}, %w{*1* *2*}], location)
          end
        end

        describe "#transpose" do
          before(:each) do
            @table = DataTable.new([
              %w{one 1111},
              %w{two 22222}
            ], location)
          end

          it "should transpose the table" do
            transposed = DataTable.new([
              %w{one two},
              %w{1111 22222}
            ], location)
            expect( @table.transpose ).to eq( transposed )
          end
        end

      end
    end
  end
end