@sundaeswap/wallet-lite 0.0.96 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/classes/WalletBalanceMap.class.js +1 -1
- package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/cjs/classes/WalletObserverUtils.class.js +2 -1
- package/dist/cjs/classes/WalletObserverUtils.class.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +26 -0
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
- package/dist/cjs/react-components/hooks/useWalletHandles.js +7 -2
- package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/esm/classes/WalletBalanceMap.class.js +1 -1
- package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/esm/classes/WalletObserverUtils.class.js +2 -1
- package/dist/esm/classes/WalletObserverUtils.class.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +21 -0
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
- package/dist/esm/react-components/hooks/useWalletHandles.js +2 -1
- package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/types/classes/WalletObserverUtils.class.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts +10 -0
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts.map +1 -0
- package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/__data__/assets.ts +16 -106
- package/src/__data__/eternl.ts +5 -5
- package/src/classes/WalletBalanceMap.class.ts +1 -1
- package/src/classes/WalletObserverUtils.class.ts +3 -1
- package/src/classes/__tests__/WalletBalanceMap.test.ts +31 -19
- package/src/classes/__tests__/WalletObserver.test.ts +47 -35
- package/src/classes/__tests__/WalletObserverUtils.test.ts +12 -50
- package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +3 -6
- package/src/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.ts +23 -0
- package/src/react-components/__tests__/RenderWallet.test.tsx +13 -2
- package/src/react-components/__tests__/hooks/useAvailableExtensions.test.tsx +13 -2
- package/src/react-components/__tests__/hooks/useWalletObserver.test.tsx +39 -19
- package/src/react-components/__tests__/hooks/useWalletObserverRef.test.tsx +19 -10
- package/src/react-components/hooks/useWalletHandles.ts +6 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -28
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -22
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts +0 -12
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts.map +0 -1
- package/src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts +0 -30
- package/src/react-components/__tests__/RenderWalletHandles.test.tsx +0 -77
|
@@ -3,7 +3,9 @@ import { act } from "@testing-library/react";
|
|
|
3
3
|
import { renderHook } from "@testing-library/react-hooks";
|
|
4
4
|
import { describe, expect, it } from "bun:test";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
7
|
+
import { FC, PropsWithChildren } from "react";
|
|
8
|
+
import { mockedEternlWallet } from "../../../../../setup-tests.js";
|
|
7
9
|
import {
|
|
8
10
|
IWalletObserverProviderProps,
|
|
9
11
|
useAvailableExtensions,
|
|
@@ -12,13 +14,22 @@ import {
|
|
|
12
14
|
|
|
13
15
|
const INTERVAL_AMOUNT = 10;
|
|
14
16
|
|
|
17
|
+
const client = new QueryClient();
|
|
18
|
+
const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
|
|
19
|
+
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
20
|
+
);
|
|
21
|
+
|
|
15
22
|
describe("useAvailableExtensions", () => {
|
|
16
23
|
it("should correctly retrieve the instance", async () => {
|
|
17
24
|
const { result } = renderHook<
|
|
18
25
|
IWalletObserverProviderProps,
|
|
19
26
|
ReturnType<typeof useAvailableExtensions>
|
|
20
27
|
>(() => useAvailableExtensions(INTERVAL_AMOUNT), {
|
|
21
|
-
wrapper: (props) =>
|
|
28
|
+
wrapper: (props) => (
|
|
29
|
+
<QueryProvider>
|
|
30
|
+
<WalletObserverProvider {...props} />
|
|
31
|
+
</QueryProvider>
|
|
32
|
+
),
|
|
22
33
|
});
|
|
23
34
|
|
|
24
35
|
act(() => {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { Cardano } from "@cardano-sdk/core";
|
|
2
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
1
3
|
import { act, renderHook } from "@testing-library/react-hooks";
|
|
2
4
|
import { describe, expect, it } from "bun:test";
|
|
5
|
+
import { FC, PropsWithChildren } from "react";
|
|
3
6
|
|
|
4
|
-
import {
|
|
7
|
+
import { mockWalletAssetIds } from "../../../__data__/assets.js";
|
|
5
8
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
mockNetwork,
|
|
10
|
+
mockUnusedAddresses,
|
|
11
|
+
mockUsedAddresses,
|
|
9
12
|
} from "../../../__data__/eternl.js";
|
|
10
13
|
import { WalletObserver } from "../../../classes/WalletObserver.class.js";
|
|
11
14
|
import {
|
|
@@ -14,6 +17,11 @@ import {
|
|
|
14
17
|
useWalletObserver,
|
|
15
18
|
} from "../../../index.js";
|
|
16
19
|
|
|
20
|
+
const client = new QueryClient();
|
|
21
|
+
const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
|
|
22
|
+
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
23
|
+
);
|
|
24
|
+
|
|
17
25
|
describe("useWalletObserver", () => {
|
|
18
26
|
it("should correctly retrieve the context", async () => {
|
|
19
27
|
const { result } = renderHook<
|
|
@@ -21,16 +29,18 @@ describe("useWalletObserver", () => {
|
|
|
21
29
|
ReturnType<typeof useWalletObserver>
|
|
22
30
|
>(() => useWalletObserver(), {
|
|
23
31
|
wrapper: (props) => (
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
...
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
<QueryProvider>
|
|
33
|
+
<WalletObserverProvider
|
|
34
|
+
{...{
|
|
35
|
+
...props,
|
|
36
|
+
observerOptions: {
|
|
37
|
+
...props.options?.observerOptions,
|
|
38
|
+
// Quick resolve time for tests.
|
|
39
|
+
connectTimeout: 10,
|
|
40
|
+
},
|
|
41
|
+
}}
|
|
42
|
+
/>
|
|
43
|
+
</QueryProvider>
|
|
34
44
|
),
|
|
35
45
|
});
|
|
36
46
|
|
|
@@ -52,11 +62,21 @@ describe("useWalletObserver", () => {
|
|
|
52
62
|
|
|
53
63
|
expect(result.current.activeWallet).toEqual("eternl");
|
|
54
64
|
expect(result.current.adaBalance.amount.toString()).not.toEqual("0");
|
|
55
|
-
expect(result.current.balance.size).toEqual(
|
|
65
|
+
expect(result.current.balance.size).toEqual(mockWalletAssetIds.length);
|
|
56
66
|
expect(result.current.isCip45).toBeFalse();
|
|
57
|
-
expect(result.current.mainAddress).toEqual(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
expect(result.current.
|
|
67
|
+
expect(result.current.mainAddress).toEqual(
|
|
68
|
+
Cardano.Address.fromString(mockUsedAddresses[0])!.toBech32(),
|
|
69
|
+
);
|
|
70
|
+
expect(result.current.network).toEqual(mockNetwork);
|
|
71
|
+
expect(result.current.unusedAddresses).toEqual(
|
|
72
|
+
mockUnusedAddresses.map((cbor) =>
|
|
73
|
+
Cardano.Address.fromString(cbor)!.toBech32(),
|
|
74
|
+
),
|
|
75
|
+
);
|
|
76
|
+
expect(result.current.usedAddresses).toEqual(
|
|
77
|
+
mockUsedAddresses.map((cbor) =>
|
|
78
|
+
Cardano.Address.fromString(cbor)!.toBech32(),
|
|
79
|
+
),
|
|
80
|
+
);
|
|
61
81
|
});
|
|
62
82
|
});
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
1
2
|
import { renderHook } from "@testing-library/react-hooks";
|
|
2
3
|
import { describe, expect, it } from "bun:test";
|
|
4
|
+
import { FC, PropsWithChildren } from "react";
|
|
3
5
|
|
|
4
6
|
import { WalletObserver } from "../../../classes/WalletObserver.class.js";
|
|
5
7
|
import {
|
|
@@ -8,6 +10,11 @@ import {
|
|
|
8
10
|
} from "../../../index.js";
|
|
9
11
|
import { useProviderWalletObserverRef } from "../../WalletObserverProvider/hooks/useProviderWalletObserverRef.js";
|
|
10
12
|
|
|
13
|
+
const client = new QueryClient();
|
|
14
|
+
const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
|
|
15
|
+
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
16
|
+
);
|
|
17
|
+
|
|
11
18
|
describe("useWalletObserverRef", () => {
|
|
12
19
|
it("should correctly retrieve the instance", async () => {
|
|
13
20
|
const { result } = renderHook<
|
|
@@ -15,16 +22,18 @@ describe("useWalletObserverRef", () => {
|
|
|
15
22
|
ReturnType<typeof useProviderWalletObserverRef>
|
|
16
23
|
>(() => useProviderWalletObserverRef(), {
|
|
17
24
|
wrapper: (props) => (
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
...
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
<QueryProvider>
|
|
26
|
+
<WalletObserverProvider
|
|
27
|
+
{...{
|
|
28
|
+
...props,
|
|
29
|
+
observerOptions: {
|
|
30
|
+
...props.options?.observerOptions,
|
|
31
|
+
// Quick resolve time for tests.
|
|
32
|
+
connectTimeout: 10,
|
|
33
|
+
},
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
</QueryProvider>
|
|
28
37
|
),
|
|
29
38
|
});
|
|
30
39
|
|
|
@@ -22,7 +22,12 @@ export const useWalletHandles = <
|
|
|
22
22
|
>({
|
|
23
23
|
queryKey,
|
|
24
24
|
queryFn: async () => {
|
|
25
|
-
|
|
25
|
+
const result = await getHandleMetadata(
|
|
26
|
+
state.balance.getHandles(),
|
|
27
|
+
state.network || 0,
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
return result;
|
|
26
31
|
},
|
|
27
32
|
refetchInterval: false,
|
|
28
33
|
notifyOnChangeProps: ["data", "isLoading"],
|
package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useProviderRefreshInterval = void 0;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
/**
|
|
9
|
-
* Internal use only. This hook is responsible for attaching
|
|
10
|
-
* a refresh interval to the WalletObserver. If set to 0, then
|
|
11
|
-
* the refresh interval is not attached.
|
|
12
|
-
*
|
|
13
|
-
* @param observer
|
|
14
|
-
* @param refreshInterval
|
|
15
|
-
* @param syncWallet
|
|
16
|
-
*/
|
|
17
|
-
var useProviderRefreshInterval = exports.useProviderRefreshInterval = function useProviderRefreshInterval(observer, syncWallet, refreshInterval) {
|
|
18
|
-
(0, _react.useEffect)(function () {
|
|
19
|
-
if (!refreshInterval) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
var interval = setInterval(syncWallet, refreshInterval);
|
|
23
|
-
return function () {
|
|
24
|
-
clearInterval(interval);
|
|
25
|
-
};
|
|
26
|
-
}, [refreshInterval, syncWallet, observer]);
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=useProviderRefreshInterval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderRefreshInterval.js","names":["_react","require","useProviderRefreshInterval","exports","observer","syncWallet","refreshInterval","useEffect","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG,SAA7BA,0BAA0BA,CACrCE,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,EACrB;EACH,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAI,CAACD,eAAe,EAAE;MACpB;IACF;IAEA,IAAME,QAAQ,GAAGC,WAAW,CAACJ,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,YAAM;MACXI,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACF,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
|
package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Internal use only. This hook is responsible for attaching
|
|
4
|
-
* a refresh interval to the WalletObserver. If set to 0, then
|
|
5
|
-
* the refresh interval is not attached.
|
|
6
|
-
*
|
|
7
|
-
* @param observer
|
|
8
|
-
* @param refreshInterval
|
|
9
|
-
* @param syncWallet
|
|
10
|
-
*/
|
|
11
|
-
export const useProviderRefreshInterval = (observer, syncWallet, refreshInterval) => {
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
if (!refreshInterval) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const interval = setInterval(syncWallet, refreshInterval);
|
|
17
|
-
return () => {
|
|
18
|
-
clearInterval(interval);
|
|
19
|
-
};
|
|
20
|
-
}, [refreshInterval, syncWallet, observer]);
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=useProviderRefreshInterval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderRefreshInterval.js","names":["useEffect","useProviderRefreshInterval","observer","syncWallet","refreshInterval","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CACxCC,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,KACrB;EACHJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,eAAe,EAAE;MACpB;IACF;IAEA,MAAMC,QAAQ,GAAGC,WAAW,CAACH,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,MAAM;MACXG,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACD,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
|
|
2
|
-
/**
|
|
3
|
-
* Internal use only. This hook is responsible for attaching
|
|
4
|
-
* a refresh interval to the WalletObserver. If set to 0, then
|
|
5
|
-
* the refresh interval is not attached.
|
|
6
|
-
*
|
|
7
|
-
* @param observer
|
|
8
|
-
* @param refreshInterval
|
|
9
|
-
* @param syncWallet
|
|
10
|
-
*/
|
|
11
|
-
export declare const useProviderRefreshInterval: (observer: WalletObserver, syncWallet: () => Promise<void>, refreshInterval?: number) => void;
|
|
12
|
-
//# sourceMappingURL=useProviderRefreshInterval.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderRefreshInterval.d.ts","sourceRoot":"","sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,aAC3B,cAAc,cACZ,MAAM,QAAQ,IAAI,CAAC,oBACb,MAAM,SAazB,CAAC"}
|
package/src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
|
|
3
|
-
import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Internal use only. This hook is responsible for attaching
|
|
7
|
-
* a refresh interval to the WalletObserver. If set to 0, then
|
|
8
|
-
* the refresh interval is not attached.
|
|
9
|
-
*
|
|
10
|
-
* @param observer
|
|
11
|
-
* @param refreshInterval
|
|
12
|
-
* @param syncWallet
|
|
13
|
-
*/
|
|
14
|
-
export const useProviderRefreshInterval = (
|
|
15
|
-
observer: WalletObserver,
|
|
16
|
-
syncWallet: () => Promise<void>,
|
|
17
|
-
refreshInterval?: number,
|
|
18
|
-
) => {
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (!refreshInterval) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const interval = setInterval(syncWallet, refreshInterval);
|
|
25
|
-
|
|
26
|
-
return () => {
|
|
27
|
-
clearInterval(interval);
|
|
28
|
-
};
|
|
29
|
-
}, [refreshInterval, syncWallet, observer]);
|
|
30
|
-
};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { KoraLabsProvider } from "@koralabs/adahandle-sdk";
|
|
2
|
-
import { render } from "@testing-library/react";
|
|
3
|
-
import { userEvent } from "@testing-library/user-event";
|
|
4
|
-
import { describe, expect, it, spyOn } from "bun:test";
|
|
5
|
-
|
|
6
|
-
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
7
|
-
import { mockHandleMetadata } from "../../__data__/handles.js";
|
|
8
|
-
import {
|
|
9
|
-
RenderWalletHandles,
|
|
10
|
-
TRenderWalletHandlesFunctionState,
|
|
11
|
-
WalletObserverProvider,
|
|
12
|
-
} from "../../index.js";
|
|
13
|
-
|
|
14
|
-
const TestComponent = (state: TRenderWalletHandlesFunctionState) => {
|
|
15
|
-
return (
|
|
16
|
-
<pre>
|
|
17
|
-
{state.activeWallet?.toString()}
|
|
18
|
-
{(state.adaBalance.amount > 0n).toString()}
|
|
19
|
-
{state.isCip45?.toString()}
|
|
20
|
-
{state.mainAddress?.toString()}
|
|
21
|
-
{state.network?.toString()}
|
|
22
|
-
{state.unusedAddresses.toString()}
|
|
23
|
-
{state.usedAddresses.toString()}
|
|
24
|
-
{state.handles &&
|
|
25
|
-
[...state.handles.values()].map(({ metadata }) => (
|
|
26
|
-
<p key={metadata.assetId} data-testid={metadata.name}>
|
|
27
|
-
{JSON.stringify(metadata)}
|
|
28
|
-
</p>
|
|
29
|
-
))}
|
|
30
|
-
<button
|
|
31
|
-
data-testid="connect-with-handles"
|
|
32
|
-
onClick={() => state.connectWallet("eternl")}
|
|
33
|
-
></button>
|
|
34
|
-
</pre>
|
|
35
|
-
);
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
describe("RenderWalletHandles", () => {
|
|
39
|
-
it("should successfully update state with handle metadata", async () => {
|
|
40
|
-
const user = userEvent.setup();
|
|
41
|
-
const spiedOnGetAllDataBatch = spyOn(
|
|
42
|
-
KoraLabsProvider.prototype,
|
|
43
|
-
"getAllDataBatch",
|
|
44
|
-
);
|
|
45
|
-
spiedOnGetAllDataBatch.mockImplementation(
|
|
46
|
-
// @ts-expect-error Bug in Bun.sh that mocks the function result rather than the reference.
|
|
47
|
-
() => async () => mockHandleMetadata,
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
const { container, getByTestId, queryByTestId, rerender } = render(
|
|
51
|
-
<RenderWalletHandles render={TestComponent} />,
|
|
52
|
-
{
|
|
53
|
-
wrapper(props) {
|
|
54
|
-
return (
|
|
55
|
-
<QueryClientProvider client={new QueryClient()}>
|
|
56
|
-
<WalletObserverProvider {...props} />
|
|
57
|
-
</QueryClientProvider>
|
|
58
|
-
);
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
expect(spiedOnGetAllDataBatch).not.toHaveBeenCalled();
|
|
64
|
-
expect(queryByTestId("calvin")).toBeNull();
|
|
65
|
-
expect(queryByTestId("pi")).toBeNull();
|
|
66
|
-
expect(container.innerHTML).toMatchSnapshot();
|
|
67
|
-
|
|
68
|
-
const button = getByTestId("connect-with-handles");
|
|
69
|
-
await user.click(button);
|
|
70
|
-
expect(spiedOnGetAllDataBatch).toHaveBeenCalled();
|
|
71
|
-
|
|
72
|
-
rerender(<RenderWalletHandles render={TestComponent} />);
|
|
73
|
-
expect(queryByTestId("calvin")).not.toBeNull();
|
|
74
|
-
expect(queryByTestId("pi")).not.toBeNull();
|
|
75
|
-
expect(container.innerHTML).toMatchSnapshot();
|
|
76
|
-
});
|
|
77
|
-
});
|