[ui] links to allocations explicitly go through their route model hook (#17737)

* links to allocations explicitly go through their route model hook

* Acceptance test to make sure alloc clicking loads alloc endpoint obj
This commit is contained in:
Phil Renaud 2023-06-27 10:01:50 -04:00 committed by GitHub
parent cfb7efc478
commit 7a60c69b73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 37 additions and 7 deletions

View File

@ -205,7 +205,7 @@ export default class ClientController extends Controller.extend(
@action
gotoAllocation(allocation) {
this.transitionToRoute('allocations.allocation', allocation);
this.transitionToRoute('allocations.allocation', allocation.id);
}
@action

View File

@ -113,7 +113,7 @@ export default class AllocationsController extends Controller.extend(
@action
gotoAllocation(allocation, event) {
lazyClick([
() => this.transitionToRoute('allocations.allocation', allocation),
() => this.transitionToRoute('allocations.allocation', allocation.id),
event,
]);
}

View File

@ -19,6 +19,6 @@ export default class IndexController extends Controller {
@action
gotoAllocation(allocation) {
this.transitionToRoute('allocations.allocation', allocation);
this.transitionToRoute('allocations.allocation', allocation.id);
}
}

View File

@ -60,6 +60,6 @@ export default class VolumeController extends Controller {
@action
gotoAllocation(allocation) {
this.transitionToRoute('allocations.allocation', allocation);
this.transitionToRoute('allocations.allocation', allocation.id);
}
}

View File

@ -166,7 +166,7 @@ export default class AllocationsController extends Controller.extend(
@action
gotoAllocation(allocation) {
this.transitionToRoute('allocations.allocation', allocation);
this.transitionToRoute('allocations.allocation', allocation.id);
}
get optionsAllocationStatus() {

View File

@ -140,7 +140,7 @@ export default class TaskGroupController extends Controller.extend(
@action
gotoAllocation(allocation) {
this.transitionToRoute('allocations.allocation', allocation);
this.transitionToRoute('allocations.allocation', allocation.id);
}
@action

View File

@ -50,6 +50,9 @@ export default class AllocationRoute extends Route.extend(WithWatchers) {
super.model(...arguments),
this.store.findAll('namespace'),
]);
if (allocation.isPartial) {
await allocation.reload();
}
const jobId = allocation.belongsTo('job').id();
await this.store.findRecord('job', jobId);
return allocation;

View File

@ -4,7 +4,7 @@
*/
/* eslint-disable qunit/require-expect */
import { currentURL } from '@ember/test-helpers';
import { currentURL, click, find } from '@ember/test-helpers';
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import { setupMirage } from 'ember-cli-mirage/test-support';
@ -77,6 +77,33 @@ module('Acceptance | job allocations', function (hooks) {
assert.equal(document.title, `Job ${job.name} allocations - Nomad`);
});
test('clicking an allocation results in the correct endpoint being hit', async function (assert) {
server.createList('allocation', Allocations.pageSize - 1, {
shallow: true,
});
allocations = server.schema.allocations.where({ jobId: job.id }).models;
await Allocations.visit({ id: job.id });
const firstAllocation = find('[data-test-allocation]');
await click(firstAllocation);
const requestToAllocationEndpoint = server.pretender.handledRequests.find(
(request) =>
request.url.includes(
`/v1/allocation/${firstAllocation.dataset.testAllocation}`
)
);
assert.ok(requestToAllocationEndpoint, 'the correct endpoint is hit');
assert.equal(
currentURL(),
`/allocations/${firstAllocation.dataset.testAllocation}`,
'the URL is correct'
);
});
test('allocations table is sortable', async function (assert) {
server.createList('allocation', Allocations.pageSize - 1);
allocations = server.schema.allocations.where({ jobId: job.id }).models;