@forge/kvs
1.3.1-next.01.3.1-next.0-experimental-75a65ea
out/__test__/index.test.js~
out/__test__/index.test.jsModified+99
Index: package/out/__test__/index.test.js
===================================================================
--- package/out/__test__/index.test.js
+++ package/out/__test__/index.test.js
@@ -1180,5 +1180,104 @@
const { sut } = prepare(response);
const items = [{ key: 'foo', value: 'bar' }];
await expect(sut.batchSet(items)).rejects.toMatchError(new errors_1.ForgeKvsAPIError({ status: 500, statusText: 'Internal Server Error', traceId }, { code: 'INTERNAL_SERVER_ERROR', message: 'An internal server error has occurred' }));
});
+ it('should handle batchDelete correctly with mixed entity and non-entity items', async () => {
+ const response = new Response(JSON.stringify({
+ successfulKeys: [{ key: 'foo', entityName: 'employees' }, { key: 'bar' }],
+ failedKeys: [
+ {
+ key: 'baz',
+ entityName: 'departments',
+ error: { code: 'KEY_NOT_FOUND', message: 'Key does not exist' }
+ }
+ ]
+ }), {
+ status: 200,
+ headers: { 'x-trace-id': traceId }
+ });
+ const { sut, apiClient } = prepare(response);
+ const items = [{ key: 'foo', entityName: 'employees' }, { key: 'bar' }, { key: 'baz', entityName: 'departments' }];
+ const rs = await sut.batchDelete(items);
+ expect(rs).toEqual({
+ successfulKeys: [{ key: 'foo', entityName: 'employees' }, { key: 'bar' }],
+ failedKeys: [
+ {
+ key: 'baz',
+ entityName: 'departments',
+ error: { code: 'KEY_NOT_FOUND', message: 'Key does not exist' }
+ }
+ ]
+ });
+ expect(apiClient).toHaveBeenCalledWith('/api/v1/batch/delete', expect.objectContaining({
+ body: JSON.stringify(items)
+ }));
+ });
+ it('should handle batchDelete with all successful keys', async () => {
+ const response = new Response(JSON.stringify({
+ successfulKeys: [{ key: 'foo' }, { key: 'bar' }],
+ failedKeys: []
+ }), {
+ status: 200,
+ headers: { 'x-trace-id': traceId }
+ });
+ const { sut, apiClient } = prepare(response);
+ const items = [{ key: 'foo' }, { key: 'bar' }];
+ const rs = await sut.batchDelete(items);
+ expect(rs).toEqual({
+ successfulKeys: [{ key: 'foo' }, { key: 'bar' }],
+ failedKeys: []
+ });
+ expect(apiClient).toHaveBeenCalledWith('/api/v1/batch/delete', expect.objectContaining({
+ body: JSON.stringify(items)
+ }));
+ });
+ it('should handle batchDelete with all failed keys', async () => {
+ const response = new Response(JSON.stringify({
+ successfulKeys: [],
+ failedKeys: [
+ {
+ key: 'foo',
+ error: { code: 'PERMISSION_DENIED', message: 'Access denied' }
+ },
+ {
+ key: 'bar',
+ entityName: 'employees',
+ error: { code: 'KEY_NOT_FOUND', message: 'Key does not exist' }
+ }
+ ]
+ }), {
+ status: 200,
+ headers: { 'x-trace-id': traceId }
+ });
+ const { sut, apiClient } = prepare(response);
+ const items = [{ key: 'foo' }, { key: 'bar', entityName: 'employees' }];
+ const rs = await sut.batchDelete(items);
+ expect(rs).toEqual({
+ successfulKeys: [],
+ failedKeys: [
+ {
+ key: 'foo',
+ error: { code: 'PERMISSION_DENIED', message: 'Access denied' }
+ },
+ {
+ key: 'bar',
+ entityName: 'employees',
+ error: { code: 'KEY_NOT_FOUND', message: 'Key does not exist' }
+ }
+ ]
+ });
+ expect(apiClient).toHaveBeenCalledWith('/api/v1/batch/delete', expect.objectContaining({
+ body: JSON.stringify(items)
+ }));
+ });
+ it('should handle batchDelete API error response', async () => {
+ const response = new Response(JSON.stringify({ code: 'INTERNAL_SERVER_ERROR', message: 'An internal server error has occurred' }), {
+ status: 500,
+ statusText: 'Internal Server Error',
+ headers: { 'x-trace-id': traceId }
+ });
+ const { sut } = prepare(response);
+ const items = [{ key: 'foo' }];
+ await expect(sut.batchDelete(items)).rejects.toMatchError(new errors_1.ForgeKvsAPIError({ status: 500, statusText: 'Internal Server Error', traceId }, { code: 'INTERNAL_SERVER_ERROR', message: 'An internal server error has occurred' }));
+ });
});