Fix prev/next links in list-view to depend on path

Since branches and tags depend on the same view, when the path was
updated, the next/prev links were not. Make 'path' an explicit
parameter, so it is observed by the prev/next link's calculating
function.

Change-Id: I79288ebe5837e7ad6bc678ffde98f313935bc1be
This commit is contained in:
Becky Siegel
2017-07-19 13:43:30 -07:00
parent ea2eaba08b
commit ae9648bcc8
3 changed files with 22 additions and 9 deletions

View File

@@ -71,10 +71,10 @@ limitations under the License.
<content></content> <content></content>
<nav> <nav>
<a id="prevArrow" <a id="prevArrow"
href$="[[_computeNavLink(offset, -1, itemsPerPage, filter)]]" href$="[[_computeNavLink(offset, -1, itemsPerPage, filter, path)]]"
hidden$="[[_hidePrevArrow(offset)]]" hidden>&larr; Prev</a> hidden$="[[_hidePrevArrow(offset)]]" hidden>&larr; Prev</a>
<a id="nextArrow" <a id="nextArrow"
href$="[[_computeNavLink(offset, 1, itemsPerPage, filter)]]" href$="[[_computeNavLink(offset, 1, itemsPerPage, filter, path)]]"
hidden$="[[_hideNextArrow(loading, items)]]" hidden> hidden$="[[_hideNextArrow(loading, items)]]" hidden>
Next &rarr;</a> Next &rarr;</a>
</nav> </nav>

View File

@@ -60,11 +60,11 @@
this.fire('create-clicked'); this.fire('create-clicked');
}, },
_computeNavLink(offset, direction, itemsPerPage, filter) { _computeNavLink(offset, direction, itemsPerPage, filter, path) {
// Offset could be a string when passed from the router. // Offset could be a string when passed from the router.
offset = +(offset || 0); offset = +(offset || 0);
const newOffset = Math.max(0, offset + (itemsPerPage * direction)); const newOffset = Math.max(0, offset + (itemsPerPage * direction));
let href = this.getBaseUrl() + this.path; let href = this.getBaseUrl() + path;
if (filter) { if (filter) {
href += '/q/filter:' + filter; href += '/q/filter:' + filter;
} }

View File

@@ -50,24 +50,24 @@ limitations under the License.
const offset = 25; const offset = 25;
const projectsPerPage = 25; const projectsPerPage = 25;
const filter = 'test'; const filter = 'test';
element.path = '/admin/projects'; const path = '/admin/projects';
sandbox.stub(element, 'getBaseUrl', () => ''); sandbox.stub(element, 'getBaseUrl', () => '');
assert.equal( assert.equal(
element._computeNavLink(offset, 1, projectsPerPage, filter), element._computeNavLink(offset, 1, projectsPerPage, filter, path),
'/admin/projects/q/filter:test,50'); '/admin/projects/q/filter:test,50');
assert.equal( assert.equal(
element._computeNavLink(offset, -1, projectsPerPage, filter), element._computeNavLink(offset, -1, projectsPerPage, filter, path),
'/admin/projects/q/filter:test'); '/admin/projects/q/filter:test');
assert.equal( assert.equal(
element._computeNavLink(offset, 1, projectsPerPage, null), element._computeNavLink(offset, 1, projectsPerPage, null, path),
'/admin/projects,50'); '/admin/projects,50');
assert.equal( assert.equal(
element._computeNavLink(offset, -1, projectsPerPage, null), element._computeNavLink(offset, -1, projectsPerPage, null, path),
'/admin/projects'); '/admin/projects');
}); });
@@ -125,5 +125,18 @@ limitations under the License.
MockInteractions.tap(element.$$('#createNew')); MockInteractions.tap(element.$$('#createNew'));
assert.isTrue(clickHandler.called); assert.isTrue(clickHandler.called);
}); });
test('next/prev links change when path changes', () => {
const BRANCHES_PATH = '/path/to/branches';
const TAGS_PATH = '/path/to/tags';
sandbox.stub(element, '_computeNavLink');
element.offset = 0;
element.itemsPerPage = 25;
element.filter = '';
element.path = BRANCHES_PATH;
assert.equal(element._computeNavLink.lastCall.args[4], BRANCHES_PATH);
element.path = TAGS_PATH;
assert.equal(element._computeNavLink.lastCall.args[4], TAGS_PATH);
});
}); });
</script> </script>