open-consul/ui-v2/tests/integration/services/repository/service-test.js
John Cowen 1625a09372 ui: Adds blocking query support to the service detail page (#5479)
This commit includes several pieces of functionality to enable services
to be removed and the page to present information that this has happened
but also keep the deleted information on the page. Along with the more
usual blocking query based listing.

To enable this:

1. Implements `meta` on the model (only available on collections in
ember)
2. Adds new `catchable` ComputedProperty alongside a `listen` helper for
working with specific errors that can be thrown from EventSources in an
ember-like way. Briefly, normal computed properties update when a
property changes, EventSources can additionally throw errors so we can
catch them and show different visuals based on that.
2019-05-01 18:22:22 +00:00

82 lines
2.2 KiB
JavaScript

import { moduleFor, test } from 'ember-qunit';
import { skip } from 'qunit';
import repo from 'consul-ui/tests/helpers/repo';
const NAME = 'service';
moduleFor(`service:repository/${NAME}`, `Integration | Service | ${NAME}`, {
// Specify the other units that are required for this test.
integration: true,
});
const dc = 'dc-1';
const id = 'token-name';
test('findByDatacenter returns the correct data for list endpoint', function(assert) {
return repo(
'Service',
'findAllByDatacenter',
this.subject(),
function retrieveStub(stub) {
return stub(`/v1/internal/ui/services?dc=${dc}`, {
CONSUL_SERVICE_COUNT: '100',
});
},
function performTest(service) {
return service.findAllByDatacenter(dc);
},
function performAssertion(actual, expected) {
assert.deepEqual(
actual,
expected(function(payload) {
return payload.map(item =>
Object.assign({}, item, {
Datacenter: dc,
uid: `["${dc}","${item.Name}"]`,
})
);
})
);
}
);
});
skip('findBySlug returns a sane tree');
test('findBySlug returns the correct data for item endpoint', function(assert) {
return repo(
'Service',
'findBySlug',
this.subject(),
function(stub) {
return stub(`/v1/health/service/${id}?dc=${dc}`, {
CONSUL_NODE_COUNT: 1,
});
},
function(service) {
return service.findBySlug(id, dc);
},
function(actual, expected) {
assert.deepEqual(
actual,
expected(function(payload) {
// TODO: So this tree is all 'wrong', it's not having any major impact
// this this tree needs revisting to something that makes more sense
payload = Object.assign(
{},
{ Nodes: payload },
{
Datacenter: dc,
uid: `["${dc}","${id}"]`,
}
);
const nodes = payload.Nodes;
const service = payload.Nodes[0];
service.Nodes = nodes;
service.Tags = payload.Nodes[0].Service.Tags;
service.meta = {
date: undefined,
cursor: undefined,
};
return service;
})
);
}
);
});