71 lines
1.4 KiB
JavaScript
71 lines
1.4 KiB
JavaScript
|
import Vue from 'vue';
|
||
|
import eventHub from '~/deploy_keys/eventhub';
|
||
|
import actionBtn from '~/deploy_keys/components/action_btn.vue';
|
||
|
|
||
|
describe('Deploy keys action btn', () => {
|
||
|
const data = getJSONFixture('deploy_keys/keys.json');
|
||
|
const deployKey = data.enabled_keys[0];
|
||
|
let vm;
|
||
|
|
||
|
beforeEach((done) => {
|
||
|
const ActionBtnComponent = Vue.extend(actionBtn);
|
||
|
|
||
|
vm = new ActionBtnComponent({
|
||
|
propsData: {
|
||
|
deployKey,
|
||
|
type: 'enable',
|
||
|
},
|
||
|
}).$mount();
|
||
|
|
||
|
setTimeout(done);
|
||
|
});
|
||
|
|
||
|
it('renders the type as uppercase', () => {
|
||
|
expect(
|
||
|
vm.$el.textContent.trim(),
|
||
|
).toBe('Enable');
|
||
|
});
|
||
|
|
||
|
it('sends eventHub event with btn type', (done) => {
|
||
|
spyOn(eventHub, '$emit');
|
||
|
|
||
|
vm.$el.click();
|
||
|
|
||
|
setTimeout(() => {
|
||
|
expect(
|
||
|
eventHub.$emit,
|
||
|
).toHaveBeenCalledWith('enable.key', deployKey);
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('shows loading spinner after click', (done) => {
|
||
|
vm.$el.click();
|
||
|
|
||
|
setTimeout(() => {
|
||
|
expect(
|
||
|
vm.$el.querySelector('.fa'),
|
||
|
).toBeDefined();
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('disables button after click', (done) => {
|
||
|
vm.$el.click();
|
||
|
|
||
|
setTimeout(() => {
|
||
|
expect(
|
||
|
vm.$el.classList.contains('disabled'),
|
||
|
).toBeTruthy();
|
||
|
|
||
|
expect(
|
||
|
vm.$el.getAttribute('disabled'),
|
||
|
).toBe('disabled');
|
||
|
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|