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