32 lines
960 B
Ruby
32 lines
960 B
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
module Naught
|
||
|
class NullClassBuilder
|
||
|
module Commands
|
||
|
class TestCommand
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe NullClassBuilder do
|
||
|
subject(:builder) { NullClassBuilder.new }
|
||
|
it 'responds to commands defined in NullObjectBuilder::Commands' do
|
||
|
expect(builder).to respond_to(:test_command)
|
||
|
end
|
||
|
|
||
|
it 'translates method calls into command invocations including arguments' do
|
||
|
test_command = double
|
||
|
expect(NullClassBuilder::Commands::TestCommand).to receive(:new).
|
||
|
with(builder, 'foo', 42).
|
||
|
and_return(test_command)
|
||
|
expect(test_command).to receive(:call).and_return('COMMAND RESULT')
|
||
|
expect(builder.test_command('foo', 42)).to eq('COMMAND RESULT')
|
||
|
end
|
||
|
|
||
|
it 'handles missing non-command missing methods normally' do
|
||
|
expect(builder).not_to respond_to(:nonexistant_method)
|
||
|
expect { builder.nonexistent_method }.to raise_error(NoMethodError)
|
||
|
end
|
||
|
end
|
||
|
end
|