reset(); $apiHelper = $this->createMock(ConnectwiseApi::class); $apiHelper->expects($this->exactly(2)) ->method('getContacts') ->willReturnCallback( fn () => $this->generateData(2) ); $integration = $this->getMockBuilder(ConnectwiseIntegration::class) ->disableOriginalConstructor() ->onlyMethods(['isAuthorized', 'getApiHelper', 'getMauticLead']) ->getMock(); $integration->expects($this->once()) ->method('isAuthorized') ->willReturn(true); $integration ->method('getApiHelper') ->willReturn($apiHelper); $integration->getRecords([], 'Contact'); } #[\PHPUnit\Framework\Attributes\TestDox('Test that all records are fetched till last page of results are consumed')] public function testMultiplePagesOfCampaignMemberRecordsAreFetched(): void { $this->reset(); $apiHelper = $this->createMock(ConnectwiseApi::class); $apiHelper->expects($this->exactly(2)) ->method('getCampaignMembers') ->willReturnCallback( fn () => $this->generateData(2) ); $integrationEntityModel = $this->createMock(IntegrationEntityModel::class); $integration = $this->getMockBuilder(ConnectwiseIntegration::class) ->setConstructorArgs([ $this->dispatcher, $this->cache, $this->em, $this->request, $this->router, $this->translator, $this->logger, $this->encryptionHelper, $this->leadModel, $this->companyModel, $this->pathsHelper, $this->notificationModel, $this->fieldModel, $integrationEntityModel, $this->doNotContact, $this->fieldsWithUniqueIdentifier, ]) ->onlyMethods(['isAuthorized', 'getApiHelper', 'getRecords', 'saveCampaignMembers']) ->getMock(); $integration->expects($this->once()) ->method('isAuthorized') ->willReturn(true); $integration ->method('getApiHelper') ->willReturn($apiHelper); $integration->getCampaignMembers(1); } }