fakeSettings(); $llm = new FakeLlmClient; $service = new EmbeddingService($llm, $settings); EmbeddingCache::query()->create([ 'provider_instance_id' => 'instance-1', 'embedding_model' => 'embed-model', 'text_hash' => hash('sha256', 'abc'), 'text' => 'abc', 'embedding' => [0.9, 0.8], ]); $embedding = $service->embed('abc'); $this->assertSame([0.9, 0.8], $embedding); $this->assertCount(0, $llm->generatedPrompts); } public function test_it_throws_when_embedding_is_empty(): void { $settings = $this->fakeSettings(); $llm = new FakeLlmClient; $llm->embeddings['abc'] = []; $service = new EmbeddingService($llm, $settings); $this->expectException(OllamaUnavailableException::class); $service->embed('abc'); } private function fakeSettings(): AppSettingsService { return new class extends AppSettingsService { public function activeProviderInstance(): array { return ['id' => 'instance-1', 'embedding_model' => 'embed-model']; } public function activeProviderInstanceId(): string { return 'instance-1'; } public function get(string $key, ?string $default = null): ?string { if ($key === 'llm.models.embedding') { return 'embed-model'; } return $default; } }; } }