package service

import "testing"

func TestParseTemplateSlots(t *testing.T) {
	raw := map[string]any{
		"slots": map[string]any{
			"inputs": []any{
				map[string]any{"name": "video_input_main", "type": "video_source", "required": true},
			},
			"services": []any{
				map[string]any{"name": "object_storage_main", "type": "object_storage", "required": true},
			},
			"outputs": []any{
				map[string]any{"name": "stream_output_main", "type": "stream_publish", "required": true},
			},
		},
	}

	slots, err := parseTemplateSlots(raw)
	if err != nil {
		t.Fatalf("parseTemplateSlots: %v", err)
	}
	if len(slots.Inputs) != 1 || slots.Inputs[0].Name != "video_input_main" {
		t.Fatalf("unexpected input slots: %#v", slots.Inputs)
	}
	if len(slots.Services) != 1 || slots.Services[0].Type != "object_storage" {
		t.Fatalf("unexpected service slots: %#v", slots.Services)
	}
	if len(slots.Outputs) != 1 || slots.Outputs[0].Name != "stream_output_main" {
		t.Fatalf("unexpected output slots: %#v", slots.Outputs)
	}
}

