package updater

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestChangelogUpdater_Files(t *testing.T) {
	assert.Equal(t, []string{"CHANGELOG.md"}, Changelog().Files())
}

func TestChangelogUpdater_CreateNewFiles(t *testing.T) {
	assert.True(t, Changelog().CreateNewFiles())
}

func TestChangelogUpdater_Update(t *testing.T) {
	tests := []updaterTestCase{
		{
			name:    "empty file",
			content: "",
			info:    ReleaseInfo{ChangelogEntry: "## v1.0.0\n"},
			want:    "# Changelog\n\n## v1.0.0\n",
			wantErr: assert.NoError,
		},
		{
			name: "well-formatted changelog",
			content: `# Changelog

## v0.0.1

- Bazzle

## v0.1.0

### Bazuuum
`,
			info: ReleaseInfo{ChangelogEntry: "## v1.0.0\n\n- Version 1, juhu.\n"},
			want: `# Changelog

## v1.0.0

- Version 1, juhu.

## v0.0.1

- Bazzle

## v0.1.0

### Bazuuum
`,
			wantErr: assert.NoError,
		},
		{
			name:    "error on invalid header",
			content: "What even is this file?",
			info:    ReleaseInfo{ChangelogEntry: "## v1.0.0\n\n- Version 1, juhu.\n"},
			want:    "",
			wantErr: assert.Error,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			runUpdaterTest(t, Changelog(), tt)
		})
	}
}
