@panoptic-it-solutions/n8n-nodes-datto-rmm
Version:
n8n node for Datto RMM integration
99 lines • 5.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const resourceMapper_1 = require("../helpers/resourceMapper");
describe('Resource Mapper', () => {
let mockLoadOptionsFunctions;
beforeEach(() => {
mockLoadOptionsFunctions = {
getNode: () => ({
id: 'test-node-id',
name: 'DattoRmm',
type: 'dattoRmm',
typeVersion: 1,
position: [0, 0],
parameters: {},
}),
};
});
describe('getResourceMapperFields', () => {
it('should return fields for account resource', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'account');
expect(result).toBeDefined();
expect(result.fields).toBeDefined();
expect(Array.isArray(result.fields)).toBe(true);
const idField = result.fields.find((field) => field.id === 'id');
const createdField = result.fields.find((field) => field.id === 'createdDate');
const modifiedField = result.fields.find((field) => field.id === 'lastModified');
expect(idField).toBeDefined();
expect(createdField).toBeDefined();
expect(modifiedField).toBeDefined();
const nameField = result.fields.find((field) => field.id === 'name');
const emailField = result.fields.find((field) => field.id === 'email');
expect(nameField).toBeDefined();
expect(emailField).toBeDefined();
});
it('should return fields for device resource', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'device');
expect(result.fields).toBeDefined();
const hostnameField = result.fields.find((field) => field.id === 'hostname');
const osField = result.fields.find((field) => field.id === 'operatingSystem');
const typeField = result.fields.find((field) => field.id === 'deviceType');
expect(hostnameField).toBeDefined();
expect(osField).toBeDefined();
expect(typeField).toBeDefined();
});
it('should return fields for site resource', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'site');
expect(result.fields).toBeDefined();
const nameField = result.fields.find((field) => field.id === 'name');
const descField = result.fields.find((field) => field.id === 'description');
expect(nameField).toBeDefined();
expect(descField).toBeDefined();
});
it('should return fields for alert resource', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'alert');
expect(result.fields).toBeDefined();
const typeField = result.fields.find((field) => field.id === 'alertType');
const priorityField = result.fields.find((field) => field.id === 'priority');
const statusField = result.fields.find((field) => field.id === 'status');
expect(typeField).toBeDefined();
expect(priorityField).toBeDefined();
expect(statusField).toBeDefined();
});
it('should return default fields for unknown resource', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'unknown');
expect(result.fields).toBeDefined();
const nameField = result.fields.find((field) => field.id === 'name');
expect(nameField).toBeDefined();
});
it('should have proper field structure', async () => {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, 'account');
const field = result.fields[0];
expect(field).toHaveProperty('id');
expect(field).toHaveProperty('displayName');
expect(field).toHaveProperty('required');
expect(field).toHaveProperty('defaultMatch');
expect(field).toHaveProperty('canBeUsedToMatch');
expect(field).toHaveProperty('display');
expect(typeof field.id).toBe('string');
expect(typeof field.displayName).toBe('string');
expect(typeof field.required).toBe('boolean');
expect(typeof field.defaultMatch).toBe('boolean');
expect(typeof field.canBeUsedToMatch).toBe('boolean');
expect(typeof field.display).toBe('boolean');
});
it('should always include base fields', async () => {
const resources = ['account', 'device', 'site', 'alert', 'unknown'];
for (const resource of resources) {
const result = await resourceMapper_1.getResourceMapperFields.call(mockLoadOptionsFunctions, resource);
const hasId = result.fields.some((field) => field.id === 'id');
const hasCreated = result.fields.some((field) => field.id === 'createdDate');
const hasModified = result.fields.some((field) => field.id === 'lastModified');
expect(hasId).toBe(true);
expect(hasCreated).toBe(true);
expect(hasModified).toBe(true);
}
});
});
});
//# sourceMappingURL=resourceMapper.test.js.map