/** * Component Test - Site Identity Integration * * Test implementation to verify shared components work correctly * with existing Site Identity implementation and maintain backward compatibility. * * This file demonstrates how to integrate OptimizationButton and SettingsCard * with the existing Site Identity patterns. * * @package ThinkRank * @since 1.0.0 */ import { useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import OptimizationButton from './OptimizationButton'; import SettingsCard from './SettingsCard'; import useTabSettings from '../hooks/useTabSettings'; /** * Test Component showing Site Identity integration */ const ComponentTest = () => { // Test the useTabSettings hook with Site Identity patterns const { settings, hasChanges, notice, isLoading, isSaving, isOptimizing, isValidating, handleSettingChange, saveSettings, runOptimization, runValidation, clearNotice } = useTabSettings('site-identity', { enabled: true, site_name: '', site_description: '', tagline: '' }); // Test state for different optimization types const [isAiOptimizing, setIsAiOptimizing] = useState(false); const [activeSubSection, setActiveSubSection] = useState('basic-info'); /** * Test AI optimization function (mimics Site Identity optimizeBasicInfo) */ const testAiOptimization = async () => { setIsAiOptimizing(true); try { // Simulate AI optimization await new Promise(resolve => setTimeout(resolve, 2000)); console.log('AI optimization completed'); } catch (error) { console.error('AI optimization failed:', error); } finally { setIsAiOptimizing(false); } }; /** * Test rule-based optimization function (mimics Site Identity optimizeIdentity) */ const testRuleOptimization = async () => { await runOptimization('rule', { identity_data: settings, options: { focus: 'title_formats' } }); }; /** * Test validation function (mimics Site Identity validateSettings) */ const testValidation = async () => { await runValidation('settings', { settings: settings }); }; /** * Get optimization button configuration (mimics Site Identity getOptimizationButtonConfig) */ const getOptimizationButtonConfig = () => { switch (activeSubSection) { case 'basic-info': return { type: 'ai', onClick: testAiOptimization, isBusy: isAiOptimizing, disabled: !settings.enabled || isAiOptimizing }; case 'title-formats': return { type: 'rule', label: __('Validate & Optimize Titles', 'thinkrank'), onClick: testRuleOptimization, isBusy: isOptimizing, disabled: !settings.enabled || isOptimizing }; case 'validation-test': return { type: 'validate', onClick: testValidation, isBusy: isValidating, disabled: !settings.enabled || isValidating }; default: return { type: 'rule', onClick: testRuleOptimization, isBusy: isOptimizing, disabled: !settings.enabled || isOptimizing }; } }; if (isLoading) { return
Loading...
; } const buttonConfig = getOptimizationButtonConfig(); return (

{__('Component Integration Test', 'thinkrank')}

{/* Test section selector */}
{/* Test SettingsCard component with Site Identity patterns */} handleSettingChange('enabled', value)} toggleLabel={__('Enable Site Identity', 'thinkrank')} optimizationButtons={[ // Test validation button (only for basic-info) activeSubSection === 'basic-info' && ( ), // Test main optimization button ].filter(Boolean)} notice={notice} onNoticeRemove={clearNotice} showDisabledWarning={true} disabledWarningMessage={__('Site identity features are disabled. Enable to configure title formats, breadcrumbs, and robots.txt.', 'thinkrank')} > {/* Test content that mimics Site Identity structure */}

{__('Current section:', 'thinkrank')} {activeSubSection}

{__('Settings enabled:', 'thinkrank')} {settings.enabled ? 'Yes' : 'No'}

{__('Has changes:', 'thinkrank')} {hasChanges ? 'Yes' : 'No'}

{/* Test save button */}
{/* Test individual OptimizationButton components */}

{__('Individual Button Tests', 'thinkrank')}

console.log('AI clicked')} /> console.log('Rule clicked')} /> console.log('Validate clicked')} /> console.log('Test clicked')} /> console.log('Generate clicked')} />
{/* Test loading states */}

{__('Loading State Tests', 'thinkrank')}

{}} /> {}} /> {}} />
); }; export default ComponentTest;