Route Recognition

    1. # spec/web/routes_spec.rb
    2. RSpec.describe Web.routes do
    3. # ...
    4. it 'recognizes "GET /"' do
    5. env = Rack::MockRequest.env_for('/')
    6. route = described_class.recognize(env)
    7. expect(route.path).to eq('/')
    8. expect(route.verb).to eq('GET')
    9. expect(route.params).to eq({})
    10. end
    11. it 'recognizes "PATCH /books/23"' do
    12. env = Rack::MockRequest.env_for('/books/23', method: 'PATCH')
    13. route = described_class.recognize(env)
    14. expect(route.routable?).to be(true)
    15. expect(route.path).to eq('/books/23')
    16. expect(route.verb).to eq('PATCH')
    17. expect(route.params).to eq(id: '23')
    18. end
    19. it 'does not recognize unknown route' do
    20. env = Rack::MockRequest.env_for('/foo')
    21. route = subject.recognize(env)
    22. expect(route.routable?).to be(false)
    23. end