@@ -0,0 +1,95 @@
1+package config
2+
3+import (
4+ "io"
5+ "strings"
6+ "testing"
7+
8+ "github.com/stretchr/testify/require"
9+)
10+
11+func TestAttributionMigration(t *testing.T) {
12+ t.Parallel()
13+
14+ tests := []struct {
15+ name string
16+ configJSON string
17+ expectedTrailer TrailerStyle
18+ expectedGenerate bool
19+ }{
20+ {
21+ name: "old setting co_authored_by=true migrates to co-authored-by",
22+ configJSON: `{
23+ "options": {
24+ "attribution": {
25+ "co_authored_by": true,
26+ "generated_with": false
27+ }
28+ }
29+ }`,
30+ expectedTrailer: TrailerStyleCoAuthoredBy,
31+ expectedGenerate: false,
32+ },
33+ {
34+ name: "old setting co_authored_by=false migrates to none",
35+ configJSON: `{
36+ "options": {
37+ "attribution": {
38+ "co_authored_by": false,
39+ "generated_with": true
40+ }
41+ }
42+ }`,
43+ expectedTrailer: TrailerStyleNone,
44+ expectedGenerate: true,
45+ },
46+ {
47+ name: "new setting takes precedence over old setting",
48+ configJSON: `{
49+ "options": {
50+ "attribution": {
51+ "trailer_style": "assisted-by",
52+ "co_authored_by": true,
53+ "generated_with": false
54+ }
55+ }
56+ }`,
57+ expectedTrailer: TrailerStyleAssistedBy,
58+ expectedGenerate: false,
59+ },
60+ {
61+ name: "default when neither setting present",
62+ configJSON: `{
63+ "options": {
64+ "attribution": {
65+ "generated_with": true
66+ }
67+ }
68+ }`,
69+ expectedTrailer: TrailerStyleCoAuthoredBy,
70+ expectedGenerate: true,
71+ },
72+ {
73+ name: "default when attribution is null",
74+ configJSON: `{
75+ "options": {}
76+ }`,
77+ expectedTrailer: TrailerStyleCoAuthoredBy,
78+ expectedGenerate: true,
79+ },
80+ }
81+
82+ for _, tt := range tests {
83+ t.Run(tt.name, func(t *testing.T) {
84+ t.Parallel()
85+
86+ cfg, err := loadFromReaders([]io.Reader{strings.NewReader(tt.configJSON)})
87+ require.NoError(t, err)
88+
89+ cfg.setDefaults(t.TempDir(), "")
90+
91+ require.Equal(t, tt.expectedTrailer, cfg.Options.Attribution.TrailerStyle)
92+ require.Equal(t, tt.expectedGenerate, cfg.Options.Attribution.GeneratedWith)
93+ })
94+ }
95+}