open-nomad/ui/tests/integration/data-modeling/related-evaluations-test.js
Jai 7690fda6ba
Epic: Evaluation Detail Sidebar (#12370)
* chore: prettify gutter-menu

* chore:  add portal packages

* styling:  add styles sidebar and portal behavior

* ui:  sidebar component

* ui:  create and implement statechart for evals

* ui:  actor-relationship service and provider component

* ui:  d3 hierarchy computation

* chore:  add render-modifiers and curved arrows

* ui:  create evaluation actor div

* fix related evaluations schema

* ui:  register/deregister evaluation divs

* ui:  handle resize behavior

* bug:  infinite re-render cycle

* fix:  conditional logic to prevent infinite render of flex resizing

* ui: related evaluations schema and request param

* ui: fix testing for evaluations

* refact: make related-evals a proper has-many

* chore: don't pauseTest

* temp:  debug d3 hierarchy

* ui:  move derived state logic into backing component class for detail

* ui:  deprecated related evaluations logic in statechart

* ui:  update evaluation models

* ui:  update logic to paint svg in non-viewable scroll region

* ui:  update styling

* ui:  testing for eval detail view

* ui:  delete detail from template directory

* ui:  break detail component down

* ui:  static data for /evaluation/:id endpoint

* ui:  fix styling of d3 viz

* ui:  add query parameter adapter for evals

* ui:  last minute design requests

* wip:  address browser updating detail view behavior

* refact: handle query-state change in statechart

* conditional class looking for currentEval equality (#12411)

* F UI/evaluation detail sidebar rel evals (#12415)

* ui:  remove busy id alias from statechart

* ui: edit related evaluations viz error message

* ui:  bug fixes on related evaluations view (#12423)

* ui:  remove busy id alias from statechart

* ui: edit related evaluations viz error message

* ui:  update error state

* ui:  related evaluation outline styling

* Related evaluation stylefile and non-link if it matches the active sidebar (#12428)

* Adds tabbable and keyboard pressable evaluation table rows (#12433)

* ui:  fix failing eval list tests (#12437)

* ui:  move styling into classes (#12438)

* fix test failures (#12444)

* ui:  move styling into classes

* ui:  eslint disable

* ui:  allocations have evaluations as async relationships

* ui:  fix evaluation refresh button (#12447)

* ui:  move styling into classes

* ui:  eslint disable

* ui:  allocations have evaluations as async relationships

* ui:  refresh bug

* ui:  final touches on sidebar (#12462)

* chore: turn off template linting rules

Temporarily turning off template linting because we dont have a set CSS convention and the release needs to go out ASAP.

* doc:  deprecate out of date comments and vars

* ui:  edit mirage server fetch logic

* ui:  style sidebar relative

* Modification to mocked related evals and manually set 100% height on svg (#12460)

* F UI/evaluation detail sidebar final touches (#12463)

* chore: turn off template linting rules

Temporarily turning off template linting because we dont have a set CSS convention and the release needs to go out ASAP.

* doc:  deprecate out of date comments and vars

* ui:  edit mirage server fetch logic

* ui:  style sidebar relative

* ui:  account for new related eval added to chain

Co-authored-by: Michael Klein <michael@firstiwaslike.com>
Co-authored-by: Phil Renaud <phil@riotindustries.com>
2022-04-05 14:34:37 -04:00

138 lines
3.7 KiB
JavaScript

import { setupMirage } from 'ember-cli-mirage/test-support';
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Integration | Data Modeling | related evaluations', function (hooks) {
setupTest(hooks);
setupMirage(hooks);
test('it should a return a list of related evaluations when the related query parameter is specified', async function (assert) {
assert.expect(2);
const store = this.owner.lookup('service:store');
server.get('/evaluation/:id', function (_, fakeRes) {
assert.equal(
fakeRes.queryParams.related,
'true',
'it should append the related query parameter when making the API request for related evaluations'
);
return {
ID: 'tomster',
Priority: 50,
Type: 'service',
TriggeredBy: 'job-register',
JobID: 'example',
JobModifyIndex: 52,
NodeID: 'yes',
NodeModifyIndex: 0,
Status: 'complete',
StatusDescription: '',
Wait: 0,
NextEval: '',
PreviousEval: '',
BlockedEval: '',
FailedTGAllocs: null,
ClassEligibility: null,
EscapedComputedClass: false,
AnnotatePlan: false,
SnapshotIndex: 53,
QueuedAllocations: {
cache: 0,
},
CreateIndex: 53,
ModifyIndex: 55,
Related: [],
};
});
await store.findRecord('evaluation', 'tomster', {
adapterOptions: { related: true },
});
server.get('/evaluation/:id', function (_, fakeRes) {
assert.notOk(
fakeRes.queryParams.related,
'it should not append the related query parameter when making the API request for related evaluations'
);
return {
ID: 'tomster',
Priority: 50,
Type: 'service',
TriggeredBy: 'job-register',
JobID: 'example',
JobModifyIndex: 52,
NodeID: 'yes',
NodeModifyIndex: 0,
Status: 'complete',
StatusDescription: '',
Wait: 0,
NextEval: '',
PreviousEval: '',
BlockedEval: '',
FailedTGAllocs: null,
ClassEligibility: null,
EscapedComputedClass: false,
AnnotatePlan: false,
SnapshotIndex: 53,
QueuedAllocations: {
cache: 0,
},
CreateIndex: 53,
ModifyIndex: 55,
Related: [],
};
});
await store.findRecord('evaluation', 'tomster');
});
test('it should store related evaluations stubs as a hasMany in the store', async function (assert) {
const store = this.owner.lookup('service:store');
server.get('/evaluation/:id', function () {
return {
ID: 'tomster',
Priority: 50,
Type: 'service',
TriggeredBy: 'job-register',
JobID: 'example',
JobModifyIndex: 52,
NodeID: 'yes',
NodeModifyIndex: 0,
Status: 'complete',
StatusDescription: '',
Wait: 0,
NextEval: '',
PreviousEval: '',
BlockedEval: '',
FailedTGAllocs: null,
ClassEligibility: null,
EscapedComputedClass: false,
AnnotatePlan: false,
SnapshotIndex: 53,
QueuedAllocations: {
cache: 0,
},
CreateIndex: 53,
ModifyIndex: 55,
RelatedEvals: [
{ ID: 'a', StatusDescription: 'a' },
{ ID: 'b', StatusDescription: 'b' },
],
};
});
const result = await store.findRecord('evaluation', 'tomster', {
adapterOptions: { related: true },
});
assert.equal(result.relatedEvals.length, 2);
const mappedResult = result.relatedEvals.map((es) => es.id);
assert.deepEqual(
mappedResult,
['a', 'b'],
'related evals data is accessible'
);
});
});