package content import ( "fmt" "time" "github.com/insertr/insertr/internal/engine" ) // MockClient implements ContentClient with mock data for development type MockClient struct { data map[string]engine.ContentItem } // NewMockClient creates a new mock content client with sample data func NewMockClient() *MockClient { // Generate realistic mock content based on actual generated IDs data := map[string]engine.ContentItem{ // Navigation (index.html has collision suffix) "navbar-logo-2b10ad": { ID: "navbar-logo-2b10ad", SiteID: "demo", HTMLContent: "Acme Consulting Solutions", UpdatedAt: time.Now().Format(time.RFC3339), }, "navbar-logo-2b10ad-a44bad": { ID: "navbar-logo-2b10ad-a44bad", SiteID: "demo", HTMLContent: "Acme Business Advisors", UpdatedAt: time.Now().Format(time.RFC3339), }, // Hero Section - index.html (updated with actual IDs) "hero-title-7cfeea": { ID: "hero-title-7cfeea", SiteID: "demo", HTMLContent: "Transform Your Business with Strategic Expertise", UpdatedAt: time.Now().Format(time.RFC3339), }, "hero-lead-e47475": { ID: "hero-lead-e47475", SiteID: "demo", HTMLContent: "We help ambitious businesses grow through strategic planning, process optimization, and digital transformation. Our team brings 20+ years of experience to accelerate your success.", UpdatedAt: time.Now().Format(time.RFC3339), }, "hero-link-76c620": { ID: "hero-link-76c620", SiteID: "demo", HTMLContent: "Schedule Free Consultation", UpdatedAt: time.Now().Format(time.RFC3339), }, // Hero Section - about.html "hero-title-c70343": { ID: "hero-title-c70343", SiteID: "demo", HTMLContent: "About Our Consulting Expertise", UpdatedAt: time.Now().Format(time.RFC3339), }, "hero-lead-673026": { ID: "hero-lead-673026", SiteID: "demo", HTMLContent: "We're a team of experienced consultants dedicated to helping small businesses thrive in today's competitive marketplace through proven strategies.", UpdatedAt: time.Now().Format(time.RFC3339), }, // Services Section "services-subtitle-c8927c": { ID: "services-subtitle-c8927c", SiteID: "demo", HTMLContent: "Our Story", UpdatedAt: time.Now().Format(time.RFC3339), }, "services-text-0d96da": { ID: "services-text-0d96da", SiteID: "demo", HTMLContent: "Founded in 2020, Acme Consulting emerged from a simple observation: small businesses needed access to the same high-quality strategic advice that large corporations receive, but in a format that was accessible, affordable, and actionable.", UpdatedAt: time.Now().Format(time.RFC3339), }, // Default fallback for any missing content "default": { ID: "default", SiteID: "demo", HTMLContent: "[Enhanced Content]", UpdatedAt: time.Now().Format(time.RFC3339), }, } return &MockClient{data: data} } // GetContent fetches a single content item by ID func (m *MockClient) GetContent(siteID, contentID string) (*engine.ContentItem, error) { if item, exists := m.data[contentID]; exists && item.SiteID == siteID { return &item, nil } // Return nil for missing content - this will preserve original HTML content return nil, nil } // GetBulkContent fetches multiple content items by IDs func (m *MockClient) GetBulkContent(siteID string, contentIDs []string) (map[string]engine.ContentItem, error) { result := make(map[string]engine.ContentItem) for _, id := range contentIDs { item, err := m.GetContent(siteID, id) if err != nil { return nil, err } if item != nil { result[id] = *item } } return result, nil } // GetAllContent fetches all content for a site func (m *MockClient) GetAllContent(siteID string) (map[string]engine.ContentItem, error) { result := make(map[string]engine.ContentItem) for _, item := range m.data { if item.SiteID == siteID { result[item.ID] = item } } return result, nil } // CreateContent creates a new mock content item func (m *MockClient) CreateContent(siteID, contentID, htmlContent, originalTemplate, lastEditedBy string) (*engine.ContentItem, error) { // For mock client, just create and store the item item := engine.ContentItem{ ID: contentID, SiteID: siteID, HTMLContent: htmlContent, OriginalTemplate: originalTemplate, UpdatedAt: time.Now().Format(time.RFC3339), LastEditedBy: lastEditedBy, } // Store in mock data m.data[contentID] = item return &item, nil } // Collection method stubs - TODO: Implement these for mock testing func (m *MockClient) GetCollection(siteID, collectionID string) (*engine.CollectionItem, error) { return nil, fmt.Errorf("collection operations not implemented in MockClient") } func (m *MockClient) CreateCollection(siteID, collectionID, containerHTML, lastEditedBy string) (*engine.CollectionItem, error) { return nil, fmt.Errorf("collection operations not implemented in MockClient") } func (m *MockClient) GetCollectionItems(siteID, collectionID string) ([]engine.CollectionItemWithTemplate, error) { return nil, fmt.Errorf("collection operations not implemented in MockClient") } func (m *MockClient) CreateCollectionTemplate(siteID, collectionID, name, htmlTemplate string, isDefault bool) (*engine.CollectionTemplateItem, error) { return nil, fmt.Errorf("collection operations not implemented in MockClient") }