Skip to content

Commit bf2dcd6

Browse files
committed
LLM OCP API: Change Tests to use EventDispatcher mock
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
1 parent 9f405a1 commit bf2dcd6

File tree

1 file changed

+8
-41
lines changed

1 file changed

+8
-41
lines changed

tests/lib/LanguageModel/LanguageModelManagerTest.php

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use OCP\LanguageModel\SummaryTask;
3535
use OCP\LanguageModel\TopicsTask;
3636
use OCP\PreConditionNotMetException;
37+
use PHPUnit\Framework\Constraint\IsInstanceOf;
3738
use Psr\Log\LoggerInterface;
3839
use 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

Comments
 (0)