npm package diff

Package: @forge/sql

Versions: 2.2.0-next.2 - 2.2.0-next.3

File: package/out/__test__/sql.test.js

Index: package/out/__test__/sql.test.js
===================================================================
--- package/out/__test__/sql.test.js
+++ package/out/__test__/sql.test.js
@@ -3,9 +3,9 @@
 const node_fetch_1 = require("node-fetch");
 const api_1 = require("@forge/api");
 const sql_1 = require("../sql");
 const sql_statement_1 = require("../sql-statement");
-const response_handler_1 = require("../utils/response-handler");
+const errors_1 = require("../errors");
 jest.mock('@forge/api');
 describe('SqlClient', () => {
     let sqlClient;
     let mockFetch;
@@ -82,14 +82,22 @@
                 headers: { 'Content-Type': 'application/json' }
             });
             expect(result).toEqual({ rows: [] });
         });
-        it('should handle errors from getResponseBody', async () => {
+        it('should handle invalid JSON body', async () => {
             const responseText = 'Invalid JSON';
             const response = new node_fetch_1.Response(responseText, { status: 200 });
             mockFetch.mockResolvedValue(response);
-            await expect(sqlClient.storageApi('INVALID SQL QUERY')).rejects.toThrow(`Unexpected error. Response was not valid JSON: ${responseText}`);
+            await expect(sqlClient.storageApi('SELECT * from strange;')).rejects.toThrow(`Unexpected error. Response was not valid JSON: ${responseText}`);
         });
+        it('should throw ForgeSQLAPIError on API error', async () => {
+            const forgeError = { code: 'INVALID_QUERY', message: 'Invalid SQL query' };
+            const mockResponse = new node_fetch_1.Response(JSON.stringify(forgeError), {
+                status: 400
+            });
+            mockFetch.mockResolvedValue(mockResponse);
+            await expect(sqlClient.storageApi('INVALID SQL QUERY')).rejects.toThrow(new errors_1.ForgeSQLAPIError(mockResponse, forgeError));
+        });
     });
     describe('prepare', () => {
         it('should return a SqlStatement instance with query', () => {
             const statement = sqlClient.prepare('INSERT INTO test VALUES (?, ?)');
@@ -111,9 +119,41 @@
                 .execute();
             expect(result).toEqual(mockResult);
         });
         it('should handle API errors', async () => {
-            mockFetch.mockResolvedValue(new node_fetch_1.Response(JSON.stringify({ code: 'INVALID_QUERY', message: 'Invalid SQL query' }), { status: 400 }));
-            await expect(sqlClient.executeRaw('INVALID SQL QUERY')).rejects.toThrow(new response_handler_1.ApiError(400, 'INVALID_QUERY', 'Invalid SQL query'));
+            const forgeError = { code: 'INVALID_QUERY', message: 'Invalid SQL query' };
+            const mockResponse = new node_fetch_1.Response(JSON.stringify(forgeError), {
+                status: 400
+            });
+            mockFetch.mockResolvedValue(mockResponse);
+            await expect(sqlClient.executeRaw('INVALID SQL QUERY')).rejects.toThrow(new errors_1.ForgeSQLAPIError(mockResponse, forgeError));
         });
     });
+    describe('_provision', () => {
+        it('should work if the response is a 201', async () => {
+            const mockResponse = new node_fetch_1.Response(JSON.stringify({ success: true }), {
+                status: 201,
+                statusText: 'OK'
+            });
+            mockFetch.mockResolvedValue(mockResponse);
+            await sqlClient._provision();
+            expect(mockFetch).toHaveBeenCalledWith('/api/v1/provision', expect.objectContaining({ method: 'POST' }));
+        });
+        it('should work if the response is a 204', async () => {
+            const mockResponse = new node_fetch_1.Response(undefined, {
+                status: 204,
+                statusText: 'OK'
+            });
+            mockFetch.mockResolvedValue(mockResponse);
+            await sqlClient._provision();
+            expect(mockFetch).toHaveBeenCalledWith('/api/v1/provision', expect.objectContaining({ method: 'POST' }));
+        });
+        it('should throw an error if the response is not 201 or 204', async () => {
+            const mockResponse = new node_fetch_1.Response('Server Error', {
+                status: 500,
+                statusText: 'Bad Request'
+            });
+            mockFetch.mockResolvedValue(mockResponse);
+            await expect(sqlClient._provision()).rejects.toThrow('Unexpected error in provision request');
+        });
+    });
 });