Merge pull request #4331 from hashicorp/feature/hedge-empty-node-ids
Hedge for when consul sends nodes with an empty ID
This commit is contained in:
commit
5b759c3183
|
@ -1,6 +1,14 @@
|
||||||
import Adapter from './application';
|
import Adapter from './application';
|
||||||
import { PRIMARY_KEY, SLUG_KEY } from 'consul-ui/models/node';
|
import { PRIMARY_KEY, SLUG_KEY } from 'consul-ui/models/node';
|
||||||
import { OK as HTTP_OK } from 'consul-ui/utils/http/status';
|
import { OK as HTTP_OK } from 'consul-ui/utils/http/status';
|
||||||
|
// TODO: Looks like ID just isn't used at all
|
||||||
|
// consider just using .Node for the SLUG_KEY
|
||||||
|
const fillSlug = function(item) {
|
||||||
|
if (item[SLUG_KEY] === '') {
|
||||||
|
item[SLUG_KEY] = item['Node'];
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
};
|
||||||
export default Adapter.extend({
|
export default Adapter.extend({
|
||||||
urlForQuery: function(query, modelName) {
|
urlForQuery: function(query, modelName) {
|
||||||
return this.appendURL('internal/ui/nodes', [], this.cleanQuery(query));
|
return this.appendURL('internal/ui/nodes', [], this.cleanQuery(query));
|
||||||
|
@ -14,6 +22,7 @@ export default Adapter.extend({
|
||||||
const url = this.parseURL(requestData.url);
|
const url = this.parseURL(requestData.url);
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case this.isQueryRecord(url):
|
case this.isQueryRecord(url):
|
||||||
|
response = fillSlug(response);
|
||||||
response = {
|
response = {
|
||||||
...response,
|
...response,
|
||||||
...{
|
...{
|
||||||
|
@ -23,6 +32,7 @@ export default Adapter.extend({
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
response = response.map((item, i, arr) => {
|
response = response.map((item, i, arr) => {
|
||||||
|
item = fillSlug(item);
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
...{
|
...{
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
@setupApplicationTest
|
||||||
|
Feature: Hedge for if nodes come in over the API with no ID
|
||||||
|
Scenario: A node list with some missing IDs
|
||||||
|
Given 1 datacenter model with the value "dc-1"
|
||||||
|
And 5 node models from yaml
|
||||||
|
---
|
||||||
|
- ID: id-1
|
||||||
|
Node: name-1
|
||||||
|
- ID: ""
|
||||||
|
Node: name-2
|
||||||
|
- ID: ""
|
||||||
|
Node: name-3
|
||||||
|
- ID: ""
|
||||||
|
Node: name-4
|
||||||
|
- ID: ""
|
||||||
|
Node: name-5
|
||||||
|
---
|
||||||
|
When I visit the nodes page for yaml
|
||||||
|
---
|
||||||
|
dc: dc-1
|
||||||
|
---
|
||||||
|
Then the url should be /dc-1/nodes
|
||||||
|
Then I see name on the nodes like yaml
|
||||||
|
---
|
||||||
|
- name-1
|
||||||
|
- name-2
|
||||||
|
- name-3
|
||||||
|
- name-4
|
||||||
|
- name-5
|
||||||
|
|
||||||
|
@ignore
|
||||||
|
Scenario: Visually comparing
|
||||||
|
Then the ".unhealthy" element should look like the "/node_modules/@hashicorp/consul-testing-extras/fixtures/dc/nodes/empty-ids.png" image
|
|
@ -0,0 +1,10 @@
|
||||||
|
import steps from '../../steps';
|
||||||
|
|
||||||
|
// step definitions that are shared between features should be moved to the
|
||||||
|
// tests/acceptance/steps/steps.js file
|
||||||
|
|
||||||
|
export default function(assert) {
|
||||||
|
return steps(assert).then('I should find a file', function() {
|
||||||
|
assert.ok(true, this.step);
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue