Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { StyledScope } from '@/components/auth0/shared/styled-scope';
import { Wizard } from '@/components/auth0/shared/wizard';
import type { StepProps } from '@/components/auth0/shared/wizard';
import { useSsoProviderCreate } from '@/hooks/my-organization/use-sso-provider-create';
import { useSsoProviderCreateLogic } from '@/hooks/my-organization/use-sso-provider-create-logic';
import { useTheme } from '@/hooks/shared/use-theme';
import { useTranslator } from '@/hooks/shared/use-translator';
import type {
Expand Down Expand Up @@ -48,25 +47,23 @@ function SsoProviderCreate(props: SsoProviderCreateProps) {
onPrevious,
} = props;

const { createProvider, isCreating } = useSsoProviderCreate({
createAction,
customMessages,
});
const {
formData,
detailsRef,
configureRef,
setFormData,
handleCreate,
createStepActions,
isCreating,
isLoadingConfig,
filteredStrategies,
isLoadingIdpConfig,
idpConfig,
} = useSsoProviderCreateLogic({
} = useSsoProviderCreate({
createAction,
customMessages,
onNext,
onPrevious,
createProvider,
});

const { strategy, details, configure } = formData;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { renderHook, act } from '@testing-library/react';
import { describe, it, expect, vi, beforeEach } from 'vitest';

import { useSsoProviderCreateLogic } from '../use-sso-provider-create-logic';
import { useSsoProviderCreate } from '../use-sso-provider-create';

// Mock useConfig and useIdpConfig to avoid hitting queryClient or network
vi.mock('@/hooks/my-organization/use-config', () => ({
useConfig: () => ({
isLoadingConfig: false,
Expand All @@ -16,23 +15,27 @@ vi.mock('@/hooks/my-organization/use-idp-config', () => ({
idpConfig: {},
}),
}));
vi.mock('@/hooks/my-organization/shared/services/use-sso-provider-create-service', () => ({
useSsoProviderCreateService: () => ({
createProvider: mockCreateProvider,
isCreating: false,
}),
}));

// Minimal local mocks
const mockCreateProvider = vi.fn();
const mockOnNext = vi.fn();
const mockOnPrevious = vi.fn();

describe('useSsoProviderCreateLogic', () => {
describe('useSsoProviderCreate - logic behavior', () => {
beforeEach(() => {
vi.clearAllMocks();
});

it('should initialize formData and refs', () => {
const { result } = renderHook(() =>
useSsoProviderCreateLogic({
useSsoProviderCreate({
onNext: mockOnNext,
onPrevious: mockOnPrevious,
createProvider: mockCreateProvider,
}),
);
expect(result.current.formData).toEqual({});
Expand All @@ -42,10 +45,9 @@ describe('useSsoProviderCreateLogic', () => {

it('should update formData via setFormData', () => {
const { result } = renderHook(() =>
useSsoProviderCreateLogic({
useSsoProviderCreate({
onNext: mockOnNext,
onPrevious: mockOnPrevious,
createProvider: mockCreateProvider,
}),
);
act(() => {
Expand All @@ -63,10 +65,9 @@ describe('useSsoProviderCreateLogic', () => {

it('should call createProvider with merged data on handleCreate', async () => {
const { result } = renderHook(() =>
useSsoProviderCreateLogic({
useSsoProviderCreate({
onNext: mockOnNext,
onPrevious: mockOnPrevious,
createProvider: mockCreateProvider,
}),
);
act(() => {
Expand All @@ -75,7 +76,6 @@ describe('useSsoProviderCreateLogic', () => {
details: { name: 'test', display_name: 'test provider' },
});
});
// Mock configureRef.current.getData
result.current.configureRef.current = {
validate: vi.fn().mockResolvedValue(true),
getData: vi
Expand All @@ -94,13 +94,11 @@ describe('useSsoProviderCreateLogic', () => {

it('createStepActions calls onNext and onPrevious handlers', async () => {
const { result } = renderHook(() =>
useSsoProviderCreateLogic({
useSsoProviderCreate({
onNext: mockOnNext,
onPrevious: mockOnPrevious,
createProvider: mockCreateProvider,
}),
);
// Mock ref with validate and getData
const ref = {
current: {
validate: vi.fn().mockResolvedValue(true),
Expand All @@ -126,10 +124,9 @@ describe('useSsoProviderCreateLogic', () => {

it('createStepActions returns false if validation fails', async () => {
const { result } = renderHook(() =>
useSsoProviderCreateLogic({
useSsoProviderCreate({
onNext: mockOnNext,
onPrevious: mockOnPrevious,
createProvider: mockCreateProvider,
}),
);
const ref = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { renderHook, waitFor } from '@testing-library/react';
import { describe, expect, it, vi, beforeEach, type Mock } from 'vitest';

import { showToast } from '@/components/auth0/shared/toast';
import { useSsoProviderCreate } from '@/hooks/my-organization/use-sso-provider-create';
import { useSsoProviderCreateService } from '@/hooks/my-organization/shared/services/use-sso-provider-create-service';
import { useCoreClient } from '@/hooks/shared/use-core-client';
import { useErrorHandler } from '@/hooks/shared/use-error-handler';
import { useTranslator } from '@/hooks/shared/use-translator';
Expand All @@ -17,7 +17,7 @@ vi.mock('@/hooks/shared/use-translator');
vi.mock('@/components/auth0/shared/toast');
vi.mock('@/hooks/shared/use-error-handler');

describe('useSsoProviderCreate', () => {
describe('useSsoProviderCreateService', () => {
const mockCreate = vi.fn();
let mockHandleError: Mock;

Expand Down Expand Up @@ -65,13 +65,15 @@ describe('useSsoProviderCreate', () => {
(useErrorHandler as Mock).mockReturnValue(mockHandleError);
});

const renderUseSsoProviderCreate = (...args: Parameters<typeof useSsoProviderCreate>) => {
const renderUseSsoProviderCreateService = (
...args: Parameters<typeof useSsoProviderCreateService>
) => {
const { wrapper } = createTestQueryClientWrapper();
return renderHook(() => useSsoProviderCreate(...args), { wrapper });
return renderHook(() => useSsoProviderCreateService(...args), { wrapper });
};

it('should initialize with isCreating as false', () => {
const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

expect(result.current.isCreating).toBe(false);
expect(typeof result.current.createProvider).toBe('function');
Expand All @@ -87,7 +89,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockResolvedValue(mockIdentityProvider);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(mockProviderData)).resolves.toBeUndefined();

Expand All @@ -113,7 +115,7 @@ describe('useSsoProviderCreate', () => {
() => new Promise((resolve) => setTimeout(() => resolve(mockIdentityProvider), 100)),
);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

const createPromise = result.current.createProvider(mockProviderData);

Expand Down Expand Up @@ -145,7 +147,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(error);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(mockProviderData)).rejects.toBeDefined();

Expand Down Expand Up @@ -178,7 +180,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(error);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(baseOktaProviderData)).rejects.toBeDefined();

Expand All @@ -201,7 +203,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(error);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(baseOktaProviderData)).rejects.toBeDefined();

Expand All @@ -223,7 +225,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(error);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(baseOktaProviderData)).rejects.toBeDefined();

Expand All @@ -243,7 +245,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(error);

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(baseOktaProviderData)).rejects.toBeDefined();

Expand All @@ -265,7 +267,7 @@ describe('useSsoProviderCreate', () => {

mockCreate.mockRejectedValue(new Error('Network error'));

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(mockProviderData)).rejects.toBeDefined();

Expand All @@ -288,7 +290,7 @@ describe('useSsoProviderCreate', () => {
const onBefore = vi.fn().mockReturnValue(true);
mockCreate.mockResolvedValue(mockIdentityProvider);

const { result } = renderUseSsoProviderCreate({
const { result } = renderUseSsoProviderCreateService({
createAction: { onBefore },
});

Expand All @@ -310,7 +312,7 @@ describe('useSsoProviderCreate', () => {

const onBefore = vi.fn().mockReturnValue(false);

const { result } = renderUseSsoProviderCreate({
const { result } = renderUseSsoProviderCreateService({
createAction: { onBefore },
});

Expand All @@ -334,7 +336,7 @@ describe('useSsoProviderCreate', () => {
const onAfter = vi.fn();
mockCreate.mockResolvedValue(mockIdentityProvider);

const { result } = renderUseSsoProviderCreate({
const { result } = renderUseSsoProviderCreateService({
createAction: { onAfter },
});

Expand All @@ -356,7 +358,7 @@ describe('useSsoProviderCreate', () => {
const onAfter = vi.fn();
mockCreate.mockRejectedValue(new Error('Creation failed'));

const { result } = renderUseSsoProviderCreate({
const { result } = renderUseSsoProviderCreateService({
createAction: { onAfter },
});

Expand All @@ -377,7 +379,7 @@ describe('useSsoProviderCreate', () => {
signingCert: 'cert123',
};

const { result } = renderUseSsoProviderCreate();
const { result } = renderUseSsoProviderCreateService();

await expect(result.current.createProvider(mockProviderData)).resolves.toBeUndefined();

Expand Down
Loading
Loading