/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { module, test } from 'qunit';
import { setupRenderingTest } from 'vault/tests/helpers';
import { click, render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import sinon from 'sinon';
import { GENERAL } from 'vault/tests/helpers/general-selectors';
const SEAL_WHEN_STANDBY_MSG = 'vault cannot seal when in standby mode; please restart instead';
module('Integration | Component | seal-action', function (hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function () {
this.sealSuccess = sinon.spy(() => new Promise((resolve) => resolve({})));
this.sealError = sinon.stub().throws({ message: SEAL_WHEN_STANDBY_MSG });
});
test('it handles success', async function (assert) {
this.set('handleSeal', this.sealSuccess);
await render(hbs``);
// attempt seal
await click('[data-test-seal]');
await click(GENERAL.confirmButton);
assert.ok(this.sealSuccess.calledOnce, 'called onSeal action');
assert.dom('[data-test-seal-error]').doesNotExist('Does not show error when successful');
});
test('it handles error', async function (assert) {
this.set('handleSeal', this.sealError);
await render(hbs``);
// attempt seal
await click('[data-test-seal]');
await click(GENERAL.confirmButton);
assert.ok(this.sealError.calledOnce, 'called onSeal action');
assert.dom('[data-test-seal-error]').includesText(SEAL_WHEN_STANDBY_MSG, 'Shows error returned from API');
});
});