-
Notifications
You must be signed in to change notification settings - Fork 3
/
manifold-resource-deprovision.spec.ts
66 lines (54 loc) · 2.31 KB
/
manifold-resource-deprovision.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { newSpecPage } from '@stencil/core/testing';
import fetchMock from 'fetch-mock';
import { GetResourceQuery } from '../../types/graphql';
import resource from '../../spec/mock/elegant-cms/resource';
import { ManifoldResourceDeprovision } from './manifold-resource-deprovision';
import { ManifoldDataDeprovisionButton } from '../manifold-data-deprovision-button/manifold-data-deprovision-button';
interface Props {
disabled?: boolean;
gqlData?: GetResourceQuery['resource'];
loading?: boolean;
}
async function setup(props: Props) {
const page = await newSpecPage({
components: [ManifoldResourceDeprovision, ManifoldDataDeprovisionButton],
html: '<div></div>',
});
const component = page.doc.createElement('manifold-resource-deprovision');
component.disabled = props.disabled;
component.gqlData = props.gqlData;
component.loading = props.loading;
const root = page.root as HTMLDivElement;
root.appendChild(component);
await page.waitForChanges();
return { page, component };
}
describe('<manifold-resource-deprovision>', () => {
beforeEach(() => {
fetchMock.mock('begin:https://analytics.manifold.co', 200);
fetchMock.mock('begin:https://api.manifold.co', 200);
});
afterEach(fetchMock.restore);
describe('v0 props', () => {
it('[disabled]: disables button', async () => {
const { page } = await setup({ disabled: true });
const button = page.root && page.root.querySelector('button');
expect(button && button.getAttribute('disabled')).not.toBeNull();
});
it('[loading]: disables button', async () => {
const { page } = await setup({ loading: true });
const button = page.root && page.root.querySelector('button');
expect(button && button.getAttribute('disabled')).not.toBeNull();
});
it('[gqlData]: button disabled if missing', async () => {
const { page } = await setup({});
const button = page.root && page.root.querySelector('button');
expect(button && button.getAttribute('disabled')).not.toBeNull();
});
it('[gqlData]: button not disabled if present', async () => {
const { page } = await setup({ gqlData: resource as GetResourceQuery['resource'] });
const button = page.root && page.root.querySelector('button');
expect(button && button.getAttribute('disabled')).toBeNull();
});
});
});