3434use OCP \LanguageModel \SummaryTask ;
3535use OCP \LanguageModel \TopicsTask ;
3636use OCP \PreConditionNotMetException ;
37+ use PHPUnit \Framework \Constraint \IsInstanceOf ;
3738use Psr \Log \LoggerInterface ;
3839use Test \BackgroundJob \DummyJobList ;
3940
@@ -63,7 +64,7 @@ public function prompt(string $prompt): string {
6364 }
6465}
6566
66- class TestFullLanguageModelProvider implements ILanguageModelProvider, ISummaryProvider, IHeadlineProvider {
67+ class TestAdvancedLanguageModelProvider implements ILanguageModelProvider, ISummaryProvider, IHeadlineProvider {
6768 public function getName (): string {
6869 return 'TEST Full LLM Provider ' ;
6970 }
@@ -90,7 +91,7 @@ protected function setUp(): void {
9091
9192 $ this ->providers = [
9293 TestVanillaLanguageModelProvider::class => new TestVanillaLanguageModelProvider (),
93- TestFullLanguageModelProvider ::class => new TestFullLanguageModelProvider (),
94+ TestAdvancedLanguageModelProvider ::class => new TestAdvancedLanguageModelProvider (),
9495 TestFailingLanguageModelProvider::class => new TestFailingLanguageModelProvider (),
9596 ];
9697
@@ -214,24 +215,8 @@ public function testProviderShouldBeRegisteredAndScheduled() {
214215 $ this ->assertNull ($ task2 ->getOutput ());
215216 $ this ->assertEquals (ILanguageModelTask::STATUS_SCHEDULED , $ task2 ->getStatus ());
216217
217- /** @var IEventDispatcher $this->eventDispatcher */
218- $ this ->eventDispatcher = \OC ::$ server ->get (IEventDispatcher::class);
219- $ successfulEventFired = false ;
220- $ this ->eventDispatcher ->addListener (TaskSuccessfulEvent::class, function (TaskSuccessfulEvent $ event ) use (&$ successfulEventFired , $ task ) {
221- $ successfulEventFired = true ;
222- $ t = $ event ->getTask ();
223- $ this ->assertEquals ($ task ->getId (), $ t ->getId ());
224- $ this ->assertEquals (ILanguageModelTask::STATUS_SUCCESSFUL , $ t ->getStatus ());
225- $ this ->assertEquals ('Hello Free Prompt ' , $ t ->getOutput ());
226- });
227- $ failedEventFired = false ;
228- $ this ->eventDispatcher ->addListener (TaskFailedEvent::class, function (TaskFailedEvent $ event ) use (&$ failedEventFired , $ task ) {
229- $ failedEventFired = true ;
230- $ t = $ event ->getTask ();
231- $ this ->assertEquals ($ task ->getId (), $ t ->getId ());
232- $ this ->assertEquals (ILanguageModelTask::STATUS_FAILED , $ t ->getStatus ());
233- $ this ->assertEquals ('ERROR ' , $ event ->getErrorMessage ());
234- });
218+ $ this ->eventDispatcher = $ this ->createMock (IEventDispatcher::class);
219+ $ this ->eventDispatcher ->expects ($ this ->once ())->method ('dispatchTyped ' )->with (new IsInstanceOf (TaskSuccessfulEvent::class));
235220
236221 // run background job
237222 $ bgJob = new TaskBackgroundJob (
@@ -243,8 +228,6 @@ public function testProviderShouldBeRegisteredAndScheduled() {
243228 $ bgJob ->start ($ this ->jobList );
244229 $ provider = $ this ->providers [TestVanillaLanguageModelProvider::class];
245230 $ this ->assertTrue ($ provider ->ran );
246- $ this ->assertTrue ($ successfulEventFired );
247- $ this ->assertFalse ($ failedEventFired );
248231
249232 // Task object retrieved from db is up-to-date
250233 $ task3 = $ this ->languageModelManager ->getTask ($ task ->getId ());
@@ -257,7 +240,7 @@ public function testProviderShouldBeRegisteredAndScheduled() {
257240 public function testMultipleProvidersShouldBeRegisteredAndRunCorrectly () {
258241 $ this ->registrationContext ->expects ($ this ->any ())->method ('getLanguageModelProviders ' )->willReturn ([
259242 new ServiceRegistration ('test ' , TestVanillaLanguageModelProvider::class),
260- new ServiceRegistration ('test ' , TestFullLanguageModelProvider ::class),
243+ new ServiceRegistration ('test ' , TestAdvancedLanguageModelProvider ::class),
261244 ]);
262245 $ this ->assertCount (3 , $ this ->languageModelManager ->getAvailableTaskClasses ());
263246 $ this ->assertCount (3 , $ this ->languageModelManager ->getAvailableTaskTypes ());
@@ -312,22 +295,8 @@ public function testTaskFailure() {
312295 $ this ->assertNull ($ task2 ->getOutput ());
313296 $ this ->assertEquals (ILanguageModelTask::STATUS_SCHEDULED , $ task2 ->getStatus ());
314297
315- $ successfulEventFired = false ;
316- $ this ->eventDispatcher ->addListener (TaskSuccessfulEvent::class, function (TaskSuccessfulEvent $ event ) use (&$ successfulEventFired , $ task ) {
317- $ successfulEventFired = true ;
318- $ t = $ event ->getTask ();
319- $ this ->assertEquals ($ task ->getId (), $ t ->getId ());
320- $ this ->assertEquals (ILanguageModelTask::STATUS_SUCCESSFUL , $ t ->getStatus ());
321- $ this ->assertEquals ('Hello Free Prompt ' , $ t ->getOutput ());
322- });
323- $ failedEventFired = false ;
324- $ this ->eventDispatcher ->addListener (TaskFailedEvent::class, function (TaskFailedEvent $ event ) use (&$ failedEventFired , $ task ) {
325- $ failedEventFired = true ;
326- $ t = $ event ->getTask ();
327- $ this ->assertEquals ($ task ->getId (), $ t ->getId ());
328- $ this ->assertEquals (ILanguageModelTask::STATUS_FAILED , $ t ->getStatus ());
329- $ this ->assertEquals ('ERROR ' , $ event ->getErrorMessage ());
330- });
298+ $ this ->eventDispatcher = $ this ->createMock (IEventDispatcher::class);
299+ $ this ->eventDispatcher ->expects ($ this ->once ())->method ('dispatchTyped ' )->with (new IsInstanceOf (TaskFailedEvent::class));
331300
332301 // run background job
333302 $ bgJob = new TaskBackgroundJob (
@@ -339,8 +308,6 @@ public function testTaskFailure() {
339308 $ bgJob ->start ($ this ->jobList );
340309 $ provider = $ this ->providers [TestFailingLanguageModelProvider::class];
341310 $ this ->assertTrue ($ provider ->ran );
342- $ this ->assertTrue ($ failedEventFired );
343- $ this ->assertFalse ($ successfulEventFired );
344311
345312 // Task object retrieved from db is up-to-date
346313 $ task3 = $ this ->languageModelManager ->getTask ($ task ->getId ());
0 commit comments