Skip to content

Commit

Permalink
added a more powerful route group class
Browse files Browse the repository at this point in the history
  • Loading branch information
josephmancuso committed Jul 10, 2018
1 parent b259858 commit 939abd1
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 1 deletion.
41 changes: 41 additions & 0 deletions masonite/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,3 +231,44 @@ class Delete(BaseHttpRoute):

def __init__(self):
self.method_type = 'DELETE'

class RouteGroup():

def __new__(self, routes=[], middleware=[], domain=[], prefix='', name=''):
self.routes = routes

if middleware:
self._middleware(self, *middleware)

if domain:
self._domain(self, domain)

if prefix:
self._prefix(self, prefix)

if name:
self._name(self, name)

return self.routes


def _middleware(self, *middleware):
for route in self.routes:
route.middleware(*middleware)

return self.routes

def _domain(self, domain):
for route in self.routes:
route.domain(domain)

def _prefix(self, prefix):
for route in self.routes:
route.route_url = prefix + route.route_url

def _name(self, name):
for route in self.routes:
route.named_route = name + route.named_route

def middleware(self):
print(self.routes)
45 changes: 44 additions & 1 deletion tests/test_routes.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from masonite.routes import Route
from masonite.request import Request
from masonite.routes import Get, Post, Put, Patch, Delete
from masonite.routes import Get, Post, Put, Patch, Delete, RouteGroup
from masonite.helpers.routes import group
from masonite.testsuite.TestSuite import generate_wsgi

Expand Down Expand Up @@ -58,3 +58,46 @@ def test_group_route(self):

assert routes[0].route_url == '/example/test/1'
assert routes[1].route_url == '/example/test/2'

def test_group_route_sets_middleware(self):
routes = group('/example', [
Get().route('/test/1', 'TestController@show'),
Get().route('/test/2', 'TestController@show')
])

assert routes[0].route_url == '/example/test/1'

routes = RouteGroup([
Get().route('/test/1', 'TestController@show'),
Get().route('/test/2', 'TestController@show')
], middleware=['auth', 'user'])

assert isinstance(routes, list)

assert routes[0].list_middleware == ('auth', 'user')

def test_group_route_sets_domain(self):
routes = RouteGroup([
Get().route('/test/1', 'TestController@show'),
Get().route('/test/2', 'TestController@show')
], domain=['www'])

assert routes[0].required_domain == ['www']

def test_group_route_sets_prefix(self):
routes = RouteGroup([
Get().route('/test/1', 'TestController@show'),
Get().route('/test/2', 'TestController@show')
], prefix='/dashboard')

assert routes[0].route_url == '/dashboard/test/1'

def test_group_route_sets_name(self):
look_for = []
routes = RouteGroup([
Get().route('/test/1', 'TestController@show').name('create'),
Get().route('/test/2', 'TestController@show').name('edit')
], name='post.')

assert routes[0].named_route == 'post.create'
assert routes[1].named_route == 'post.edit'

0 comments on commit 939abd1

Please sign in to comment.