70 lines
2.3 KiB
TypeScript
70 lines
2.3 KiB
TypeScript
import { RelationMetadataInterface } from 'src/tenant/schema-builder/interfaces/relation-metadata.interface';
|
|
|
|
import { RelationMetadataType } from 'src/metadata/relation-metadata/relation-metadata.entity';
|
|
import {
|
|
deduceRelationDirection,
|
|
RelationDirection,
|
|
} from 'src/tenant/utils/deduce-relation-direction.util';
|
|
|
|
describe('deduceRelationDirection', () => {
|
|
it('should return FROM when the current object Metadata ID matches fromObjectMetadataId', () => {
|
|
const currentObjectId = 'from_object_id';
|
|
const relationMetadata = {
|
|
id: 'relation_id',
|
|
fromObjectMetadataId: currentObjectId,
|
|
toObjectMetadataId: 'to_object_id',
|
|
fromFieldMetadataId: 'from_field_id',
|
|
toFieldMetadataId: 'to_field_id',
|
|
relationType: RelationMetadataType.ONE_TO_ONE,
|
|
};
|
|
|
|
const result = deduceRelationDirection(
|
|
currentObjectId,
|
|
relationMetadata as RelationMetadataInterface,
|
|
);
|
|
|
|
expect(result).toBe(RelationDirection.FROM);
|
|
});
|
|
|
|
it('should return TO when the current object Metadata ID matches toObjectMetadataId', () => {
|
|
// Arrange
|
|
const currentObjectId = 'to_object_id';
|
|
const relationMetadata = {
|
|
id: 'relation_id',
|
|
fromObjectMetadataId: 'from_object_id',
|
|
toObjectMetadataId: currentObjectId,
|
|
fromFieldMetadataId: 'from_field_id',
|
|
toFieldMetadataId: 'to_field_id',
|
|
relationType: RelationMetadataType.ONE_TO_ONE,
|
|
};
|
|
|
|
const result = deduceRelationDirection(
|
|
currentObjectId,
|
|
relationMetadata as RelationMetadataInterface,
|
|
);
|
|
|
|
expect(result).toBe(RelationDirection.TO);
|
|
});
|
|
|
|
it('should throw an error when the current object Metadata ID does not match any object metadata ID', () => {
|
|
const currentObjectId = 'unrelated_object_id';
|
|
const relationMetadata = {
|
|
id: 'relation_id',
|
|
fromObjectMetadataId: 'from_object_id',
|
|
toObjectMetadataId: 'to_object_id',
|
|
fromFieldMetadataId: 'from_field_id',
|
|
toFieldMetadataId: 'to_field_id',
|
|
relationType: RelationMetadataType.ONE_TO_ONE,
|
|
};
|
|
|
|
expect(() =>
|
|
deduceRelationDirection(
|
|
currentObjectId,
|
|
relationMetadata as RelationMetadataInterface,
|
|
),
|
|
).toThrow(
|
|
`Relation metadata ${relationMetadata.id} is not related to object ${currentObjectId}`,
|
|
);
|
|
});
|
|
});
|