From 06b60d7874c7d4fbb6dd857294fe6c3ecd1c9725 Mon Sep 17 00:00:00 2001 From: Pedro Bonamin Date: Mon, 8 Apr 2024 11:49:11 +0200 Subject: [PATCH] chore(tasks): add tests to TasksEnabledProvider --- .../enabled/TasksEnabledProvider.test.tsx | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 packages/sanity/src/tasks/src/tasks/context/enabled/TasksEnabledProvider.test.tsx diff --git a/packages/sanity/src/tasks/src/tasks/context/enabled/TasksEnabledProvider.test.tsx b/packages/sanity/src/tasks/src/tasks/context/enabled/TasksEnabledProvider.test.tsx new file mode 100644 index 000000000000..d3a9bfb952c2 --- /dev/null +++ b/packages/sanity/src/tasks/src/tasks/context/enabled/TasksEnabledProvider.test.tsx @@ -0,0 +1,63 @@ +import {beforeEach, describe, expect, it, jest} from '@jest/globals' +import {renderHook} from '@testing-library/react' + +import {TasksEnabledProvider} from './TasksEnabledProvider' +import {useTasksEnabled} from './useTasksEnabled' + +// Mocks for useFeatureEnabled and useWorkspace hooks +jest.mock('sanity', () => { + return { + useFeatureEnabled: jest.fn(), + useWorkspace: jest.fn(), + } +}) + +describe('TasksEnabledProvider', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + it('should not show tasks if user opt out and the feature is not enabled (any plan)', () => { + require('sanity').useFeatureEnabled.mockReturnValue({enabled: false, isLoading: false}) + require('sanity').useWorkspace.mockReturnValue({tasks: {enabled: false}}) + + const value = renderHook(useTasksEnabled, {wrapper: TasksEnabledProvider}) + + expect(value.result.current).toEqual({enabled: false, mode: null}) + }) + it('should not show tasks if user opt out and the feature is enabled (any plan)', () => { + require('sanity').useFeatureEnabled.mockReturnValue({enabled: true, isLoading: false}) + require('sanity').useWorkspace.mockReturnValue({tasks: {enabled: false}}) + + const value = renderHook(useTasksEnabled, {wrapper: TasksEnabledProvider}) + + expect(value.result.current).toEqual({enabled: false, mode: null}) + }) + + it('should show default mode if user hasnt opted out and the feature is enabled (growth or above)', () => { + require('sanity').useFeatureEnabled.mockReturnValue({enabled: true, isLoading: false}) + require('sanity').useWorkspace.mockReturnValue({tasks: {enabled: true}}) + + const value = renderHook(useTasksEnabled, {wrapper: TasksEnabledProvider}) + + expect(value.result.current).toEqual({enabled: true, mode: 'default'}) + }) + + it('should show upsell mode if user has not opt out and the feature is not enabled (free plans)', () => { + require('sanity').useFeatureEnabled.mockReturnValue({enabled: false, isLoading: false}) + require('sanity').useWorkspace.mockReturnValue({tasks: {enabled: true}}) + + const value = renderHook(useTasksEnabled, {wrapper: TasksEnabledProvider}) + + expect(value.result.current).toEqual({enabled: true, mode: 'upsell'}) + }) + + it('should not show tasks if it is loading the feature', () => { + require('sanity').useFeatureEnabled.mockReturnValue({enabled: false, isLoading: true}) + require('sanity').useWorkspace.mockReturnValue({tasks: {enabled: true}}) + + const value = renderHook(useTasksEnabled, {wrapper: TasksEnabledProvider}) + + expect(value.result.current).toEqual({enabled: false, mode: null}) + }) +})