50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { Company } from '@core/identity/domain/entities/Company';
|
|
import { ICompanyRepository } from '@core/identity/domain/repositories/ICompanyRepository';
|
|
|
|
/**
|
|
* In-memory implementation of ICompanyRepository for testing
|
|
*/
|
|
export class InMemoryCompanyRepository implements ICompanyRepository {
|
|
private companies: Map<string, Company> = new Map();
|
|
|
|
create(company: Pick<Company, 'getName' | 'getOwnerUserId' | 'getContactEmail'>): Company {
|
|
// Create a new Company instance with generated ID
|
|
const contactEmail = company.getContactEmail();
|
|
return Company.create({
|
|
name: company.getName(),
|
|
ownerUserId: company.getOwnerUserId(),
|
|
...(contactEmail !== undefined ? { contactEmail } : {}),
|
|
});
|
|
}
|
|
|
|
async save(company: Company): Promise<void> {
|
|
this.companies.set(company.getId(), company);
|
|
}
|
|
|
|
async delete(id: string): Promise<void> {
|
|
this.companies.delete(id);
|
|
}
|
|
|
|
async findById(id: string): Promise<Company | null> {
|
|
return this.companies.get(id) || null;
|
|
}
|
|
|
|
async findByOwnerUserId(userId: string): Promise<Company | null> {
|
|
for (const company of this.companies.values()) {
|
|
if (company.getOwnerUserId().toString() === userId) {
|
|
return company;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Helper method for testing to get all companies
|
|
getAll(): Company[] {
|
|
return Array.from(this.companies.values());
|
|
}
|
|
|
|
// Helper method for testing to clear all
|
|
clear(): void {
|
|
this.companies.clear();
|
|
}
|
|
} |