- Add GetInitialOnboardingStatusUseCase to retrieve onboarding status. - Implement CompleteInitialOnboardingUseCase for completing onboarding. - Create controllers for handling onboarding requests in Express. - Introduce new repository methods for managing onboarding data. - Set up dependency injection for onboarding services and use cases. - Add tests for onboarding use cases and repository methods. - Define request DTOs for onboarding operations with validation. - Update module composition to include onboarding functionalities.
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import initialOnboardingModelInit from "./infrastructure/persistence/sequelize/models/sequelize-initial-onboarding.model";
|
|
import { onboardingModule } from "./module";
|
|
|
|
test("onboarding composition builds public capabilities and registers its model", async () => {
|
|
let provisionCalls = 0;
|
|
const initialCompanyCreator = {
|
|
create: async () => {
|
|
throw new Error("not invoked");
|
|
},
|
|
};
|
|
const initialCompanyAdminAssigner = {
|
|
assign: async () => {
|
|
throw new Error("not invoked");
|
|
},
|
|
};
|
|
const result = await onboardingModule.setup?.({
|
|
database: {} as never,
|
|
transactionContext: {} as never,
|
|
getService: <T>(name: string) => {
|
|
if (name === "companies:general") return { initialCompanyCreator } as T;
|
|
if (name === "identity:general") return { initialCompanyAdminAssigner } as T;
|
|
throw new Error(`Unexpected service ${name}`);
|
|
},
|
|
} as never);
|
|
|
|
assert.ok(result?.services?.general);
|
|
assert.deepEqual(result.services.general, {});
|
|
assert.ok(result.internal);
|
|
assert.ok(result.models?.includes(initialOnboardingModelInit));
|
|
assert.equal(provisionCalls, 0);
|
|
});
|