@speckle/objectloader2
Version:
This is an updated objectloader for the Speckle viewer written in typescript
106 lines • 5.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable camelcase */
const vitest_1 = require("vitest");
const objectLoader2Factory_js_1 = require("./objectLoader2Factory.js");
(0, vitest_1.describe)('ObjectLoader2Factory', () => {
let testObjects;
(0, vitest_1.beforeEach)(() => {
testObjects = [
{
id: 'root-id',
speckle_type: 'Base',
__closure: {
'child-1': 1,
'child-2': 2
}
},
{
id: 'child-1',
speckle_type: 'Base'
},
{
id: 'child-2',
speckle_type: 'Base'
}
];
});
(0, vitest_1.describe)('createFromObjects', () => {
(0, vitest_1.it)('should create ObjectLoader2 from array of objects', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
(0, vitest_1.expect)(loader).toBeDefined();
// Test that we can get the root object
const rootObject = await loader.getRootObject();
(0, vitest_1.expect)(rootObject?.baseId).toBe('root-id');
(0, vitest_1.expect)(rootObject?.base?.speckle_type).toBe('Base');
await loader.disposeAsync();
});
(0, vitest_1.it)('should use first object as root', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
const rootObject = await loader.getRootObject();
(0, vitest_1.expect)(rootObject?.baseId).toBe('root-id');
(0, vitest_1.expect)(rootObject?.base?.__closure).toEqual({
'child-1': 1,
'child-2': 2
});
await loader.disposeAsync();
});
(0, vitest_1.it)('should allow iteration over all objects', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
const objects = [];
for await (const obj of loader.getObjectIterator()) {
objects.push(obj);
}
(0, vitest_1.expect)(objects).toHaveLength(3);
(0, vitest_1.expect)(objects[0].id).toBe('root-id');
await loader.disposeAsync();
});
(0, vitest_1.it)('should get total object count correctly', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
const totalCount = await loader.getTotalObjectCount();
(0, vitest_1.expect)(totalCount).toBe(3); // root + 2 children
await loader.disposeAsync();
});
(0, vitest_1.it)('should handle empty objects array', () => {
(0, vitest_1.expect)(() => {
objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects([]);
}).toThrow();
});
(0, vitest_1.it)('should get individual objects by id', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
const rootObj = await loader.getObject({ id: 'root-id' });
(0, vitest_1.expect)(rootObj.id).toBe('root-id');
(0, vitest_1.expect)(rootObj.speckle_type).toBe('Base');
const child1 = await loader.getObject({ id: 'child-1' });
(0, vitest_1.expect)(child1.id).toBe('child-1');
const child2 = await loader.getObject({ id: 'child-2' });
(0, vitest_1.expect)(child2.id).toBe('child-2');
await loader.disposeAsync();
});
(0, vitest_1.it)('should get individual objects by id that does not exist', async () => {
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromObjects(testObjects);
const rootObj = await loader.getObject({ id: 'root-id' });
(0, vitest_1.expect)(rootObj.id).toBe('root-id');
(0, vitest_1.expect)(rootObj.speckle_type).toBe('Base');
const getObjectPromise = loader.getObject({ id: 'child-11111' });
await (0, vitest_1.expect)(getObjectPromise).rejects.toThrow();
await loader.disposeAsync();
});
});
(0, vitest_1.describe)('createFromJSON', () => {
(0, vitest_1.it)('should create ObjectLoader2 from JSON string', async () => {
const json = JSON.stringify(testObjects);
const loader = objectLoader2Factory_js_1.ObjectLoader2Factory.createFromJSON(json);
(0, vitest_1.expect)(loader).toBeDefined();
const rootObject = await loader.getRootObject();
(0, vitest_1.expect)(rootObject?.baseId).toBe('root-id');
await loader.disposeAsync();
});
(0, vitest_1.it)('should handle invalid JSON', () => {
(0, vitest_1.expect)(() => {
objectLoader2Factory_js_1.ObjectLoader2Factory.createFromJSON('invalid json');
}).toThrow();
});
});
});
//# sourceMappingURL=objectLoader2Factory.test.js.map