spine-framework 0.3.124 → 0.3.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.framework/cli/commands/agents.ts +35 -37
- package/.framework/cli/commands/auth.ts +35 -34
- package/.framework/cli/commands/create-app.ts +104 -40
- package/.framework/cli/commands/dev.ts +104 -69
- package/.framework/cli/commands/doctor.ts +179 -69
- package/.framework/cli/commands/generate.ts +83 -143
- package/.framework/cli/commands/init.ts +72 -34
- package/.framework/cli/commands/install-app.ts +260 -125
- package/.framework/cli/commands/items.ts +33 -44
- package/.framework/cli/commands/migrate.ts +122 -40
- package/.framework/cli/commands/migrations.ts +33 -40
- package/.framework/cli/commands/pipelines.ts +31 -39
- package/.framework/cli/commands/status.ts +47 -23
- package/.framework/cli/commands/system.ts +47 -37
- package/.framework/cli/commands/test.ts +112 -68
- package/.framework/cli/commands/validate-app.ts +215 -121
- package/.framework/cli/context.ts +112 -130
- package/.framework/cli/env-loader.ts +47 -18
- package/.framework/cli/index.ts +81 -42
- package/.framework/docs/runtime-types.md +1024 -0
- package/.framework/functions/_shared/agent-runner.ts +1296 -961
- package/.framework/functions/_shared/app-manifest.ts +82 -68
- package/.framework/functions/_shared/audit.ts +135 -83
- package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
- package/.framework/functions/_shared/db.ts +80 -126
- package/.framework/functions/_shared/hash-api-key.ts +63 -0
- package/.framework/functions/_shared/index.ts +224 -335
- package/.framework/functions/_shared/kb.ts +319 -0
- package/.framework/functions/_shared/llm.ts +92 -0
- package/.framework/functions/_shared/logging.ts +288 -0
- package/.framework/functions/_shared/middleware.ts +329 -365
- package/.framework/functions/_shared/outcomes.ts +36 -0
- package/.framework/functions/_shared/permissions.ts +359 -643
- package/.framework/functions/_shared/pipeline-runner.ts +243 -316
- package/.framework/functions/_shared/principal.ts +376 -468
- package/.framework/functions/_shared/resolve-credentials.ts +102 -0
- package/.framework/functions/_shared/resolve-ids.ts +188 -16
- package/.framework/functions/_shared/retry-deliveries.ts +104 -0
- package/.framework/functions/_shared/schema-utils.ts +611 -373
- package/.framework/functions/_shared/testing.ts +207 -137
- package/.framework/functions/_shared/tracing.ts +276 -0
- package/.framework/functions/_shared/trigger-engine.ts +159 -211
- package/.framework/functions/_shared/webhook-registration.ts +95 -81
- package/.framework/functions/_shared/webhook-registry.ts +153 -75
- package/.framework/functions/account-nodes.ts +31 -53
- package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
- package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
- package/.framework/functions/adapters/openai-outbound.ts +40 -0
- package/.framework/functions/admin-data.ts +685 -537
- package/.framework/functions/admin-funnel.ts +31 -20
- package/.framework/functions/admin-install-funnel.ts +47 -28
- package/.framework/functions/admin-signals.ts +47 -29
- package/.framework/functions/ai-agents.ts +122 -147
- package/.framework/functions/ai-interactions.ts +180 -90
- package/.framework/functions/api-keys.ts +250 -192
- package/.framework/functions/apps.ts +203 -197
- package/.framework/functions/auth.ts +98 -91
- package/.framework/functions/cil-agent-ingest.ts +773 -0
- package/.framework/functions/cil-agent.ts +592 -0
- package/.framework/functions/cil-callmap.ts +1227 -0
- package/.framework/functions/cil-config.ts +583 -0
- package/.framework/functions/cil-context.ts +445 -0
- package/.framework/functions/cil-doc.ts +1752 -0
- package/.framework/functions/cil-embeddings.ts +1202 -0
- package/.framework/functions/cil-graph.ts +585 -0
- package/.framework/functions/cil-ingest.ts +2416 -0
- package/.framework/functions/cil-pipeline.ts +318 -0
- package/.framework/functions/cil-project.ts +499 -0
- package/.framework/functions/cil-validate.ts +469 -0
- package/.framework/functions/debug-auth.ts +73 -53
- package/.framework/functions/deliveries.ts +117 -0
- package/.framework/functions/embeddings.ts +528 -516
- package/.framework/functions/eval-harness.ts +158 -106
- package/.framework/functions/integration-outbound.ts +311 -0
- package/.framework/functions/integration-routes.ts +240 -466
- package/.framework/functions/integrations.ts +132 -140
- package/.framework/functions/invites.ts +401 -201
- package/.framework/functions/item-progress.ts +113 -53
- package/.framework/functions/kb.ts +28 -0
- package/.framework/functions/logs.ts +239 -222
- package/.framework/functions/observability.ts +308 -259
- package/.framework/functions/pipeline-executions.ts +179 -235
- package/.framework/functions/pipelines.ts +163 -205
- package/.framework/functions/prompt-configs.ts +109 -156
- package/.framework/functions/roles.ts +97 -147
- package/.framework/functions/system-cron.ts +132 -218
- package/.framework/functions/system.ts +112 -52
- package/.framework/functions/tests.ts +32 -28
- package/.framework/functions/timers.ts +162 -210
- package/.framework/functions/triggers.ts +282 -346
- package/.framework/functions/types.ts +283 -400
- package/.framework/migrations/001_core_schema.sql +630 -0
- package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
- package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
- package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
- package/.framework/migrations/005_core_observability.sql +598 -0
- package/.framework/migrations/006_security_hardening_rls.sql +97 -0
- package/.framework/migrations/007_kb_article_list.sql +237 -0
- package/.framework/migrations/008_items_target.sql +8 -0
- package/.framework/migrations/009_roles_slug_unique.sql +11 -0
- package/.framework/public/spine.config.json +91 -0
- package/.framework/scripts/app-install-cli.ts +112 -98
- package/.framework/src/App.tsx +67 -20
- package/.framework/src/apps/admin/index.tsx +97 -27
- package/.framework/src/components/AppWrapper.tsx +50 -11
- package/.framework/src/components/CustomAppLoader.tsx +131 -22
- package/.framework/src/components/admin/AdminListPage.tsx +75 -8
- package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
- package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
- package/.framework/src/components/admin/PageInstructions.tsx +49 -0
- package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
- package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
- package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
- package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
- package/.framework/src/components/app-sidebar.tsx +50 -3
- package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
- package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
- package/.framework/src/components/kb/KBArticleList.tsx +557 -0
- package/.framework/src/components/layout/AppShell.tsx +54 -16
- package/.framework/src/components/layout/Header.tsx +50 -38
- package/.framework/src/components/layout/Layout.tsx +48 -32
- package/.framework/src/components/layout/Sidebar.tsx +167 -16
- package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
- package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
- package/.framework/src/components/runtime/DataFilters.tsx +78 -1
- package/.framework/src/components/runtime/DataHeader.tsx +32 -29
- package/.framework/src/components/runtime/DataListPage.tsx +161 -2
- package/.framework/src/components/runtime/DataStats.tsx +48 -1
- package/.framework/src/components/runtime/DataTable.tsx +153 -1
- package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
- package/.framework/src/components/runtime/index.ts +16 -9
- package/.framework/src/components/search-form.tsx +33 -1
- package/.framework/src/components/shared/AgentView.tsx +48 -51
- package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
- package/.framework/src/components/shared/InviteManager.tsx +113 -52
- package/.framework/src/components/shared/MemberList.tsx +182 -0
- package/.framework/src/components/shared/SchemaFields.tsx +96 -78
- package/.framework/src/components/ui/DataTable.tsx +86 -56
- package/.framework/src/components/ui/Form.tsx +188 -109
- package/.framework/src/components/ui/ItemCard.tsx +86 -58
- package/.framework/src/components/ui/ItemListView.tsx +88 -61
- package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
- package/.framework/src/components/ui/Modal.tsx +81 -4
- package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
- package/.framework/src/components/ui/accordion.tsx +97 -5
- package/.framework/src/components/ui/alert-dialog.tsx +225 -13
- package/.framework/src/components/ui/alert.tsx +113 -6
- package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
- package/.framework/src/components/ui/avatar.tsx +129 -7
- package/.framework/src/components/ui/badge.tsx +65 -3
- package/.framework/src/components/ui/breadcrumb.tsx +145 -8
- package/.framework/src/components/ui/button-group.tsx +81 -4
- package/.framework/src/components/ui/button.tsx +49 -2
- package/.framework/src/components/ui/calendar.tsx +65 -3
- package/.framework/src/components/ui/card.tsx +145 -8
- package/.framework/src/components/ui/carousel.tsx +129 -7
- package/.framework/src/components/ui/chart.tsx +161 -10
- package/.framework/src/components/ui/checkbox.tsx +49 -2
- package/.framework/src/components/ui/collapsible.tsx +81 -5
- package/.framework/src/components/ui/combobox.tsx +305 -20
- package/.framework/src/components/ui/command.tsx +177 -11
- package/.framework/src/components/ui/context-menu.tsx +273 -17
- package/.framework/src/components/ui/dialog.tsx +209 -27
- package/.framework/src/components/ui/direction.tsx +64 -4
- package/.framework/src/components/ui/drawer.tsx +193 -12
- package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
- package/.framework/src/components/ui/empty.tsx +145 -9
- package/.framework/src/components/ui/field.tsx +209 -14
- package/.framework/src/components/ui/hover-card.tsx +81 -4
- package/.framework/src/components/ui/input-group.tsx +162 -10
- package/.framework/src/components/ui/input-otp.tsx +98 -5
- package/.framework/src/components/ui/input.tsx +49 -2
- package/.framework/src/components/ui/item.tsx +225 -13
- package/.framework/src/components/ui/kbd.tsx +65 -3
- package/.framework/src/components/ui/label.tsx +49 -2
- package/.framework/src/components/ui/menubar.tsx +289 -17
- package/.framework/src/components/ui/native-select.tsx +97 -5
- package/.framework/src/components/ui/navigation-menu.tsx +177 -10
- package/.framework/src/components/ui/pagination.tsx +161 -9
- package/.framework/src/components/ui/popover.tsx +145 -8
- package/.framework/src/components/ui/progress.tsx +49 -2
- package/.framework/src/components/ui/radio-group.tsx +65 -3
- package/.framework/src/components/ui/resizable.tsx +82 -4
- package/.framework/src/components/ui/scroll-area.tsx +65 -3
- package/.framework/src/components/ui/select.tsx +193 -11
- package/.framework/src/components/ui/separator.tsx +49 -2
- package/.framework/src/components/ui/sheet.tsx +193 -11
- package/.framework/src/components/ui/sidebar.tsx +481 -38
- package/.framework/src/components/ui/skeleton.tsx +49 -2
- package/.framework/src/components/ui/slider.tsx +49 -2
- package/.framework/src/components/ui/sonner.tsx +49 -2
- package/.framework/src/components/ui/spinner.tsx +49 -2
- package/.framework/src/components/ui/switch.tsx +49 -2
- package/.framework/src/components/ui/table-primitives.tsx +160 -33
- package/.framework/src/components/ui/table.tsx +161 -9
- package/.framework/src/components/ui/tabs.tsx +113 -6
- package/.framework/src/components/ui/textarea.tsx +49 -2
- package/.framework/src/components/ui/toggle-group.tsx +81 -4
- package/.framework/src/components/ui/toggle.tsx +65 -3
- package/.framework/src/components/ui/tooltip.tsx +97 -5
- package/.framework/src/contexts/AppContext.tsx +129 -45
- package/.framework/src/contexts/AuthContext.tsx +187 -144
- package/.framework/src/hooks/use-mobile.ts +48 -2
- package/.framework/src/hooks/useApi.ts +208 -159
- package/.framework/src/hooks/useAppPath.ts +32 -23
- package/.framework/src/hooks/useApps.ts +51 -20
- package/.framework/src/hooks/useEntityList.ts +32 -78
- package/.framework/src/hooks/useEntityRecord.ts +35 -96
- package/.framework/src/hooks/useForm.ts +32 -92
- package/.framework/src/hooks/useListSchema.ts +49 -78
- package/.framework/src/hooks/useSchemaRecord.ts +114 -105
- package/.framework/src/lib/api.ts +195 -116
- package/.framework/src/lib/supabase.ts +98 -64
- package/.framework/src/lib/utils.ts +287 -151
- package/.framework/src/main.tsx +49 -3
- package/.framework/src/pages/DashboardPage.tsx +52 -29
- package/.framework/src/pages/NotFoundPage.tsx +32 -10
- package/.framework/src/pages/SetupPage.tsx +32 -12
- package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
- package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
- package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
- package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
- package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
- package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
- package/.framework/src/pages/admin/AppsPage.tsx +49 -2
- package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
- package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
- package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
- package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
- package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
- package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
- package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
- package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
- package/.framework/src/pages/admin/LogsPage.tsx +422 -75
- package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
- package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
- package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
- package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
- package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
- package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
- package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
- package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
- package/.framework/src/pages/admin/RolesPage.tsx +171 -18
- package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
- package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
- package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
- package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
- package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
- package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
- package/.framework/src/pages/admin/TimersPage.tsx +48 -20
- package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
- package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
- package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
- package/.framework/src/pages/admin/TypesPage.tsx +48 -20
- package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
- package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
- package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
- package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
- package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
- package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
- package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
- package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
- package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
- package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
- package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
- package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
- package/.framework/src/pages/auth/LoginPage.tsx +50 -23
- package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
- package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
- package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
- package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
- package/.framework/src/types/auth.ts +128 -71
- package/.framework/src/types/types.ts +373 -157
- package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
- package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
- package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
- package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
- package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
- package/docs/README.md +9 -130
- package/netlify.toml +5 -2
- package/package.json +13 -25
- package/scripts/kb-ingest-docs.ts +203 -0
- package/spine.config.json +65 -4
- package/.framework/migrations/001_schema.sql +0 -425
- package/.framework/migrations/002_rls_and_functions.sql +0 -763
- package/.framework/migrations/004_enhancements.sql +0 -43
- package/.framework/migrations/005_auth_user_trigger.sql +0 -105
- package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
- package/.framework/migrations/016_invites.sql +0 -27
- package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
- package/.framework/migrations/018_apps_required_roles.sql +0 -17
- package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
- package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
- package/.framework/migrations/021_app_domains.sql +0 -112
- package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
- package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
- package/.framework/migrations/024_messages_account_id.sql +0 -9
- package/.framework/migrations/025_retype_threads_messages.sql +0 -240
- package/.framework/migrations/026_fix_rls_policies.sql +0 -47
- package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
- package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
- package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
- package/.framework/migrations/030_messages_updated_by.sql +0 -6
- package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
- package/docs/APPS.md +0 -232
- package/docs/ARCHITECTURE.md +0 -246
- package/docs/INSTALL.md +0 -155
- package/docs/design-schema-spec.md +0 -1837
- package/docs/dev-guides/01-create-an-app.md +0 -183
- package/docs/dev-guides/02-create-a-function.md +0 -178
- package/docs/dev-guides/03-create-a-component.md +0 -178
- package/docs/dev-guides/04-webhook-handlers.md +0 -129
- package/docs/dev-guides/05-testing.md +0 -168
- package/docs/dev-guides/README.md +0 -40
- package/docs/npm-packages-plan.md +0 -288
- package/docs/spine-core--api-reference.md +0 -822
|
@@ -1,43 +1,67 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module testing
|
|
3
|
-
* @audience custom-developer
|
|
4
|
-
* @layer shared-util
|
|
5
|
-
* @stability evolving
|
|
6
|
-
*
|
|
7
|
-
* Testing utilities for custom code developers.
|
|
8
|
-
* Use these to test your custom functions without full deployment.
|
|
9
|
-
*
|
|
10
|
-
* **Usage in custom function tests:**
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { makeTestContext, mockPrincipal, cleanup } from '@core/testing'
|
|
13
|
-
*
|
|
14
|
-
* describe('My Custom Handler', () => {
|
|
15
|
-
* it('should process items', async () => {
|
|
16
|
-
* const ctx = makeTestContext({
|
|
17
|
-
* principal: mockPrincipal({ roles: ['member'] }),
|
|
18
|
-
* accountId: 'test-account'
|
|
19
|
-
* })
|
|
20
|
-
*
|
|
21
|
-
* const result = await myHandler(mockEvent, ctx)
|
|
22
|
-
* expect(result.status).toBe('success')
|
|
23
|
-
*
|
|
24
|
-
* cleanup()
|
|
25
|
-
* })
|
|
26
|
-
* })
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @seeAlso .framework/tests/unit/core-isolation.test.ts (examples)
|
|
30
|
-
*/
|
|
31
1
|
|
|
32
|
-
import { adminDb } from './db'
|
|
33
2
|
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// CIL[BEGIN chunk_id="testing_imports_1784020784" type="module_header" identity="imports" parent="none"]
|
|
14
|
+
// CIL[DOC-MACRO purpose="Import database dependency for testing utilities"]
|
|
15
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Import adminDb from shared database module"]
|
|
16
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/db.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
|
|
17
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="adminDb" errors="none" side_effects="none"]
|
|
18
|
+
// CIL[DOC-MICRO logic_summary="Import statement for database connection" notable_decisions="[]"]
|
|
19
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
20
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
21
|
+
// CIL[DOC-AUDIENCE audience="developer"]
|
|
22
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/db.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
|
|
23
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
24
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
25
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
26
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
27
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
28
|
+
import { adminDb } from './db'
|
|
29
|
+
// CIL[END chunk_id="testing_imports_1784020784"]
|
|
30
|
+
// CIL[BEGIN chunk_id="testing_testcontext_1784020784" type="interface" identity="TestContext" parent="none"]
|
|
31
|
+
// CIL[DOC-MACRO purpose="Define test context interface for unit tests"]
|
|
32
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide test environment with database, principal, logger"]
|
|
33
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
34
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestContext interface" errors="none" side_effects="none"]
|
|
35
|
+
// CIL[DOC-MICRO logic_summary="Interface containing database, principal, logger, and account ID" notable_decisions="[]"]
|
|
36
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
37
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
38
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
39
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
40
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
41
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
42
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
43
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
34
44
|
export interface TestContext {
|
|
35
45
|
db: typeof adminDb
|
|
36
46
|
principal: TestPrincipal
|
|
37
47
|
logger: TestLogger
|
|
38
48
|
accountId: string
|
|
39
49
|
}
|
|
40
|
-
|
|
50
|
+
// CIL[END chunk_id="testing_testcontext_1784020784"]
|
|
51
|
+
// CIL[BEGIN chunk_id="testing_testprincipal_1784020784" type="interface" identity="TestPrincipal" parent="none"]
|
|
52
|
+
// CIL[DOC-MACRO purpose="Define test principal interface for authentication testing"]
|
|
53
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide mock user identity and permissions structure"]
|
|
54
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
|
|
55
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestPrincipal interface" errors="none" side_effects="none"]
|
|
56
|
+
// CIL[DOC-MICRO logic_summary="Interface with user ID, account, roles, permissions, email" notable_decisions="[]"]
|
|
57
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
58
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
59
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
|
|
60
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
61
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
62
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
63
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
64
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
41
65
|
export interface TestPrincipal {
|
|
42
66
|
id: string
|
|
43
67
|
account_id: string
|
|
@@ -45,28 +69,42 @@ export interface TestPrincipal {
|
|
|
45
69
|
permissions: Record<string, any>
|
|
46
70
|
email?: string
|
|
47
71
|
}
|
|
48
|
-
|
|
72
|
+
// CIL[END chunk_id="testing_testprincipal_1784020784"]
|
|
73
|
+
// CIL[BEGIN chunk_id="testing_testlogger_1784020784" type="interface" identity="TestLogger" parent="none"]
|
|
74
|
+
// CIL[DOC-MACRO purpose="Define test logger interface for capturing log output"]
|
|
75
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide logging methods for test verification"]
|
|
76
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
|
|
77
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestLogger interface" errors="none" side_effects="none"]
|
|
78
|
+
// CIL[DOC-MICRO logic_summary="Interface with info, warn, error, debug logging methods" notable_decisions="[]"]
|
|
79
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
80
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
81
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
|
|
82
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
83
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
84
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
85
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
86
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
49
87
|
export interface TestLogger {
|
|
50
88
|
info: (msg: string, meta?: any) => void
|
|
51
89
|
warn: (msg: string, meta?: any) => void
|
|
52
90
|
error: (msg: string, meta?: any) => void
|
|
53
91
|
debug: (msg: string, meta?: any) => void
|
|
54
92
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
93
|
+
// CIL[END chunk_id="testing_testlogger_1784020784"]
|
|
94
|
+
// CIL[BEGIN chunk_id="testing_mockprincipal_1784020784" type="function" identity="mockPrincipal" parent="none"]
|
|
95
|
+
// CIL[DOC-MACRO purpose="Create mock principal for testing authentication"]
|
|
96
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Generate default test user with optional overrides"]
|
|
97
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
98
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestPrincipal" errors="none" side_effects="none"]
|
|
99
|
+
// CIL[DOC-MICRO logic_summary="Returns default test principal with spread overrides" notable_decisions="[]"]
|
|
100
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
101
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
102
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
103
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
104
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
105
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
106
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
107
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
70
108
|
export function mockPrincipal(overrides: Partial<TestPrincipal> = {}): TestPrincipal {
|
|
71
109
|
return {
|
|
72
110
|
id: 'test-user-id',
|
|
@@ -77,19 +115,21 @@ export function mockPrincipal(overrides: Partial<TestPrincipal> = {}): TestPrinc
|
|
|
77
115
|
...overrides
|
|
78
116
|
}
|
|
79
117
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
118
|
+
// CIL[END chunk_id="testing_mockprincipal_1784020784"]
|
|
119
|
+
// CIL[BEGIN chunk_id="testing_mocklogger_1784020784" type="function" identity="mockLogger" parent="none"]
|
|
120
|
+
// CIL[DOC-MACRO purpose="Create mock logger that captures logs for test verification"]
|
|
121
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide in-memory logging with retrieval capability"]
|
|
122
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
123
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestLogger & { getLogs: () => string[] }" errors="none" side_effects="console output"]
|
|
124
|
+
// CIL[DOC-MICRO logic_summary="Returns logger that stores messages and provides getLogs method" notable_decisions="[]"]
|
|
125
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
126
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
127
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
128
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
129
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
130
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
131
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
132
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
93
133
|
export function mockLogger(): TestLogger & { getLogs: () => string[] } {
|
|
94
134
|
const logs: string[] = []
|
|
95
135
|
|
|
@@ -113,23 +153,21 @@ export function mockLogger(): TestLogger & { getLogs: () => string[] } {
|
|
|
113
153
|
getLogs: () => [...logs]
|
|
114
154
|
}
|
|
115
155
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
156
|
+
// CIL[END chunk_id="testing_mocklogger_1784020784"]
|
|
157
|
+
// CIL[BEGIN chunk_id="testing_maketestcontext_1784020784" type="function" identity="makeTestContext" parent="none"]
|
|
158
|
+
// CIL[DOC-MACRO purpose="Create complete test context with defaults and overrides"]
|
|
159
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Assemble test environment with database, principal, logger, account"]
|
|
160
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
161
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="TestContext" errors="none" side_effects="none"]
|
|
162
|
+
// CIL[DOC-MICRO logic_summary="Builds context with defaults or provided options" notable_decisions="[]"]
|
|
163
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
164
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
165
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
166
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
167
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
168
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
169
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
170
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
133
171
|
export function makeTestContext(options: {
|
|
134
172
|
principal?: TestPrincipal
|
|
135
173
|
accountId?: string
|
|
@@ -142,21 +180,21 @@ export function makeTestContext(options: {
|
|
|
142
180
|
accountId: options.accountId || options.principal?.account_id || 'test-account'
|
|
143
181
|
}
|
|
144
182
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
183
|
+
// CIL[END chunk_id="testing_maketestcontext_1784020784"]
|
|
184
|
+
// CIL[BEGIN chunk_id="testing_mockevent_1784020784" type="function" identity="mockEvent" parent="none"]
|
|
185
|
+
// CIL[DOC-MACRO purpose="Create mock HTTP event for API testing"]
|
|
186
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Generate default API gateway event structure"]
|
|
187
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
188
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="mock event object" errors="none" side_effects="none"]
|
|
189
|
+
// CIL[DOC-MICRO logic_summary="Returns default HTTP event with spread overrides" notable_decisions="[]"]
|
|
190
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
191
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
192
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
193
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
194
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
195
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
196
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
197
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
160
198
|
export function mockEvent(overrides: any = {}): any {
|
|
161
199
|
return {
|
|
162
200
|
httpMethod: 'GET',
|
|
@@ -167,12 +205,21 @@ export function mockEvent(overrides: any = {}): any {
|
|
|
167
205
|
...overrides
|
|
168
206
|
}
|
|
169
207
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
208
|
+
// CIL[END chunk_id="testing_mockevent_1784020784"]
|
|
209
|
+
// CIL[BEGIN chunk_id="testing_mocknetlifycontext_1784020784" type="function" identity="mockNetlifyContext" parent="none"]
|
|
210
|
+
// CIL[DOC-MACRO purpose="Create mock Netlify function context for testing"]
|
|
211
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Generate Netlify runtime context mock object"]
|
|
212
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
213
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="mock Netlify context" errors="none" side_effects="none"]
|
|
214
|
+
// CIL[DOC-MICRO logic_summary="Returns mock context with AWS Lambda properties" notable_decisions="[]"]
|
|
215
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
216
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
217
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
218
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
219
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
220
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
221
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
222
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
176
223
|
export function mockNetlifyContext(): any {
|
|
177
224
|
return {
|
|
178
225
|
awsRequestId: 'test-request-id',
|
|
@@ -183,33 +230,39 @@ export function mockNetlifyContext(): any {
|
|
|
183
230
|
getRemainingTimeInMillis: () => 30000
|
|
184
231
|
}
|
|
185
232
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
233
|
+
// CIL[END chunk_id="testing_mocknetlifycontext_1784020784"]
|
|
234
|
+
// CIL[BEGIN chunk_id="testing_cleanup_1784020784" type="function" identity="cleanup" parent="none"]
|
|
235
|
+
// CIL[DOC-MACRO purpose="Clean up test environment after test execution"]
|
|
236
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Perform post-test cleanup operations"]
|
|
237
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
238
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="void" errors="none" side_effects="console output"]
|
|
239
|
+
// CIL[DOC-MICRO logic_summary="Logs cleanup completion message" notable_decisions="[]"]
|
|
240
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
241
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
242
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
243
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
244
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
245
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
246
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
247
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
191
248
|
export function cleanup(): void {
|
|
192
|
-
// Clear any caches or state that might persist between tests
|
|
193
|
-
// This is a placeholder - actual implementation would clear specific state
|
|
194
249
|
console.log('Test cleanup completed')
|
|
195
250
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
251
|
+
// CIL[END chunk_id="testing_cleanup_1784020784"]
|
|
252
|
+
// CIL[BEGIN chunk_id="testing_setuptests_1784020784" type="function" identity="setupTests" parent="none"]
|
|
253
|
+
// CIL[DOC-MACRO purpose="Export all testing utilities in single object"]
|
|
254
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Provide comprehensive testing toolkit"]
|
|
255
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
256
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="testing utilities object" errors="none" side_effects="none"]
|
|
257
|
+
// CIL[DOC-MICRO logic_summary="Returns object containing all testing helper functions" notable_decisions="[]"]
|
|
258
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
259
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
260
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
261
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
262
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
263
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
264
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
265
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
213
266
|
export function setupTests() {
|
|
214
267
|
return {
|
|
215
268
|
makeTestContext,
|
|
@@ -220,13 +273,21 @@ export function setupTests() {
|
|
|
220
273
|
cleanup
|
|
221
274
|
}
|
|
222
275
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
276
|
+
// CIL[END chunk_id="testing_setuptests_1784020784"]
|
|
277
|
+
// CIL[BEGIN chunk_id="testing_expectsuccessresponse_1784020784" type="function" identity="expectSuccessResponse" parent="none"]
|
|
278
|
+
// CIL[DOC-MACRO purpose="Assert HTTP response indicates success"]
|
|
279
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate successful API response format"]
|
|
280
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
281
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="void" errors="assertion failures" side_effects="none"]
|
|
282
|
+
// CIL[DOC-MICRO logic_summary="Checks status code and ensures no error in body" notable_decisions="[]"]
|
|
283
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
284
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
285
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
286
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
287
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
288
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
289
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
290
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
230
291
|
export function expectSuccessResponse(
|
|
231
292
|
response: { statusCode?: number; body?: string },
|
|
232
293
|
expectedStatus: number = 200
|
|
@@ -238,13 +299,21 @@ export function expectSuccessResponse(
|
|
|
238
299
|
expect(body.error).toBeUndefined()
|
|
239
300
|
}
|
|
240
301
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
302
|
+
// CIL[END chunk_id="testing_expectsuccessresponse_1784020784"]
|
|
303
|
+
// CIL[BEGIN chunk_id="testing_expecterrorresponse_1784020784" type="function" identity="expectErrorResponse" parent="none"]
|
|
304
|
+
// CIL[DOC-MACRO purpose="Assert HTTP response indicates error"]
|
|
305
|
+
// CIL[DOC-RESPONSIBILITY responsibility="Validate error API response format"]
|
|
306
|
+
// CIL[DOC-CONTEXT module="testing" layer="shared" related_files="[]"]
|
|
307
|
+
// CIL[DOC-CONTRACT inputs="none" outputs="void" errors="assertion failures" side_effects="none"]
|
|
308
|
+
// CIL[DOC-MICRO logic_summary="Checks status code and ensures error in body" notable_decisions="[]"]
|
|
309
|
+
// CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
|
|
310
|
+
// CIL[DOC-STABILITY stability="stable"]
|
|
311
|
+
// CIL[DOC-VECTOR type="context" content="Layer: shared. Direct callers: 0. Direct calls: 0. Related files: none."]
|
|
312
|
+
// CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
|
|
313
|
+
// CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
|
|
314
|
+
// CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
|
|
315
|
+
// CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
|
|
316
|
+
// CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
|
|
248
317
|
export function expectErrorResponse(
|
|
249
318
|
response: { statusCode?: number; body?: string },
|
|
250
319
|
expectedStatus: number = 400
|
|
@@ -256,3 +325,4 @@ export function expectErrorResponse(
|
|
|
256
325
|
expect(body.error || body.message).toBeDefined()
|
|
257
326
|
}
|
|
258
327
|
}
|
|
328
|
+
// CIL[END chunk_id="testing_expecterrorresponse_1784020784"]
|