'http://translator.test']); Http::fake(['translator.test/languages' => Http::response([['code' => 'pt', 'name' => 'Portuguese', 'targets' => ['en']]])]); $this->getJson('/api/translate/languages')->assertOk()->assertJsonPath('0.targets.0', 'en'); } public function test_it_translates_and_reports_engine_failures(): void { config(['services.translation.url' => 'http://translator.test']); Http::fake(['translator.test/translate' => Http::sequence()->push(['translatedText' => 'Hello'])->push([], 500)]); $input = ['text' => 'Olá', 'source_lang' => 'pt', 'target_lang' => 'en']; $this->postJson('/api/translate', $input)->assertOk()->assertJsonPath('translated_text', 'Hello'); $this->postJson('/api/translate', $input)->assertStatus(503); } public function test_it_translates_text_batches_for_full_page_translation(): void { config(['services.translation.url' => 'http://translator.test']); Http::fake(['translator.test/translate' => Http::response(['translatedText' => ['Home', 'About us']])]); $this->postJson('/api/translate', [ 'text' => ['Início', 'Sobre nós'], 'source_lang' => 'auto', 'target_lang' => 'en', ])->assertOk() ->assertJsonPath('translated_text.0', 'Home') ->assertJsonPath('translated_text.1', 'About us'); Http::assertSent(fn (ClientRequest $request) => $request['q'] === ['Início', 'Sobre nós']); } public function test_it_rejects_translation_batches_that_exceed_the_request_limit(): void { $this->postJson('/api/translate', [ 'text' => array_fill(0, 9, 'Texto'), 'source_lang' => 'auto', 'target_lang' => 'en', ])->assertUnprocessable(); } }