@forge/react
11.13.0-next.0-experimental-bf21d1e11.13.0-next.1
~
Modified (4 files)
Index: package/out/hooks/__test__/usePermissions.test.js
===================================================================
--- package/out/hooks/__test__/usePermissions.test.js
+++ package/out/hooks/__test__/usePermissions.test.js
@@ -739,8 +739,33 @@
expect(result.current.hasPermission).toBe(false);
expect(result.current.missingPermissions?.external?.fetch?.client).toEqual(['http://example.com']);
});
});
+ describe('Input shape validation', () => {
+ beforeEach(() => {
+ mockGetContext.mockResolvedValue({
+ permissions: { scopes: ['read:confluence-content'] }
+ });
+ });
+ it.each([
+ [{ scopes: 'read:confluence-content' }, 'scopes should be an array, not a string'],
+ [{ external: 'https://api.example.com' }, 'external should be an object, not a string'],
+ [{ external: { fetch: ['https://api.example.com'] } }, 'external.fetch should be an object, not an array'],
+ [
+ { external: { fetch: { backend: 'https://api.zoom.com' } } },
+ 'external.fetch.backend should be an array, not a string'
+ ]
+ ])('should set error for invalid input %#', async (requiredPermissions, expectedMessage) => {
+ const { result } = (0, react_hooks_1.renderHook)(() => (0, usePermissions_1.usePermissions)(requiredPermissions));
+ await (0, react_hooks_1.act)(async () => {
+ await new Promise((resolve) => setTimeout(resolve, 10));
+ });
+ expect(result.current.isLoading).toBe(false);
+ expect(result.current.hasPermission).toBe(false);
+ expect(result.current.error).toBeInstanceOf(TypeError);
+ expect(result.current.error?.message).toBe(expectedMessage);
+ });
+ });
describe('Edge cases', () => {
it('should handle empty required permissions', async () => {
const mockContext = {
permissions: { Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@forge/react",
- "version": "11.13.0-next.0-experimental-bf21d1e",
+ "version": "11.13.0-next.1",
"description": "Forge React reconciler",
"author": "Atlassian",
"license": "SEE LICENSE IN LICENSE.txt",
"main": "out/index.js",
@@ -31,9 +31,9 @@
"dependencies": {
"@atlaskit/adf-schema": "^48.0.0",
"@atlaskit/adf-utils": "^19.19.0",
"@atlaskit/forge-react-types": "^0.62.0",
- "@forge/bridge": "^5.13.1-next.1-experimental-bf21d1e",
+ "@forge/bridge": "^5.14.0-next.4",
"@forge/egress": "^2.3.1",
"@forge/i18n": "0.0.7",
"@types/react": "^18.2.64",
"@types/react-reconciler": "^0.28.8", Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,15 +1,16 @@
# @forge/react
-## 11.13.0-next.0-experimental-bf21d1e
+## 11.13.0-next.1
### Minor Changes
-- fdb2861: Export Global Component prop types
+- 16a4b01: Updated SDK to throw type error
### Patch Changes
-- @forge/[email protected]
+- Updated dependencies [16a4b01]
+ - @forge/[email protected]
## 11.13.0-next.0
### Minor Changes File too large for inline diff