Skip to content

Commit

Permalink
Add convertRetrieverLastKeyToAttributeValues tests
Browse files Browse the repository at this point in the history
  • Loading branch information
blazejkustra committed Apr 13, 2024
1 parent 8882517 commit 675636c
Showing 1 changed file with 85 additions and 0 deletions.
85 changes: 85 additions & 0 deletions tests/unit/entity/helpers/converters.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
convertAttributeValuesToLastKey,
convertEntityToAttributeValues,
convertPrimaryKeyToAttributeValues,
convertRetrieverLastKeyToAttributeValues,
} from '@lib/entity/helpers/converters';
import * as transformValuesHelpers from '@lib/entity/helpers/transformValues';

Expand Down Expand Up @@ -240,4 +241,88 @@ describe('Converters entity helpers', () => {
expect(transformValueSpy).toBeCalledTimes(1);
});
});

describe('convertRetrieverLastKeyToAttributeValues', async () => {
test('Should return composite primary key in dynamo format', async () => {
getEntityMetadataSpy.mockReturnValue({ ...metadata, indexes: undefined } as any);

const dynamoPrimaryKey = convertRetrieverLastKeyToAttributeValues<TestTableMetadata, typeof MockEntity>(
MockEntity,
{
partitionKey: 'pk_value',
sortKey: 'sk_value',
},
);

expect(dynamoPrimaryKey).toEqual({
partitionKey: {
S: 'pk_value',
},
sortKey: {
S: 'sk_value',
},
});
expect(transformValueSpy).toHaveBeenNthCalledWith(1, MockEntity, metadata.partitionKey, 'pk_value');
expect(transformValueSpy).toHaveBeenNthCalledWith(2, MockEntity, metadata.sortKey, 'sk_value');
});

test('Should return simple primary key in dynamo format', async () => {
getEntityMetadataSpy.mockReturnValue({ partitionKey: 'partitionKey' } as any);

const dynamoPrimaryKey = convertRetrieverLastKeyToAttributeValues(MockEntity, {
partitionKey: 'pk_value',
} as any);

expect(dynamoPrimaryKey).toEqual({
partitionKey: {
S: 'pk_value',
},
});
expect(transformValueSpy).toBeCalledWith(MockEntity, metadata.partitionKey, 'pk_value');
expect(transformValueSpy).toBeCalledTimes(1);
});

test('Should return composite primary key in dynamo format', async () => {
getEntityMetadataSpy.mockReturnValue(metadata as any);

const dynamoPrimaryKey = convertRetrieverLastKeyToAttributeValues<TestTableMetadata, typeof MockEntity>(
MockEntity,
{
partitionKey: 'pk_value',
sortKey: 'sk_value',
GSI_1_PK: 'gsi_1_pk_value',
GSI_1_SK: 111,
LSI_1_SK: 222,
},
);

expect(dynamoPrimaryKey).toEqual({
partitionKey: {
S: 'pk_value',
},
sortKey: {
S: 'sk_value',
},
GSI_1_PK: {
S: 'gsi_1_pk_value',
},
GSI_1_SK: {
N: '111',
},
LSI_1_SK: {
N: '222',
},
});
expect(transformValueSpy).toHaveBeenNthCalledWith(
1,
MockEntity,
metadata.indexes.GSI_1_NAME.partitionKey,
'gsi_1_pk_value',
);
expect(transformValueSpy).toHaveBeenNthCalledWith(2, MockEntity, metadata.indexes.GSI_1_NAME.sortKey, 111);
expect(transformValueSpy).toHaveBeenNthCalledWith(3, MockEntity, metadata.indexes.LSI_1_NAME.sortKey, 222);
expect(transformValueSpy).toHaveBeenNthCalledWith(4, MockEntity, metadata.partitionKey, 'pk_value');
expect(transformValueSpy).toHaveBeenNthCalledWith(5, MockEntity, metadata.sortKey, 'sk_value');
});
});
});

0 comments on commit 675636c

Please sign in to comment.