package dto

import (
	"encoding/json"
	"testing"
)

func TestTaskNotificationPolicyResponseKeepsFrozenWireKeys(t *testing.T) {
	payload, err := json.Marshal(TaskNotificationPolicyResponse{
		ScopeType: "task",
		ScopeID:   "scp_1",
	})
	if err != nil {
		t.Fatal(err)
	}
	var decoded map[string]any
	if err := json.Unmarshal(payload, &decoded); err != nil {
		t.Fatal(err)
	}
	if decoded["surfaceId"] != "scp_1" || decoded["surfaceKind"] != "task" {
		t.Fatalf("frozen scope keys missing: %v", decoded)
	}
	if _, ok := decoded["scopeId"]; ok {
		t.Fatalf("unexpected scopeId protocol key: %v", decoded)
	}
	if _, ok := decoded["scopeType"]; ok {
		t.Fatalf("unexpected scopeType protocol key: %v", decoded)
	}
}

func TestScopeNotificationPanelKeepsFrozenWireKeys(t *testing.T) {
	payload, err := json.Marshal(ScopeNotificationPanel{
		ScopeID:   "chn_1",
		ScopeType: "channel",
	})
	if err != nil {
		t.Fatal(err)
	}
	var decoded map[string]any
	if err := json.Unmarshal(payload, &decoded); err != nil {
		t.Fatal(err)
	}
	if decoded["surfaceId"] != "chn_1" || decoded["surfaceKind"] != "channel" {
		t.Fatalf("frozen panel keys missing: %v", decoded)
	}
	if _, ok := decoded["scopeId"]; ok {
		t.Fatalf("unexpected scopeId protocol key: %v", decoded)
	}
}
