main
1# frozen_string_literal: true
2
3RSpec.describe Del::DefaultRouter do
4 subject { described_class.new }
5
6 describe '#route' do
7 let(:recorder) { [] }
8 before :each do
9 subject.register(/^Hello World!$/) do |message|
10 recorder.push(text: message.text)
11 end
12
13 subject.register(/^cowsay (.*)$/) do |message, match_data|
14 recorder.push(text: message.text, match_data: match_data)
15 end
16 end
17
18 it 'routes to the registered route' do
19 subject.route(double(text: 'Hello World!'))
20 expect(recorder).to match_array([text: 'Hello World!'])
21 end
22
23 it 'does not route a route that does not match' do
24 subject.route(double(text: "What's good?"))
25 expect(recorder).to be_empty
26 end
27
28 it 'passes captures to the block' do
29 subject.route(double(text: 'cowsay HELLO'))
30 matches = /^cowsay (.*)$/.match('cowsay HELLO')
31 expect(recorder).to match_array([text: 'cowsay HELLO', match_data: matches])
32 end
33 end
34end