entityManager = $this->createMock(EntityManagerInterface::class); $this->security = $this->createMock(Security::class); $user = $this->createMock(Contact::class); $tenant = $this->createMock(Tenant::class); $user->method('getTenant')->willReturn($tenant); $this->security->method('getUser')->willReturn($user); $this->defaultLedgerService = new DefaultLedgerService($this->entityManager, $this->security); } public function testGetDefaultLedgerByRealmSlug(): void { $realm = $this->createMock(Realm::class); $realm->method('getSlug')->willReturn('inventory'); $ledger = $this->createMock(Ledger::class); $ledger->method('isActive')->willReturn(true); $defaultLedger = $this->createMock(DefaultLedger::class); $defaultLedger->method('getLedger')->willReturn($ledger); $realmRepo = $this->createMock(RealmRepository::class); $realmRepo->method('findOneBy')->willReturn($realm); $defaultLedgerRepo = $this->createMock(DefaultLedgerRepository::class); $defaultLedgerRepo->method('findOneBy')->willReturn($defaultLedger); $this->entityManager->method('getRepository')->willReturnMap([ [Realm::class, $realmRepo], [DefaultLedger::class, $defaultLedgerRepo], ]); $result = $this->defaultLedgerService->getDefaultLedgerByRealmSlug('inventory', 'inventory'); $this->assertSame($ledger, $result); } public function testGetDefaultLedgerByRealmSlugThrowsExceptionForInactiveLedger(): void { $this->expectException(InvalidArgumentException::class); $realm = $this->createMock(Realm::class); $ledger = $this->createMock(Ledger::class); $ledger->method('isActive')->willReturn(false); $defaultLedger = $this->createMock(DefaultLedger::class); $defaultLedger->method('getLedger')->willReturn($ledger); $realmRepo = $this->createMock(RealmRepository::class); $realmRepo->method('findOneBy')->willReturn($realm); $defaultLedgerRepo = $this->createMock(DefaultLedgerRepository::class); $defaultLedgerRepo->method('findOneBy')->willReturn($defaultLedger); $this->entityManager->method('getRepository')->willReturnMap([ [Realm::class, $realmRepo], [DefaultLedger::class, $defaultLedgerRepo], ]); $this->defaultLedgerService->getDefaultLedgerByRealmSlug('test-slug'); } public function testGetDefaultLedgerByRealmSlugThrowsExceptionForInvalidSlug(): void { $this->expectException(RuntimeException::class); $realmRepo = $this->createMock(RealmRepository::class); $realmRepo->method('findOneBy')->willReturn(null); $this->entityManager->method('getRepository')->willReturnMap([ [Realm::class, $realmRepo], ]); $this->defaultLedgerService->getDefaultLedgerByRealmSlug('invalid-slug'); } }