mirror of https://github.com/rancher/dashboard.git
89 lines
2.4 KiB
TypeScript
89 lines
2.4 KiB
TypeScript
import Cronjob from '@shell/models/batch.cronjob';
|
|
describe('class Cronjob', () => {
|
|
it('should have no ownerReferences by default', () => {
|
|
const cronJobData = {
|
|
id: 'any-id',
|
|
type: 'batch.job',
|
|
apiVersion: 'batch/v1',
|
|
kind: 'Job',
|
|
metadata: {
|
|
name: 'any-name',
|
|
namespace: 'any-namespace',
|
|
uid: 'any-uid'
|
|
},
|
|
spec: { jobTemplate: {} }
|
|
};
|
|
const expectation = {
|
|
name: 'any-name', namespace: 'any-namespace', uid: 'any-uid'
|
|
};
|
|
const cronjob = new Cronjob(cronJobData);
|
|
|
|
expect(cronjob.metadata).toStrictEqual(expectation);
|
|
});
|
|
|
|
describe('method runNow', () => {
|
|
it('should populate job metadata', async() => {
|
|
const jobData = {
|
|
id: 'any-id',
|
|
type: 'batch.job',
|
|
apiVersion: 'batch/v1',
|
|
kind: 'Job',
|
|
metadata: {
|
|
name: 'any-name',
|
|
namespace: 'any-namespace',
|
|
uid: 'any-uid'
|
|
},
|
|
spec: { jobTemplate: {} }
|
|
};
|
|
const date = Date.now();
|
|
const expected = {
|
|
name: `${ jobData.metadata.name }-${ date }`,
|
|
namespace: jobData.metadata.namespace,
|
|
ownerReferences: [{
|
|
apiVersion: 'batch/v1',
|
|
controller: true,
|
|
kind: 'Job',
|
|
name: jobData.metadata.name,
|
|
uid: jobData.metadata.uid
|
|
}],
|
|
uid: jobData.metadata.uid
|
|
};
|
|
const dispatcher = () => ({
|
|
...jobData,
|
|
save: jest.fn(),
|
|
goToDetail: jest.fn()
|
|
});
|
|
const cronjob = new Cronjob(jobData, { dispatch: dispatcher });
|
|
|
|
jest
|
|
.useFakeTimers()
|
|
.setSystemTime(date);
|
|
jest.spyOn(cronjob, '$dispatch').mockImplementation(dispatcher);
|
|
|
|
await cronjob.runNow();
|
|
|
|
expect(cronjob.metadata).toStrictEqual(expected);
|
|
});
|
|
|
|
it('should redirect to another page', async() => {
|
|
const jobData = {
|
|
metadata: { name: 'any-name' },
|
|
spec: { jobTemplate: {} }
|
|
};
|
|
const callback = jest.fn();
|
|
const dispatcher = () => ({
|
|
...jobData,
|
|
save: jest.fn(),
|
|
goToDetail: callback
|
|
});
|
|
const cronjob = new Cronjob(jobData, { dispatch: dispatcher });
|
|
|
|
jest.spyOn(cronjob, '$dispatch').mockImplementation(dispatcher);
|
|
|
|
await cronjob.runNow();
|
|
|
|
expect(callback).toHaveBeenCalledWith();
|
|
});
|
|
});
|
|
});
|