(t *testing.T)
| 92 | } |
| 93 | |
| 94 | func TestResolveTemplateMetaUpdate(t *testing.T) { |
| 95 | t.Parallel() |
| 96 | |
| 97 | type expected struct { |
| 98 | // override is applied to baselineResolved to produce the expected |
| 99 | // templateMetaUpdate. Allows each case to express only its delta. |
| 100 | override func(*templateMetaUpdate) |
| 101 | base func(template *database.Template) |
| 102 | // validErrFields, if non-empty, asserts the resolver produced a |
| 103 | // validation error for each named field. |
| 104 | validErrFields []string |
| 105 | } |
| 106 | |
| 107 | tests := []struct { |
| 108 | name string |
| 109 | req codersdk.UpdateTemplateMeta |
| 110 | expected expected |
| 111 | }{ |
| 112 | // Sanity check: an empty PATCH preserves every field. |
| 113 | { |
| 114 | name: "EmptyRequestPreservesEverything", |
| 115 | req: codersdk.UpdateTemplateMeta{}, |
| 116 | expected: expected{override: func(*templateMetaUpdate) {}}, |
| 117 | }, |
| 118 | |
| 119 | // One case per pointer field: each case sends only that field |
| 120 | // and asserts only that field changed in the resolved struct. |
| 121 | { |
| 122 | name: "Name", |
| 123 | req: codersdk.UpdateTemplateMeta{Name: ptr.Ref("renamed")}, |
| 124 | expected: expected{override: func(r *templateMetaUpdate) { |
| 125 | r.name = "renamed" |
| 126 | }}, |
| 127 | }, |
| 128 | { |
| 129 | name: "NameEmptyStringFallsBackToCurrent", |
| 130 | req: codersdk.UpdateTemplateMeta{Name: ptr.Ref("")}, |
| 131 | // Empty string is treated as "do not clear" because the UI |
| 132 | // disallows clearing the name. Resolver must keep the |
| 133 | // existing name. |
| 134 | // This is a unique case to just the `name` field. |
| 135 | expected: expected{override: func(*templateMetaUpdate) {}}, |
| 136 | }, |
| 137 | { |
| 138 | name: "DisplayName", |
| 139 | req: codersdk.UpdateTemplateMeta{DisplayName: ptr.Ref("Renamed")}, |
| 140 | expected: expected{override: func(r *templateMetaUpdate) { |
| 141 | r.displayName = "Renamed" |
| 142 | }}, |
| 143 | }, |
| 144 | { |
| 145 | name: "Description", |
| 146 | req: codersdk.UpdateTemplateMeta{Description: ptr.Ref("New description")}, |
| 147 | expected: expected{override: func(r *templateMetaUpdate) { |
| 148 | r.description = "New description" |
| 149 | }}, |
| 150 | }, |
| 151 | { |
nothing calls this directly
no test coverage detected