import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
import { click, render } from '@ember/test-helpers';
import sinon from 'sinon';
module('Integration | Component | consul node agentless-notice', function (hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(() => {
const localStore = {};
sinon.stub(window.localStorage, 'getItem').callsFake((key) => localStore[key]);
sinon.stub(window.localStorage, 'setItem').callsFake((key, value) => (localStore[key] = value));
});
test('it does not display the notice if the filtered nodes are the same as the regular nodes', async function (assert) {
this.set('nodes', [
{
Meta: {
'synthetic-node': false,
},
},
]);
this.set('filteredNodes', [
{
Meta: {
'synthetic-node': false,
},
},
]);
await render(
hbs``
);
assert.true(window.localStorage.getItem.called);
assert
.dom('[data-test-node-agentless-notice]')
.doesNotExist(
'The agentless notice should not display if the items are the same as the filtered items'
);
});
test('it does display the notice when the filtered items are smaller then the regular items', async function (assert) {
this.set('nodes', [
{
Meta: {
'synthetic-node': true,
},
},
]);
this.set('filteredNodes', []);
await render(
hbs``
);
assert
.dom('[data-test-node-agentless-notice]')
.exists(
'The agentless notice should display if their are less items then the filtered items'
);
await click('button');
assert
.dom('[data-test-node-agentless-notice]')
.doesNotExist('The agentless notice be dismissed');
assert.true(
window.localStorage.setItem.calledOnceWith('consul-nodes-agentless-notice-dismissed', 'true'),
"Set the key in localstorage to 'true'"
);
});
test('it does not display if the localstorage key is already set to true', async function (assert) {
this.set('nodes', [
{
Meta: {
'synthetic-node': false,
},
},
]);
this.set('filteredNodes', [
{
Meta: {
'synthetic-node': false,
},
},
]);
window.localStorage.setItem('consul-nodes-agentless-notice-dismissed-dc2', 'true');
await render(
hbs``
);
assert.true(
window.localStorage.getItem.calledOnceWith('consul-nodes-agentless-notice-dismissed-dc2')
);
assert
.dom('[data-test-node-agentless-notice]')
.doesNotExist(
"The agentless notice should not display if the local storage key has already been set to 'true'"
);
});
});