diff --git a/plugin/wasmguest/caps/caps_roundtrip_test.go b/plugin/wasmguest/caps/caps_roundtrip_test.go index b27c3a4..90b5f12 100644 --- a/plugin/wasmguest/caps/caps_roundtrip_test.go +++ b/plugin/wasmguest/caps/caps_roundtrip_test.go @@ -742,6 +742,127 @@ func TestCapabilityRoundTrip(t *testing.T) { } }, }, + // --- remaining provisioner methods (WO-WZ-019) --- + { + name: "provisioner_ensure_data_table", wantMethod: "provisioner.ensure_data_table", + resp: &abiv1.ProvisionerEnsureDataTableResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + err := cs.Provisioner.EnsureDataTable(plugin.DataTableConfig{ + Key: "playgrounds", Name: "Playgrounds", Description: "d", + Schema: []byte(`{"fields":[]}`), PrimaryKey: "id", + }) + if err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_ensure_setting", wantMethod: "provisioner.ensure_setting", + resp: &abiv1.ProvisionerEnsureSettingResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + if err := cs.Provisioner.EnsureSetting("review_dimensions", map[string]any{"max": float64(5)}); err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_override_site_settings", wantMethod: "provisioner.override_site_settings", + resp: &abiv1.ProvisionerOverrideSiteSettingsResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + if err := cs.Provisioner.OverrideSiteSettings(map[string]any{"default_template": "homepage"}); err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_register_embedding_config", wantMethod: "provisioner.register_embedding_config", + resp: &abiv1.ProvisionerRegisterEmbeddingConfigResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + err := cs.Provisioner.RegisterEmbeddingConfig(plugin.EmbeddingConfigDef{ + TableKey: "playgrounds", TextTemplate: "{{name}}", Enabled: true, + }) + if err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_ensure_embed", wantMethod: "provisioner.ensure_embed", + resp: &abiv1.ProvisionerEnsureEmbedResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + err := cs.Provisioner.EnsureEmbed(plugin.EmbedConfig{ + Key: "playground-card", Title: "Playground Card", Description: "d", + Icon: "📍", LabelField: "name", Template: "
{{name}}
", + DataSource: plugin.EmbedDataSource{Type: "row", TableKey: "playgrounds"}, + }) + if err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_ensure_job_schedule", wantMethod: "provisioner.ensure_job_schedule", + resp: &abiv1.ProvisionerEnsureJobScheduleResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + err := cs.Provisioner.EnsureJobSchedule(plugin.JobScheduleConfig{ + JobType: "bounty_rotation", CronExpression: "0 3 * * *", Config: []byte(`{"n":3}`), + }) + if err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_update_data_table_row_field", wantMethod: "provisioner.update_data_table_row_field", + resp: &abiv1.ProvisionerUpdateDataTableRowFieldResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + if err := cs.Provisioner.UpdateDataTableRowField(ctx, idRow, "status", "active"); err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_disable_orphaned_job_schedules", wantMethod: "provisioner.disable_orphaned_job_schedules", + resp: &abiv1.ProvisionerDisableOrphanedJobSchedulesResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + if err := cs.Provisioner.DisableOrphanedJobSchedules([]string{"bounty_rotation", "reindex"}); err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_ensure_plugin", wantMethod: "provisioner.ensure_plugin", + resp: &abiv1.ProvisionerEnsurePluginResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + if err := cs.Provisioner.EnsurePlugin("symposium"); err != nil { + t.Fatal(err) + } + }, + }, + { + name: "provisioner_ensure_custom_color", wantMethod: "provisioner.ensure_custom_color", + resp: &abiv1.ProvisionerEnsureCustomColorResponse{}, + run: func(t *testing.T, cs plugin.CoreServices) { + err := cs.Provisioner.EnsureCustomColor(plugin.CustomColorConfig{ + Name: "brand", LightValue: "oklch(0.7 0.1 200)", DarkValue: "oklch(0.4 0.1 200)", Source: "myplugin", + }) + if err != nil { + t.Fatal(err) + } + }, + }, + // --- jobs.progress (WO-WZ-019; sent by the job dispatch path, not a + // CoreServices stub, so the case drives the transport directly) --- + { + name: "jobs_progress", wantMethod: "jobs.progress", + resp: &abiv1.JobsProgressResponse{}, + run: func(t *testing.T, _ plugin.CoreServices) { + req := &abiv1.JobsProgressRequest{Current: 2, Total: 5, Message: "halfway"} + if err := f.call("jobs.progress", req, &abiv1.JobsProgressResponse{}); err != nil { + t.Fatal(err) + } + }, + }, } for _, tc := range cases { diff --git a/plugin/wasmguest/caps/testdata/golden/jobs_progress_req.pb b/plugin/wasmguest/caps/testdata/golden/jobs_progress_req.pb new file mode 100644 index 0000000..555d89c --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/jobs_progress_req.pb @@ -0,0 +1 @@ +halfway \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/jobs_progress_resp.pb b/plugin/wasmguest/caps/testdata/golden/jobs_progress_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_disable_orphaned_job_schedules_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_disable_orphaned_job_schedules_req.pb new file mode 100644 index 0000000..0eba592 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_disable_orphaned_job_schedules_req.pb @@ -0,0 +1,3 @@ + +bounty_rotation +reindex \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_disable_orphaned_job_schedules_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_disable_orphaned_job_schedules_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_custom_color_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_custom_color_req.pb new file mode 100644 index 0000000..ed99cc1 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_custom_color_req.pb @@ -0,0 +1,2 @@ + +brandoklch(0.7 0.1 200)oklch(0.4 0.1 200)"myplugin \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_custom_color_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_custom_color_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_data_table_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_data_table_req.pb new file mode 100644 index 0000000..cdf29e9 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_data_table_req.pb @@ -0,0 +1,2 @@ + + playgrounds Playgroundsd" {"fields":[]}*id \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_data_table_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_data_table_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_embed_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_embed_req.pb new file mode 100644 index 0000000..a4d0fc2 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_embed_req.pb @@ -0,0 +1,2 @@ + +playground-cardPlayground Cardd"📍*name2
{{name}}
:rowB playgrounds \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_embed_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_embed_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_job_schedule_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_job_schedule_req.pb new file mode 100644 index 0000000..8e76632 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_job_schedule_req.pb @@ -0,0 +1,2 @@ + +bounty_rotation 0 3 * * *{"n":3} \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_job_schedule_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_job_schedule_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_plugin_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_plugin_req.pb new file mode 100644 index 0000000..d592105 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_plugin_req.pb @@ -0,0 +1,2 @@ + + symposium \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_plugin_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_plugin_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_setting_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_setting_req.pb new file mode 100644 index 0000000..21449b9 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_setting_req.pb @@ -0,0 +1,2 @@ + +review_dimensions {"max":5} \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_setting_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_ensure_setting_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_override_site_settings_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_override_site_settings_req.pb new file mode 100644 index 0000000..2cd8036 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_override_site_settings_req.pb @@ -0,0 +1,2 @@ + +{"default_template":"homepage"} \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_override_site_settings_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_override_site_settings_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_register_embedding_config_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_register_embedding_config_req.pb new file mode 100644 index 0000000..fd29f12 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_register_embedding_config_req.pb @@ -0,0 +1,2 @@ + + playgrounds{{name}} \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_register_embedding_config_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_register_embedding_config_resp.pb new file mode 100644 index 0000000..e69de29 diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_update_data_table_row_field_req.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_update_data_table_row_field_req.pb new file mode 100644 index 0000000..b032156 --- /dev/null +++ b/plugin/wasmguest/caps/testdata/golden/provisioner_update_data_table_row_field_req.pb @@ -0,0 +1,2 @@ + +$bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbbstatus"active" \ No newline at end of file diff --git a/plugin/wasmguest/caps/testdata/golden/provisioner_update_data_table_row_field_resp.pb b/plugin/wasmguest/caps/testdata/golden/provisioner_update_data_table_row_field_resp.pb new file mode 100644 index 0000000..e69de29