Skip to content

Commit

Permalink
Adds ability to use list for route params (#552)
Browse files Browse the repository at this point in the history
* Adds ability to use list for route params

* added new assertion
  • Loading branch information
josephmancuso committed Jan 27, 2019
1 parent 66a2c98 commit 7626451
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
6 changes: 5 additions & 1 deletion masonite/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -787,7 +787,11 @@ def compile_route_to_url(self, route, params={}):
# if the url contains a parameter variable like @id:int
if '@' in url:
url = url.replace('@', '').split(':')[0]
compiled_url += str(params[url]) + '/'
if isinstance(params, dict):
compiled_url += str(params[url]) + '/'
elif isinstance(params, list):
compiled_url += str(params[0]) + '/'
del params[0]
else:
compiled_url += url + '/'

Expand Down
16 changes: 16 additions & 0 deletions tests/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ def test_request_route_returns_url(self):

assert request.route('test.url') == '/test/url'
assert request.route('test.id', {'id': 1}) == '/test/url/1'
assert request.route('test.id', [1]) == '/test/url/1'

def test_request_redirection(self):
app = App()
Expand Down Expand Up @@ -327,6 +328,21 @@ def test_redirect_compiles_url_with_parameters(self):

assert request.compile_route_to_url(route, params) == '/test/1'

def test_redirect_compiles_url_with_list_parameters(self):
app = App()
app.bind('Request', self.request)
request = app.make('Request').load_app(app)

route = 'test/@id'
params = ['1']

assert request.compile_route_to_url(route, params) == '/test/1'

route = 'test/@id/@user/test/@slug'
params = ['1', '2', '3']

assert request.compile_route_to_url(route, params) == '/test/1/2/test/3'

def test_redirect_compiles_url_with_multiple_parameters(self):
app = App()
app.bind('Request', self.request)
Expand Down

0 comments on commit 7626451

Please sign in to comment.