import pytest from services import onboarding_service from repositories.tenant_repository import tenant_repository def test_merges_partial_updates_preserving_existing_keys(): tenant = tenant_repository.create({ 'name': 'G Adventures', 'domain': 'gadventures.com', 'tier': 'analyse', 'status': 'trial', 'max_seats': 5, 'onboarding_checklist': {**onboarding_service.DEFAULT_CHECKLIST, 'add_competitor': True}, }) result = onboarding_service.update_onboarding(tenant['id'], {'tour_step': 3}) assert result['add_competitor'] is True # preserved assert result['tour_step'] == 3 # updated assert tenant_repository.get_by_id(tenant['id'])['onboarding_checklist'] == result def test_falls_back_to_default_checklist_when_none_set(): tenant = tenant_repository.create({ 'name': 'G Adventures', 'domain': 'gadventures.com', 'tier': 'analyse', 'status': 'trial', 'max_seats': 5, }) result = onboarding_service.update_onboarding(tenant['id'], {'tour_completed': True}) assert result['tour_completed'] is True assert result['add_competitor'] is False def test_unknown_tenant_raises(): with pytest.raises(ValueError): onboarding_service.update_onboarding('does-not-exist', {'tour_completed': True})