Sha256: 04babb1f580916b8a283c758abf241fb09193acbf1e3b90c67de598c2dec42ad

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 KB

Contents

require 'spec_helper'
require 'models/taxonomite/zoology'

module Taxonomite
    RSpec.describe Tree, type: :model do

      context 'tree creation' do
          let!(:nodes) { Array.new(3){ |index| build(:taxonomite_node)} }

          it 'to disallow direct circular reference' do
              # rephrase to check validity
              expect { nodes[0].children << nodes[0] }.to raise_error
          end

          it 'to disallow circular reference (one deep)' do
               nodes[0].children << nodes[1]
               expect { nodes[1].children << nodes[0] }.to raise_error
          end
      end

      context 'tree structure' do
        before(:each) do
          @nodes = Array.new(3) { build(:taxonomite_node) }
          @nodes[0].children << @nodes[1]
          @nodes[1].children << @nodes[2]
        end

          it 'has appropriate children' do
            expect(@nodes[0].children.size).to eq(1)
          end

          it 'to disallow circular reference (two deep)' do
              expect { @nodes[2].children << @nodes[0] }.to raise_error
          end

          it 'to iterate children' do
              @nodes[0].children.each do |p|
                  expect(p).not_to eq(nil)
              end
          end

          it 'to allow real access to parent' do
              expect(@nodes[1].parent).not_to eq(nil)
              expect { @nodes[1].parent.name }.not_to raise_error
          end

          it 'ok to destroy a parent object safely' do
              expect { @nodes[0].destroy }.not_to raise_error
              expect(@nodes[1].parent).to eq(nil)
              expect(@nodes[2].parent).not_to eq(nil)
          end

      end

    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
taxonomite-0.1.0 spec/models/taxonomite/tree_spec.rb