Changeset 62101
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/ai-client/class-wp-ai-client-prompt-builder.php
r62067 r62101 8 8 */ 9 9 10 use WordPress\AiClient\AiClient; 10 11 use WordPress\AiClient\Builders\PromptBuilder; 11 12 use WordPress\AiClient\Common\Exception\InvalidArgumentException; … … 184 185 public function __construct( ProviderRegistry $registry, $prompt = null ) { 185 186 try { 186 $this->builder = new PromptBuilder( $registry, $prompt );187 $this->builder = new PromptBuilder( $registry, $prompt, AiClient::getEventDispatcher() ); 187 188 } catch ( Exception $e ) { 188 $this->builder = new PromptBuilder( $registry );189 $this->builder = new PromptBuilder( $registry, null, AiClient::getEventDispatcher() ); 189 190 $this->error = $this->exception_to_wp_error( $e ); 190 191 } -
trunk/tests/phpunit/tests/ai-client/wpAiClientPromptBuilder.php
r62067 r62101 1601 1601 1602 1602 /** 1603 * Tests that the wrapped PromptBuilder receives the same event dispatcher as AiClient. 1604 * 1605 * @ticket 64935 1606 */ 1607 public function test_prompt_builder_passes_ai_client_event_dispatcher_to_wrapped_builder() { 1608 $builder = new WP_AI_Client_Prompt_Builder( AiClient::defaultRegistry(), 'Test prompt' ); 1609 1610 $wrapped_dispatcher = $this->get_wrapped_prompt_builder_property_value( $builder, 'eventDispatcher' ); 1611 1612 $this->assertSame( AiClient::getEventDispatcher(), $wrapped_dispatcher ); 1613 $this->assertInstanceOf( WP_AI_Client_Event_Dispatcher::class, $wrapped_dispatcher ); 1614 } 1615 1616 /** 1617 * Tests that generate_text_result fires wp_ai_client_before_generate_result and wp_ai_client_after_generate_result in order. 1618 * 1619 * @ticket 64935 1620 */ 1621 public function test_generate_text_result_fires_lifecycle_action_hooks() { 1622 $result = new GenerativeAiResult( 1623 'test-result', 1624 array( new Candidate( new ModelMessage( array( new MessagePart( 'Generated text' ) ) ), FinishReasonEnum::stop() ) ), 1625 new TokenUsage( 100, 50, 150 ), 1626 $this->create_test_provider_metadata(), 1627 $this->create_test_text_model_metadata() 1628 ); 1629 1630 $metadata = $this->createMock( ModelMetadata::class ); 1631 $metadata->method( 'getId' )->willReturn( 'test-model' ); 1632 1633 $model = $this->create_mock_text_generation_model( $result, $metadata ); 1634 1635 $hook_order = array(); 1636 1637 add_action( 1638 'wp_ai_client_before_generate_result', 1639 static function () use ( &$hook_order ) { 1640 $hook_order[] = 'before'; 1641 } 1642 ); 1643 add_action( 1644 'wp_ai_client_after_generate_result', 1645 static function () use ( &$hook_order ) { 1646 $hook_order[] = 'after'; 1647 } 1648 ); 1649 1650 $builder = new WP_AI_Client_Prompt_Builder( $this->registry, 'Test prompt' ); 1651 $builder->using_model( $model ); 1652 1653 $actual_result = $builder->generate_text_result(); 1654 1655 $this->assertSame( $result, $actual_result ); 1656 $this->assertSame( array( 'before', 'after' ), $hook_order ); 1657 } 1658 1659 /** 1603 1660 * Tests generateImageResult method. 1604 1661 *
Note: See TracChangeset
for help on using the changeset viewer.