From 6749fe326b6627c9006400e73efdf596e02fca38 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Sat, 24 Jan 2026 12:44:57 +0100 Subject: [PATCH] view data fixes --- apps/website/lib/adapters/MediaAdapter.ts | 2 + .../lib/{ => gateways}/api/ApiClient.ts | 0 .../api/admin/AdminApiClient.test.ts | 0 .../api/admin/AdminApiClient.ts | 0 .../api/analytics/AnalyticsApiClient.test.ts | 0 .../api/analytics/AnalyticsApiClient.ts | 0 .../api/auth/AuthApiClient.test.ts | 0 .../{ => gateways}/api/auth/AuthApiClient.ts | 0 .../api/base/ApiConnectionMonitor.test.ts | 0 .../api/base/ApiConnectionMonitor.ts | 0 .../{ => gateways}/api/base/ApiError.test.ts | 0 .../lib/{ => gateways}/api/base/ApiError.ts | 0 .../api/base/BaseApiClient.test.ts | 0 .../{ => gateways}/api/base/BaseApiClient.ts | 0 .../api/base/GracefulDegradation.test.ts | 0 .../api/base/GracefulDegradation.ts | 0 .../api/base/RetryHandler.test.ts | 0 .../{ => gateways}/api/base/RetryHandler.ts | 0 .../api/dashboard/DashboardApiClient.test.ts | 0 .../api/dashboard/DashboardApiClient.ts | 0 .../api/drivers/DriversApiClient.test.ts | 0 .../api/drivers/DriversApiClient.ts | 0 .../lib/{ => gateways}/api/index.test.ts | 0 .../api/leagues/LeaguesApiClient.test.ts | 0 .../api/leagues/LeaguesApiClient.ts | 0 .../api/media/MediaApiClient.test.ts | 0 .../api/media/MediaApiClient.ts | 0 .../api/payments/PaymentsApiClient.test.ts | 0 .../api/payments/PaymentsApiClient.ts | 0 .../api/penalties/PenaltiesApiClient.test.ts | 0 .../api/penalties/PenaltiesApiClient.ts | 0 .../api/policy/PolicyApiClient.test.ts | 0 .../api/policy/PolicyApiClient.ts | 0 .../api/protests/ProtestsApiClient.test.ts | 0 .../api/protests/ProtestsApiClient.ts | 0 .../api/races/RacesApiClient.test.ts | 0 .../api/races/RacesApiClient.ts | 0 .../api/sponsors/SponsorsApiClient.test.ts | 0 .../api/sponsors/SponsorsApiClient.ts | 0 .../api/teams/TeamsApiClient.test.ts | 0 .../api/teams/TeamsApiClient.ts | 0 .../api/wallets/WalletsApiClient.test.ts | 0 .../api/wallets/WalletsApiClient.ts | 0 .../lib/{ => gateways}/apiClient.test.ts | 0 apps/website/lib/{ => gateways}/apiClient.ts | 2 +- .../ActionsPageQuery.ts | 0 .../page-queries/OnboardingPageQuery.test.ts | 91 +++++++++++++++++++ 47 files changed, 94 insertions(+), 1 deletion(-) rename apps/website/lib/{ => gateways}/api/ApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/admin/AdminApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/admin/AdminApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/analytics/AnalyticsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/analytics/AnalyticsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/auth/AuthApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/auth/AuthApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/base/ApiConnectionMonitor.test.ts (100%) rename apps/website/lib/{ => gateways}/api/base/ApiConnectionMonitor.ts (100%) rename apps/website/lib/{ => gateways}/api/base/ApiError.test.ts (100%) rename apps/website/lib/{ => gateways}/api/base/ApiError.ts (100%) rename apps/website/lib/{ => gateways}/api/base/BaseApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/base/BaseApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/base/GracefulDegradation.test.ts (100%) rename apps/website/lib/{ => gateways}/api/base/GracefulDegradation.ts (100%) rename apps/website/lib/{ => gateways}/api/base/RetryHandler.test.ts (100%) rename apps/website/lib/{ => gateways}/api/base/RetryHandler.ts (100%) rename apps/website/lib/{ => gateways}/api/dashboard/DashboardApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/dashboard/DashboardApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/drivers/DriversApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/drivers/DriversApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/index.test.ts (100%) rename apps/website/lib/{ => gateways}/api/leagues/LeaguesApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/leagues/LeaguesApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/media/MediaApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/media/MediaApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/payments/PaymentsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/payments/PaymentsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/penalties/PenaltiesApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/penalties/PenaltiesApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/policy/PolicyApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/policy/PolicyApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/protests/ProtestsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/protests/ProtestsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/races/RacesApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/races/RacesApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/sponsors/SponsorsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/sponsors/SponsorsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/teams/TeamsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/teams/TeamsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/api/wallets/WalletsApiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/api/wallets/WalletsApiClient.ts (100%) rename apps/website/lib/{ => gateways}/apiClient.test.ts (100%) rename apps/website/lib/{ => gateways}/apiClient.ts (64%) rename apps/website/lib/{queries => page-queries}/ActionsPageQuery.ts (100%) create mode 100644 apps/website/lib/page-queries/OnboardingPageQuery.test.ts diff --git a/apps/website/lib/adapters/MediaAdapter.ts b/apps/website/lib/adapters/MediaAdapter.ts index f24ca085d..7e3d95774 100644 --- a/apps/website/lib/adapters/MediaAdapter.ts +++ b/apps/website/lib/adapters/MediaAdapter.ts @@ -10,6 +10,8 @@ import { Result } from '@/lib/contracts/Result'; import { DomainError } from '@/lib/contracts/services/Service'; import { MediaBinaryDTO } from '@/lib/types/MediaBinaryDTO'; +// TODO why is this an adapter? + /** * MediaAdapter * diff --git a/apps/website/lib/api/ApiClient.ts b/apps/website/lib/gateways/api/ApiClient.ts similarity index 100% rename from apps/website/lib/api/ApiClient.ts rename to apps/website/lib/gateways/api/ApiClient.ts diff --git a/apps/website/lib/api/admin/AdminApiClient.test.ts b/apps/website/lib/gateways/api/admin/AdminApiClient.test.ts similarity index 100% rename from apps/website/lib/api/admin/AdminApiClient.test.ts rename to apps/website/lib/gateways/api/admin/AdminApiClient.test.ts diff --git a/apps/website/lib/api/admin/AdminApiClient.ts b/apps/website/lib/gateways/api/admin/AdminApiClient.ts similarity index 100% rename from apps/website/lib/api/admin/AdminApiClient.ts rename to apps/website/lib/gateways/api/admin/AdminApiClient.ts diff --git a/apps/website/lib/api/analytics/AnalyticsApiClient.test.ts b/apps/website/lib/gateways/api/analytics/AnalyticsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/analytics/AnalyticsApiClient.test.ts rename to apps/website/lib/gateways/api/analytics/AnalyticsApiClient.test.ts diff --git a/apps/website/lib/api/analytics/AnalyticsApiClient.ts b/apps/website/lib/gateways/api/analytics/AnalyticsApiClient.ts similarity index 100% rename from apps/website/lib/api/analytics/AnalyticsApiClient.ts rename to apps/website/lib/gateways/api/analytics/AnalyticsApiClient.ts diff --git a/apps/website/lib/api/auth/AuthApiClient.test.ts b/apps/website/lib/gateways/api/auth/AuthApiClient.test.ts similarity index 100% rename from apps/website/lib/api/auth/AuthApiClient.test.ts rename to apps/website/lib/gateways/api/auth/AuthApiClient.test.ts diff --git a/apps/website/lib/api/auth/AuthApiClient.ts b/apps/website/lib/gateways/api/auth/AuthApiClient.ts similarity index 100% rename from apps/website/lib/api/auth/AuthApiClient.ts rename to apps/website/lib/gateways/api/auth/AuthApiClient.ts diff --git a/apps/website/lib/api/base/ApiConnectionMonitor.test.ts b/apps/website/lib/gateways/api/base/ApiConnectionMonitor.test.ts similarity index 100% rename from apps/website/lib/api/base/ApiConnectionMonitor.test.ts rename to apps/website/lib/gateways/api/base/ApiConnectionMonitor.test.ts diff --git a/apps/website/lib/api/base/ApiConnectionMonitor.ts b/apps/website/lib/gateways/api/base/ApiConnectionMonitor.ts similarity index 100% rename from apps/website/lib/api/base/ApiConnectionMonitor.ts rename to apps/website/lib/gateways/api/base/ApiConnectionMonitor.ts diff --git a/apps/website/lib/api/base/ApiError.test.ts b/apps/website/lib/gateways/api/base/ApiError.test.ts similarity index 100% rename from apps/website/lib/api/base/ApiError.test.ts rename to apps/website/lib/gateways/api/base/ApiError.test.ts diff --git a/apps/website/lib/api/base/ApiError.ts b/apps/website/lib/gateways/api/base/ApiError.ts similarity index 100% rename from apps/website/lib/api/base/ApiError.ts rename to apps/website/lib/gateways/api/base/ApiError.ts diff --git a/apps/website/lib/api/base/BaseApiClient.test.ts b/apps/website/lib/gateways/api/base/BaseApiClient.test.ts similarity index 100% rename from apps/website/lib/api/base/BaseApiClient.test.ts rename to apps/website/lib/gateways/api/base/BaseApiClient.test.ts diff --git a/apps/website/lib/api/base/BaseApiClient.ts b/apps/website/lib/gateways/api/base/BaseApiClient.ts similarity index 100% rename from apps/website/lib/api/base/BaseApiClient.ts rename to apps/website/lib/gateways/api/base/BaseApiClient.ts diff --git a/apps/website/lib/api/base/GracefulDegradation.test.ts b/apps/website/lib/gateways/api/base/GracefulDegradation.test.ts similarity index 100% rename from apps/website/lib/api/base/GracefulDegradation.test.ts rename to apps/website/lib/gateways/api/base/GracefulDegradation.test.ts diff --git a/apps/website/lib/api/base/GracefulDegradation.ts b/apps/website/lib/gateways/api/base/GracefulDegradation.ts similarity index 100% rename from apps/website/lib/api/base/GracefulDegradation.ts rename to apps/website/lib/gateways/api/base/GracefulDegradation.ts diff --git a/apps/website/lib/api/base/RetryHandler.test.ts b/apps/website/lib/gateways/api/base/RetryHandler.test.ts similarity index 100% rename from apps/website/lib/api/base/RetryHandler.test.ts rename to apps/website/lib/gateways/api/base/RetryHandler.test.ts diff --git a/apps/website/lib/api/base/RetryHandler.ts b/apps/website/lib/gateways/api/base/RetryHandler.ts similarity index 100% rename from apps/website/lib/api/base/RetryHandler.ts rename to apps/website/lib/gateways/api/base/RetryHandler.ts diff --git a/apps/website/lib/api/dashboard/DashboardApiClient.test.ts b/apps/website/lib/gateways/api/dashboard/DashboardApiClient.test.ts similarity index 100% rename from apps/website/lib/api/dashboard/DashboardApiClient.test.ts rename to apps/website/lib/gateways/api/dashboard/DashboardApiClient.test.ts diff --git a/apps/website/lib/api/dashboard/DashboardApiClient.ts b/apps/website/lib/gateways/api/dashboard/DashboardApiClient.ts similarity index 100% rename from apps/website/lib/api/dashboard/DashboardApiClient.ts rename to apps/website/lib/gateways/api/dashboard/DashboardApiClient.ts diff --git a/apps/website/lib/api/drivers/DriversApiClient.test.ts b/apps/website/lib/gateways/api/drivers/DriversApiClient.test.ts similarity index 100% rename from apps/website/lib/api/drivers/DriversApiClient.test.ts rename to apps/website/lib/gateways/api/drivers/DriversApiClient.test.ts diff --git a/apps/website/lib/api/drivers/DriversApiClient.ts b/apps/website/lib/gateways/api/drivers/DriversApiClient.ts similarity index 100% rename from apps/website/lib/api/drivers/DriversApiClient.ts rename to apps/website/lib/gateways/api/drivers/DriversApiClient.ts diff --git a/apps/website/lib/api/index.test.ts b/apps/website/lib/gateways/api/index.test.ts similarity index 100% rename from apps/website/lib/api/index.test.ts rename to apps/website/lib/gateways/api/index.test.ts diff --git a/apps/website/lib/api/leagues/LeaguesApiClient.test.ts b/apps/website/lib/gateways/api/leagues/LeaguesApiClient.test.ts similarity index 100% rename from apps/website/lib/api/leagues/LeaguesApiClient.test.ts rename to apps/website/lib/gateways/api/leagues/LeaguesApiClient.test.ts diff --git a/apps/website/lib/api/leagues/LeaguesApiClient.ts b/apps/website/lib/gateways/api/leagues/LeaguesApiClient.ts similarity index 100% rename from apps/website/lib/api/leagues/LeaguesApiClient.ts rename to apps/website/lib/gateways/api/leagues/LeaguesApiClient.ts diff --git a/apps/website/lib/api/media/MediaApiClient.test.ts b/apps/website/lib/gateways/api/media/MediaApiClient.test.ts similarity index 100% rename from apps/website/lib/api/media/MediaApiClient.test.ts rename to apps/website/lib/gateways/api/media/MediaApiClient.test.ts diff --git a/apps/website/lib/api/media/MediaApiClient.ts b/apps/website/lib/gateways/api/media/MediaApiClient.ts similarity index 100% rename from apps/website/lib/api/media/MediaApiClient.ts rename to apps/website/lib/gateways/api/media/MediaApiClient.ts diff --git a/apps/website/lib/api/payments/PaymentsApiClient.test.ts b/apps/website/lib/gateways/api/payments/PaymentsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/payments/PaymentsApiClient.test.ts rename to apps/website/lib/gateways/api/payments/PaymentsApiClient.test.ts diff --git a/apps/website/lib/api/payments/PaymentsApiClient.ts b/apps/website/lib/gateways/api/payments/PaymentsApiClient.ts similarity index 100% rename from apps/website/lib/api/payments/PaymentsApiClient.ts rename to apps/website/lib/gateways/api/payments/PaymentsApiClient.ts diff --git a/apps/website/lib/api/penalties/PenaltiesApiClient.test.ts b/apps/website/lib/gateways/api/penalties/PenaltiesApiClient.test.ts similarity index 100% rename from apps/website/lib/api/penalties/PenaltiesApiClient.test.ts rename to apps/website/lib/gateways/api/penalties/PenaltiesApiClient.test.ts diff --git a/apps/website/lib/api/penalties/PenaltiesApiClient.ts b/apps/website/lib/gateways/api/penalties/PenaltiesApiClient.ts similarity index 100% rename from apps/website/lib/api/penalties/PenaltiesApiClient.ts rename to apps/website/lib/gateways/api/penalties/PenaltiesApiClient.ts diff --git a/apps/website/lib/api/policy/PolicyApiClient.test.ts b/apps/website/lib/gateways/api/policy/PolicyApiClient.test.ts similarity index 100% rename from apps/website/lib/api/policy/PolicyApiClient.test.ts rename to apps/website/lib/gateways/api/policy/PolicyApiClient.test.ts diff --git a/apps/website/lib/api/policy/PolicyApiClient.ts b/apps/website/lib/gateways/api/policy/PolicyApiClient.ts similarity index 100% rename from apps/website/lib/api/policy/PolicyApiClient.ts rename to apps/website/lib/gateways/api/policy/PolicyApiClient.ts diff --git a/apps/website/lib/api/protests/ProtestsApiClient.test.ts b/apps/website/lib/gateways/api/protests/ProtestsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/protests/ProtestsApiClient.test.ts rename to apps/website/lib/gateways/api/protests/ProtestsApiClient.test.ts diff --git a/apps/website/lib/api/protests/ProtestsApiClient.ts b/apps/website/lib/gateways/api/protests/ProtestsApiClient.ts similarity index 100% rename from apps/website/lib/api/protests/ProtestsApiClient.ts rename to apps/website/lib/gateways/api/protests/ProtestsApiClient.ts diff --git a/apps/website/lib/api/races/RacesApiClient.test.ts b/apps/website/lib/gateways/api/races/RacesApiClient.test.ts similarity index 100% rename from apps/website/lib/api/races/RacesApiClient.test.ts rename to apps/website/lib/gateways/api/races/RacesApiClient.test.ts diff --git a/apps/website/lib/api/races/RacesApiClient.ts b/apps/website/lib/gateways/api/races/RacesApiClient.ts similarity index 100% rename from apps/website/lib/api/races/RacesApiClient.ts rename to apps/website/lib/gateways/api/races/RacesApiClient.ts diff --git a/apps/website/lib/api/sponsors/SponsorsApiClient.test.ts b/apps/website/lib/gateways/api/sponsors/SponsorsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/sponsors/SponsorsApiClient.test.ts rename to apps/website/lib/gateways/api/sponsors/SponsorsApiClient.test.ts diff --git a/apps/website/lib/api/sponsors/SponsorsApiClient.ts b/apps/website/lib/gateways/api/sponsors/SponsorsApiClient.ts similarity index 100% rename from apps/website/lib/api/sponsors/SponsorsApiClient.ts rename to apps/website/lib/gateways/api/sponsors/SponsorsApiClient.ts diff --git a/apps/website/lib/api/teams/TeamsApiClient.test.ts b/apps/website/lib/gateways/api/teams/TeamsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/teams/TeamsApiClient.test.ts rename to apps/website/lib/gateways/api/teams/TeamsApiClient.test.ts diff --git a/apps/website/lib/api/teams/TeamsApiClient.ts b/apps/website/lib/gateways/api/teams/TeamsApiClient.ts similarity index 100% rename from apps/website/lib/api/teams/TeamsApiClient.ts rename to apps/website/lib/gateways/api/teams/TeamsApiClient.ts diff --git a/apps/website/lib/api/wallets/WalletsApiClient.test.ts b/apps/website/lib/gateways/api/wallets/WalletsApiClient.test.ts similarity index 100% rename from apps/website/lib/api/wallets/WalletsApiClient.test.ts rename to apps/website/lib/gateways/api/wallets/WalletsApiClient.test.ts diff --git a/apps/website/lib/api/wallets/WalletsApiClient.ts b/apps/website/lib/gateways/api/wallets/WalletsApiClient.ts similarity index 100% rename from apps/website/lib/api/wallets/WalletsApiClient.ts rename to apps/website/lib/gateways/api/wallets/WalletsApiClient.ts diff --git a/apps/website/lib/apiClient.test.ts b/apps/website/lib/gateways/apiClient.test.ts similarity index 100% rename from apps/website/lib/apiClient.test.ts rename to apps/website/lib/gateways/apiClient.test.ts diff --git a/apps/website/lib/apiClient.ts b/apps/website/lib/gateways/apiClient.ts similarity index 64% rename from apps/website/lib/apiClient.ts rename to apps/website/lib/gateways/apiClient.ts index 7e3196a9a..c758f7601 100644 --- a/apps/website/lib/apiClient.ts +++ b/apps/website/lib/gateways/apiClient.ts @@ -1,4 +1,4 @@ +import { getWebsiteApiBaseUrl } from '../config/apiBaseUrl'; import { ApiClient } from './api/ApiClient'; -import { getWebsiteApiBaseUrl } from './config/apiBaseUrl'; export const apiClient = new ApiClient(getWebsiteApiBaseUrl()); diff --git a/apps/website/lib/queries/ActionsPageQuery.ts b/apps/website/lib/page-queries/ActionsPageQuery.ts similarity index 100% rename from apps/website/lib/queries/ActionsPageQuery.ts rename to apps/website/lib/page-queries/ActionsPageQuery.ts diff --git a/apps/website/lib/page-queries/OnboardingPageQuery.test.ts b/apps/website/lib/page-queries/OnboardingPageQuery.test.ts new file mode 100644 index 000000000..f9ab8bcb4 --- /dev/null +++ b/apps/website/lib/page-queries/OnboardingPageQuery.test.ts @@ -0,0 +1,91 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { OnboardingPageQuery } from './OnboardingPageQuery'; +import { OnboardingService } from '@/lib/services/onboarding/OnboardingService'; +import { Result } from '@/lib/contracts/Result'; +import { OnboardingPageViewDataBuilder } from '@/lib/builders/view-data/OnboardingPageViewDataBuilder'; + +// Mock dependencies +vi.mock('@/lib/services/onboarding/OnboardingService', () => { + return { + OnboardingService: vi.fn(), + }; +}); + +vi.mock('@/lib/builders/view-data/OnboardingPageViewDataBuilder', () => ({ + OnboardingPageViewDataBuilder: { + build: vi.fn(), + }, +})); + +describe('OnboardingPageQuery', () => { + let query: OnboardingPageQuery; + let mockServiceInstance: any; + + beforeEach(() => { + vi.clearAllMocks(); + query = new OnboardingPageQuery(); + mockServiceInstance = { + checkCurrentDriver: vi.fn(), + }; + // Use mockImplementation to return the instance + (OnboardingService as any).mockImplementation(function() { + return mockServiceInstance; + }); + }); + + it('should return view data with isAlreadyOnboarded: true when driver exists', async () => { + const driver = { id: 'driver-1' }; + const viewData = { isAlreadyOnboarded: true }; + + mockServiceInstance.checkCurrentDriver.mockResolvedValue(Result.ok(driver)); + (OnboardingPageViewDataBuilder.build as any).mockReturnValue(viewData); + + const result = await query.execute(); + + expect(result.isOk()).toBe(true); + expect(result.unwrap()).toEqual(viewData); + expect(OnboardingPageViewDataBuilder.build).toHaveBeenCalledWith(driver); + }); + + it('should return view data with isAlreadyOnboarded: false when driver not found', async () => { + const viewData = { isAlreadyOnboarded: false }; + + mockServiceInstance.checkCurrentDriver.mockResolvedValue(Result.err({ type: 'notFound' })); + (OnboardingPageViewDataBuilder.build as any).mockReturnValue(viewData); + + const result = await query.execute(); + + expect(result.isOk()).toBe(true); + expect(result.unwrap()).toEqual(viewData); + expect(OnboardingPageViewDataBuilder.build).toHaveBeenCalledWith(null); + }); + + it('should return unauthorized error when service returns unauthorized', async () => { + mockServiceInstance.checkCurrentDriver.mockResolvedValue(Result.err({ type: 'unauthorized' })); + + const result = await query.execute(); + + expect(result.isErr()).toBe(true); + expect(result.getError()).toBe('unauthorized'); + }); + + it('should return serverError when service returns serverError', async () => { + mockServiceInstance.checkCurrentDriver.mockResolvedValue(Result.err({ type: 'serverError' })); + + const result = await query.execute(); + + expect(result.isErr()).toBe(true); + expect(result.getError()).toBe('serverError'); + }); + + it('should provide a static execute method', async () => { + const viewData = { isAlreadyOnboarded: true }; + mockServiceInstance.checkCurrentDriver.mockResolvedValue(Result.ok({})); + (OnboardingPageViewDataBuilder.build as any).mockReturnValue(viewData); + + const result = await OnboardingPageQuery.execute(); + + expect(result.isOk()).toBe(true); + expect(result.unwrap()).toEqual(viewData); + }); +});