Skip to content

Commit

Permalink
ISSUE #4641 unit tests fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
carmenfan committed Jan 15, 2024
1 parent 60d6a20 commit a31d3a4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ const getObjectArrayFromRules = async (teamspace, project, model, revId, rules,
return res;
};

const convertToExternalIds = async (teamspace, project, containerEntries) => {
const convertToExternalIds = async (teamspace, project, containerEntries, returnOriginalIfNotFound = false) => {
const defaultType = Object.keys(idTypes)[0];
const convertedEntries = await Promise.all(containerEntries.map(async (entry) => {
// eslint-disable-next-line no-underscore-dangle
if (!entry._ids) {
Expand All @@ -91,17 +92,18 @@ const convertToExternalIds = async (teamspace, project, containerEntries) => {
{ _id: 0, shared_id: 1, rev_id: 1 });

if (!nodes.length) {
const defaultType = Object.keys(idTypes)[0];
return { container: entry.container, [defaultType]: [] };
return returnOriginalIfNotFound ? entry : { container: entry.container, [defaultType]: [] };
}
const res = await sharedIdsToExternalIds(teamspace, entry.container, nodes[0].rev_id,
nodes.map(({ shared_ids }) => shared_ids));
nodes.map(({ shared_id }) => shared_id));

const convertedObject = { ...entry };
if (res) {
// eslint-disable-next-line no-underscore-dangle
delete convertedObject._ids;
convertedObject[res.type] = res.values;
} else if (!returnOriginalIfNotFound) {
return { container: entry.container, [defaultType]: [] };
}
return convertedObject;
}));
Expand Down Expand Up @@ -143,7 +145,7 @@ TicketGroups.addGroups = async (teamspace, project, model, ticket, groups) => {
const convertedGroups = await Promise.all(groups.map(
async (group) => {
if (group.objects) {
const objects = await convertToExternalIds(teamspace, project, group.objects);
const objects = await convertToExternalIds(teamspace, project, group.objects, true);
return { ...group, objects };
}

Expand All @@ -161,7 +163,7 @@ TicketGroups.updateTicketGroup = async (teamspace, project, model, ticket, group
const convertedData = { ...data };

if (data.objects) {
convertedData.objects = await convertToExternalIds(teamspace, project, data.objects);
convertedData.objects = await convertToExternalIds(teamspace, project, data.objects, true);
}

await updateGroup(teamspace, project, model, ticket, groupId, convertedData, author);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ const getCommonTestCases = (isUpdate) => {
nodes: [],
},
{
desc: `should ${action} a group without conversion if metadata are not found`,
desc: `should ${action} a group without conversion if external ids are not found`,
container,
group: { objects: [{ _ids: [generateRandomString()], container }] },
nodes,
Expand All @@ -262,17 +262,15 @@ const getCommonTestCases = (isUpdate) => {
container,
group: { objects: [{ _ids: [generateRandomString()], container }] },
nodes,
metadata: times(10,
() => ({ metadata: [{ key: idTypesToKeys[idTypes.IFC][0], value: metadataValue }] })),
convertedResults: { type: idTypes.IFC, values: [metadataValue] },
convertedGroup: { objects: [{ [idTypes.IFC]: [metadataValue], container }] },
},
{
desc: `should ${action} a group and convert group ids to ${[idTypes.REVIT]}`,
container,
group: { objects: [{ _ids: [generateRandomString()], container }] },
nodes,
metadata: times(10,
() => ({ metadata: [{ key: idTypesToKeys[idTypes.REVIT][0], value: metadataValue }] })),
convertedResults: { type: idTypes.REVIT, values: [metadataValue] },
convertedGroup: { objects: [{ [idTypes.REVIT]: [metadataValue], container }] },
},
];
Expand All @@ -282,16 +280,15 @@ const testAddGroups = () => {
const teamspace = generateRandomString();
const project = generateRandomString();
const ticket = generateRandomString();
const externalIdKeys = Object.values(idTypesToKeys).flat();

const runTest = ({ desc, container, group, nodes, metadata, convertedGroup, containsMeshIds = true }) => {
const runTest = ({ desc, container, group, nodes, convertedResults, convertedGroup, containsMeshIds = true }) => {
test(desc, async () => {
if (containsMeshIds) {
ScenesModel.getNodesByIds.mockResolvedValueOnce(nodes);
}

if (nodes?.length) {
MetaModel.getMetadataByQuery.mockResolvedValueOnce(metadata);
SceneProcessor.sharedIdsToExternalIds.mockResolvedValueOnce(convertedResults);
}

await Groups.addGroups(teamspace, project, container, ticket, [group]);
Expand All @@ -308,10 +305,9 @@ const testAddGroups = () => {
}

if (nodes?.length) {
expect(MetaModel.getMetadataByQuery).toHaveBeenCalledTimes(1);
expect(MetaModel.getMetadataByQuery).toHaveBeenCalledWith(teamspace, container,
{ rev_id: nodes[0].rev_id, parents: { $in: nodes.map((s) => s.shared_id) }, 'metadata.key': { $in: externalIdKeys } },
{ metadata: { $elemMatch: { $or: externalIdKeys.map((n) => ({ key: n })) } } });
expect(SceneProcessor.sharedIdsToExternalIds).toHaveBeenCalledTimes(1);
expect(SceneProcessor.sharedIdsToExternalIds).toHaveBeenCalledWith(teamspace, container,
nodes[0].rev_id, nodes.map(({ shared_id }) => shared_id));
}
});
};
Expand All @@ -325,16 +321,15 @@ const testUpdateGroup = () => {
const ticket = generateRandomString();
const groupId = generateRandomString();
const author = generateRandomString();
const externalIdKeys = Object.values(idTypesToKeys).flat();

const runTest = ({ desc, container, group, nodes, metadata, convertedGroup, containsMeshIds = true }) => {
const runTest = ({ desc, container, group, nodes, convertedResults, convertedGroup, containsMeshIds = true }) => {
test(desc, async () => {
if (containsMeshIds) {
ScenesModel.getNodesByIds.mockResolvedValueOnce(nodes);
}

if (nodes?.length) {
MetaModel.getMetadataByQuery.mockResolvedValueOnce(metadata);
SceneProcessor.sharedIdsToExternalIds.mockResolvedValueOnce(convertedResults);
}

await Groups.updateTicketGroup(teamspace, project, container, ticket, groupId, group, author);
Expand All @@ -351,10 +346,9 @@ const testUpdateGroup = () => {
}

if (nodes?.length) {
expect(MetaModel.getMetadataByQuery).toHaveBeenCalledTimes(1);
expect(MetaModel.getMetadataByQuery).toHaveBeenCalledWith(teamspace, container,
{ rev_id: nodes[0].rev_id, parents: { $in: nodes.map((s) => s.shared_id) }, 'metadata.key': { $in: externalIdKeys } },
{ metadata: { $elemMatch: { $or: externalIdKeys.map((n) => ({ key: n })) } } });
expect(SceneProcessor.sharedIdsToExternalIds).toHaveBeenCalledTimes(1);
expect(SceneProcessor.sharedIdsToExternalIds).toHaveBeenCalledWith(teamspace, container,
nodes[0].rev_id, nodes.map(({ shared_id }) => shared_id));
}
});
};
Expand Down

0 comments on commit a31d3a4

Please sign in to comment.