mirror of
https://github.com/meineerde/rackstash.git
synced 2025-10-17 14:01:01 +00:00
Test TrucateMessage filter with Proc selectors and custom callables
This commit is contained in:
parent
f8d8c040d5
commit
402f754736
@ -16,6 +16,14 @@ describe Rackstash::Filters::TruncateMessage do
|
|||||||
let(:messages) { ['some long message', 'sweet middle text', 'final message'] }
|
let(:messages) { ['some long message', 'sweet middle text', 'final message'] }
|
||||||
let(:event) { { 'message' => messages } }
|
let(:event) { { 'message' => messages } }
|
||||||
|
|
||||||
|
def callable(&block)
|
||||||
|
Class.new do
|
||||||
|
define_method(:call) do |message|
|
||||||
|
block.call(message)
|
||||||
|
end
|
||||||
|
end.new
|
||||||
|
end
|
||||||
|
|
||||||
describe '#initialize' do
|
describe '#initialize' do
|
||||||
it 'verifies that a valid cut value is given' do
|
it 'verifies that a valid cut value is given' do
|
||||||
expect { described_class.new(42, cut: 'foo') }.to raise_error(ArgumentError)
|
expect { described_class.new(42, cut: 'foo') }.to raise_error(ArgumentError)
|
||||||
@ -28,22 +36,22 @@ describe Rackstash::Filters::TruncateMessage do
|
|||||||
describe '#call' do
|
describe '#call' do
|
||||||
context 'with selectors' do
|
context 'with selectors' do
|
||||||
it 'calls all selectors' do
|
it 'calls all selectors' do
|
||||||
selector_1 = instance_double('Proc')
|
selector_1 = ->(message) { true }
|
||||||
selector_2 = instance_double('Proc')
|
selector_2 = callable { true }
|
||||||
args[:selectors] = [selector_1, selector_2]
|
args[:selectors] = [selector_1, selector_2]
|
||||||
|
|
||||||
expect(selector_1).to receive(:call).exactly(3).times.and_return(true)
|
# selector_1 is a proc and is thus passed directly as a block to select!
|
||||||
expect(selector_2).to receive(:call).exactly(3).times.and_return(true)
|
expect(selector_2).to receive(:call).exactly(messages.count)
|
||||||
|
|
||||||
filter.call(event)
|
filter.call(event)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'stops on goal' do
|
it 'stops on goal' do
|
||||||
selector_1 = instance_double('Proc')
|
selector_1 = callable { false }
|
||||||
selector_2 = instance_double('Proc')
|
selector_2 = callable { true }
|
||||||
args[:selectors] = [selector_1, selector_2]
|
args[:selectors] = [selector_1, selector_2]
|
||||||
|
|
||||||
expect(selector_1).to receive(:call).exactly(3).times.and_return(false)
|
expect(selector_1).to receive(:call).exactly(3).times.and_call_original
|
||||||
expect(selector_2).not_to receive(:call)
|
expect(selector_2).not_to receive(:call)
|
||||||
|
|
||||||
filter.call(event)
|
filter.call(event)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user