tests
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user