// Copyright 2024 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package bazel_docgen

import (
	"bytes"
	"testing"

	pb "go.fuchsia.dev/fuchsia/tools/bazel-docgen/third_party/stardoc"
)

const EXPECTED_RULE_OUTPUT_WITH_ATTRIBUTES string = `
## foo

docs for foo

**ATTRIBUTES**

 - first
 - name

`

func TestRenderRuleInfoWithAttributes(t *testing.T) {
	out := bytes.NewBufferString("")

	rule := pb.RuleInfo{
		RuleName:  "foo",
		DocString: "docs for foo",
		Attribute: []*pb.AttributeInfo{
			{Name: "first"},
			{
				Name: "name", DocString: "A unique name for this target.",
				Type: pb.AttributeType_NAME, Mandatory: true},
		},
		Test:       false,
		Executable: false,
	}

	var renderer MarkdownRenderer
	renderer.RenderRuleInfo(&rule, out)

	if out.String() != EXPECTED_RULE_OUTPUT_WITH_ATTRIBUTES {
		t.Fatalf("Output does not match: '%s' != '%s'", out.String(), EXPECTED_RULE_OUTPUT_WITH_ATTRIBUTES)
	}
}
