This commit is contained in:
alorig
2025-11-18 06:50:35 +05:00
parent ef16ad760f
commit 873f97ea3f
27 changed files with 1717 additions and 4 deletions

View File

@@ -0,0 +1,123 @@
"""
Tests for Bulk Page Generation
Phase 5: Sites Renderer & Bulk Generation
"""
from django.test import TestCase
from unittest.mock import patch, Mock
from igny8_core.auth.models import Account, Site, Sector
from igny8_core.business.site_building.models import SiteBlueprint, PageBlueprint
from igny8_core.business.site_building.services.page_generation_service import PageGenerationService
from igny8_core.business.content.models import Tasks
from .base import SiteBuilderTestBase
class BulkGenerationTestCase(SiteBuilderTestBase):
"""Test cases for bulk page generation"""
def setUp(self):
"""Set up test data"""
super().setUp()
self.page1 = PageBlueprint.objects.create(
account=self.account,
site=self.site,
sector=self.sector,
site_blueprint=self.blueprint,
title="Page 1",
slug="page-1",
type="home",
status="draft"
)
self.page2 = PageBlueprint.objects.create(
account=self.account,
site=self.site,
sector=self.sector,
site_blueprint=self.blueprint,
title="Page 2",
slug="page-2",
type="about",
status="draft"
)
self.service = PageGenerationService()
def test_bulk_generate_pages_creates_tasks(self):
"""Test: Bulk page generation works"""
with patch.object(self.service.content_service, 'generate_content') as mock_generate:
mock_generate.return_value = {'task_id': 'test-task-id'}
result = self.service.bulk_generate_pages(self.blueprint)
self.assertTrue(result.get('success'))
self.assertEqual(result.get('pages_queued'), 2)
self.assertEqual(len(result.get('task_ids', [])), 2)
# Verify tasks were created
tasks = Tasks.objects.filter(account=self.account)
self.assertEqual(tasks.count(), 2)
def test_bulk_generate_selected_pages_only(self):
"""Test: Selected pages can be generated"""
with patch.object(self.service.content_service, 'generate_content') as mock_generate:
mock_generate.return_value = {'task_id': 'test-task-id'}
result = self.service.bulk_generate_pages(
self.blueprint,
page_ids=[self.page1.id]
)
self.assertTrue(result.get('success'))
self.assertEqual(result.get('pages_queued'), 1)
self.assertEqual(len(result.get('task_ids', [])), 1)
def test_bulk_generate_force_regenerate_deletes_existing_tasks(self):
"""Test: Force regenerate works"""
# Create existing task
Tasks.objects.create(
account=self.account,
site=self.site,
sector=self.sector,
title="[Site Builder] Page 1",
description="Test",
status='completed'
)
with patch.object(self.service.content_service, 'generate_content') as mock_generate:
mock_generate.return_value = {'task_id': 'test-task-id'}
result = self.service.bulk_generate_pages(
self.blueprint,
force_regenerate=True
)
self.assertTrue(result.get('success'))
# Verify new tasks were created (old ones deleted)
tasks = Tasks.objects.filter(account=self.account)
self.assertEqual(tasks.count(), 2)
def test_create_tasks_for_pages_without_generation(self):
"""Test: Task creation works correctly"""
tasks = self.service.create_tasks_for_pages(self.blueprint)
self.assertEqual(len(tasks), 2)
self.assertIsInstance(tasks[0], Tasks)
self.assertEqual(tasks[0].title, "[Site Builder] Page 1")
# Verify tasks exist but content not generated
tasks_db = Tasks.objects.filter(account=self.account)
self.assertEqual(tasks_db.count(), 2)
self.assertEqual(tasks_db.first().status, 'queued')
def test_bulk_generate_updates_page_status(self):
"""Test: Progress tracking works"""
with patch.object(self.service.content_service, 'generate_content') as mock_generate:
mock_generate.return_value = {'task_id': 'test-task-id'}
self.service.bulk_generate_pages(self.blueprint)
# Verify page status updated
self.page1.refresh_from_db()
self.page2.refresh_from_db()
self.assertEqual(self.page1.status, 'generating')
self.assertEqual(self.page2.status, 'generating')