/** * 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
{__('Current section:', 'thinkrank')} {activeSubSection}
{__('Settings enabled:', 'thinkrank')} {settings.enabled ? 'Yes' : 'No'}
{__('Has changes:', 'thinkrank')} {hasChanges ? 'Yes' : 'No'}
{/* Test save button */}