0
0
mirror of https://github.com/thegeeklab/git-sv.git synced 2024-09-20 00:02:46 +02:00
git-sv/sv/formatter_test.go

88 lines
2.2 KiB
Go
Raw Normal View History

2020-05-01 05:45:08 +02:00
package sv
import (
"testing"
"time"
2021-02-13 19:40:09 +01:00
"github.com/Masterminds/semver/v3"
2020-05-01 05:45:08 +02:00
)
var dateChangelog = `## v1.0.0 (2020-05-01)
`
2021-07-31 21:03:58 +02:00
var nonVersioningChangelog = `## abc (2020-05-01)
`
2020-05-01 05:45:08 +02:00
var emptyDateChangelog = `## v1.0.0
`
2021-07-31 21:03:58 +02:00
var emptyVersionChangelog = `## 2020-05-01
`
2021-07-31 21:03:58 +02:00
var fullChangeLog = `## v1.0.0 (2020-05-01)
### Features
- subject text ()
### Bug Fixes
- subject text ()
### Build
- subject text ()
### Breaking Changes
- break change message
`
2020-05-01 05:45:08 +02:00
func TestOutputFormatterImpl_FormatReleaseNote(t *testing.T) {
date, _ := time.Parse("2006-01-02", "2020-05-01")
tests := []struct {
2021-07-31 22:34:40 +02:00
name string
input ReleaseNote
want string
wantErr bool
2020-05-01 05:45:08 +02:00
}{
2021-07-31 22:34:40 +02:00
{"with date", emptyReleaseNote("1.0.0", date.Truncate(time.Minute)), dateChangelog, false},
{"without date", emptyReleaseNote("1.0.0", time.Time{}.Truncate(time.Minute)), emptyDateChangelog, false},
{"without version", emptyReleaseNote("", date.Truncate(time.Minute)), emptyVersionChangelog, false},
{"non versioning tag", emptyReleaseNote("abc", date.Truncate(time.Minute)), nonVersioningChangelog, false},
2021-07-31 22:34:40 +02:00
{"full changelog", fullReleaseNote("1.0.0", date.Truncate(time.Minute)), fullChangeLog, false},
2020-05-01 05:45:08 +02:00
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
2021-07-31 22:34:40 +02:00
got, err := NewOutputFormatter().FormatReleaseNote(tt.input)
if got != tt.want {
2020-05-01 05:45:08 +02:00
t.Errorf("OutputFormatterImpl.FormatReleaseNote() = %v, want %v", got, tt.want)
}
2021-07-31 22:34:40 +02:00
if (err != nil) != tt.wantErr {
t.Errorf("OutputFormatterImpl.FormatReleaseNote() error = %v, wantErr %v", err, tt.wantErr)
}
2020-05-01 05:45:08 +02:00
})
}
}
func emptyReleaseNote(tag string, date time.Time) ReleaseNote {
v, _ := semver.NewVersion(tag)
2020-05-01 05:45:08 +02:00
return ReleaseNote{
Version: v,
Tag: tag,
2020-05-01 05:45:08 +02:00
Date: date,
}
}
func fullReleaseNote(tag string, date time.Time) ReleaseNote {
v, _ := semver.NewVersion(tag)
sections := map[string]ReleaseNoteSection{
"build": newReleaseNoteSection("Build", []GitCommitLog{commitlog("build", map[string]string{})}),
"feat": newReleaseNoteSection("Features", []GitCommitLog{commitlog("feat", map[string]string{})}),
"fix": newReleaseNoteSection("Bug Fixes", []GitCommitLog{commitlog("fix", map[string]string{})}),
}
return releaseNote(v, tag, date, sections, []string{"break change message"})
}