Sha256: 8ae7fae7e65812227f9e6b5ccd958242df54c94d25117d2ac83468cb771fc017

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

require 'spec_helper'

class ScreenFactoryScreen
  include TE3270
end

class WorldSuper
  attr_reader :super_called
  def on(screen_class, &block)
    @super_called = true
  end
end

class World < WorldSuper
  include TE3270::ScreenFactory
end

describe TE3270::ScreenFactory do

  let(:world) { World.new }

  it 'should create a new screen object' do
    emulator = double('platform')
    world.instance_variable_set('@emulator', emulator)
    expect(world.on(ScreenFactoryScreen)).to be_instance_of ScreenFactoryScreen
  end

  it 'should create a new screen object and execute a block' do
    emulator = double('platform')
    world.instance_variable_set('@emulator', emulator)
    world.on(ScreenFactoryScreen) do |page|
      expect(page).to be_instance_of ScreenFactoryScreen
    end
  end

  it 'should raise an error when an @emulator instance variable does not exist' do
    expect { world.on(ScreenFactoryScreen) }.to raise_error("@emulator instance variable must be available to use the ScreenFactory methods")
  end

  it 'should pass control to super if passed a class that does not include TE3270' do
    class NoTE
    end
    emulator = double('platform')
    world.instance_variable_set('@emulator', emulator)
    world.on(NoTE)
    expect(world.super_called).to be true
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
te3270-0.9.0 spec/lib/te3270/screen_factory_spec.rb
te3270-0.8.1 spec/lib/te3270/screen_factory_spec.rb
te3270-0.8.0 spec/lib/te3270/screen_factory_spec.rb