|
22 | 22 | it { is_expected.to be_a(Grape::Router::BaseRoute) } |
23 | 23 | end |
24 | 24 |
|
25 | | - describe 'route attributes' do |
| 25 | + describe 'metadata attributes (namespace, prefix, settings)' do |
26 | 26 | subject(:route) do |
27 | 27 | described_class.new(endpoint, :get, pattern, options, forward_match: false, |
28 | | - version: 'v1', namespace: '/things', prefix: '/api', |
29 | | - requirements: { id: /\d+/ }, anchor: false, settings: { a: 1 }) |
| 28 | + namespace: '/things', prefix: '/api', settings: { a: 1 }) |
30 | 29 | end |
31 | 30 |
|
32 | 31 | it 'exposes them as readers' do |
33 | | - expect(route.version).to eq('v1') |
34 | 32 | expect(route.namespace).to eq('/things') |
35 | 33 | expect(route.prefix).to eq('/api') |
36 | | - expect(route.requirements).to eq(id: /\d+/) |
37 | | - expect(route.anchor).to be(false) |
38 | 34 | expect(route.settings).to eq(a: 1) |
39 | 35 | end |
40 | 36 |
|
41 | 37 | it 'does not leak them into the options Hash' do |
42 | | - %i[version namespace prefix requirements anchor settings].each do |key| |
| 38 | + %i[namespace prefix settings].each do |key| |
43 | 39 | expect(route.options).not_to have_key(key) |
44 | 40 | end |
45 | 41 | end |
|
48 | 44 | subject(:route) { described_class.new(endpoint, :get, pattern, options, forward_match: false) } |
49 | 45 |
|
50 | 46 | it 'defaults to nil' do |
51 | | - expect(route.version).to be_nil |
52 | 47 | expect(route.namespace).to be_nil |
53 | 48 | expect(route.prefix).to be_nil |
54 | | - expect(route.requirements).to be_nil |
55 | | - expect(route.anchor).to be_nil |
56 | 49 | expect(route.settings).to be_nil |
57 | 50 | end |
58 | 51 | end |
59 | 52 | end |
60 | 53 |
|
| 54 | + describe 'match parameters delegated to the pattern (version, anchor, requirements)' do |
| 55 | + subject(:route) { described_class.new(endpoint, :get, pattern, options, forward_match: false) } |
| 56 | + |
| 57 | + let(:pattern) do |
| 58 | + Grape::Router::Pattern.new(origin: '/mounty', suffix: '', anchor: false, params: {}, version: 'v1', requirements: { id: /\d+/ }) |
| 59 | + end |
| 60 | + |
| 61 | + it 'reads them from the pattern' do |
| 62 | + expect(route.version).to eq('v1') |
| 63 | + expect(route.anchor).to be(false) |
| 64 | + expect(route.requirements).to eq(id: /\d+/) |
| 65 | + end |
| 66 | + end |
| 67 | + |
61 | 68 | describe '#match?' do |
62 | 69 | subject { instance.match?(input) } |
63 | 70 |
|
|
0 commit comments