diff --git a/.changeset/swift-cooks-reply.md b/.changeset/swift-cooks-reply.md
new file mode 100644
index 000000000..1f9ef2cc1
--- /dev/null
+++ b/.changeset/swift-cooks-reply.md
@@ -0,0 +1,5 @@
+---
+'@scaleway/use-segment': patch
+---
+
+fix(useSegment): add test and missing dep on useEffect
diff --git a/packages/use-segment/src/__tests__/SegmentProvider.test.tsx b/packages/use-segment/src/__tests__/SegmentProvider.test.tsx
index e0e09ee56..23b8c05ca 100644
--- a/packages/use-segment/src/__tests__/SegmentProvider.test.tsx
+++ b/packages/use-segment/src/__tests__/SegmentProvider.test.tsx
@@ -1,4 +1,4 @@
-import { describe, expect, it, jest } from '@jest/globals'
+import { afterAll, describe, expect, it, jest } from '@jest/globals'
import type { Context } from '@segment/analytics-next'
import { AnalyticsBrowser } from '@segment/analytics-next'
import { render, screen, waitFor } from '@testing-library/react'
@@ -8,6 +8,14 @@ import type { Analytics } from '../index'
const TestChildren = () =>
children
describe('SegmentProvider', () => {
+ beforeEach(() => {
+ jest.clearAllMocks()
+ })
+
+ afterAll(() => {
+ jest.restoreAllMocks()
+ })
+
it('Provider should render children when shouldRenderOnlyWhenReady is false', async () => {
const mock = jest
.spyOn(AnalyticsBrowser, 'load')
@@ -110,4 +118,48 @@ describe('SegmentProvider', () => {
expect(screen.queryByTestId('test')).toBeTruthy()
})
+
+ it('Provider should not render children when options are not loaded at first render, but load after options changed even without settings', async () => {
+ const mock = jest
+ .spyOn(AnalyticsBrowser, 'load')
+ .mockResolvedValue([{} as Analytics, {} as Context])
+
+ const { rerender } = render(
+ () => Promise.resolve(),
+ }}
+ >
+
+ ,
+ )
+
+ await waitFor(() => {
+ expect(mock).toHaveBeenCalledTimes(0)
+ })
+
+ expect(screen.queryByTestId('test')).toBe(null)
+
+ rerender(
+ () => Promise.resolve(),
+ }}
+ >
+
+ ,
+ )
+
+ await waitFor(() => {
+ expect(mock).toHaveBeenCalledTimes(0)
+ })
+
+ expect(screen.queryByTestId('test')).toBeTruthy()
+ })
})
diff --git a/packages/use-segment/src/__tests__/index.tsx b/packages/use-segment/src/__tests__/index.tsx
index 972116dfc..6f9bcc7a5 100644
--- a/packages/use-segment/src/__tests__/index.tsx
+++ b/packages/use-segment/src/__tests__/index.tsx
@@ -68,6 +68,10 @@ const wrapper =
describe('segment hook', () => {
beforeEach(() => {
+ jest.clearAllMocks()
+ })
+
+ afterAll(() => {
jest.restoreAllMocks()
})