Skip to content

Commit

Permalink
Add Aviator.rewriteRouteTo
Browse files Browse the repository at this point in the history
Add simple helper for route descriptions so you can write things like
this:

```javascript
Aviator.setRoutes({
  '/foo': {
    '/bar': Aviator.rewriteRouteTo('/baz')
  },
  '/baz': {
    target: bazTarget,
    '/': 'index'
  }
});
```
  • Loading branch information
hojberg committed Dec 6, 2013
1 parent 1f55b10 commit ad1eb87
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
18 changes: 18 additions & 0 deletions aviator.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,24 @@ window.Aviator = {
**/
refresh: function () {
this._navigator.refresh();
},

/**
@method rewriteRouteTo
**/
rewriteRouteTo: function (newRoute) {
var target = {
rewrite: function (request) {
Aviator.navigate(newRoute, {
namedParams: request.namedParams
});
}
};

return {
target: target,
'/': 'rewrite'
};
}

};
Expand Down
24 changes: 24 additions & 0 deletions spec/aviator_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,28 @@ describe('Aviator', function () {
});
});

describe('.rewriteRouteTo', function () {
var target;

beforeEach(function () {
target = subject.rewriteRouteTo('/foo/bar').target;
});

describe('the returned route target action', function () {
beforeEach(function () {
spyOn( Aviator, 'navigate' );
});

it('calls Aviator.navigate with the given route', function () {
target.rewrite({ namedParams: { baz: 'boo' } });

expect( Aviator.navigate ).toHaveBeenCalledWith(
'/foo/bar',
{ namedParams: { baz: 'boo' } }
);

});
});
});

});
20 changes: 20 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,26 @@ window.Aviator = {
**/
refresh: function () {
this._navigator.refresh();
},

/**
@method rewriteRouteTo
@param {String} newRoute
@return {Object}
**/
rewriteRouteTo: function (newRoute) {
var target = {
rewrite: function (request) {
Aviator.navigate(newRoute, {
namedParams: request.namedParams
});
}
};

return {
target: target,
'/': 'rewrite'
};
}

};

0 comments on commit ad1eb87

Please sign in to comment.