…lines 1–218 unchanged (218 lines)
219 Build()
220
221 assert.Nil(t, result2.Error(), "Error wrapping ResourceOwnershipConflictError should be stored as warning, not error")
222 assert.NotNil(t, result2.Warning(), "Error wrapping ResourceOwnershipConflictError should be stored as warning")
223}
224
225func TestNewJobResourceResult_WithUnmanagedConflictAsWarning(t *testing.T) {
226 name := "test-resource"
227 group := "test-group"
228 kind := "test-kind"
229 path := "/test/path"
230 action := repository.FileActionCreated
231
232 requestingManager := utils.ManagerProperties{
233 Kind: utils.ManagerKindRepo,
234 Identity: "repo-1",
235 }
236 unmanagedErr := resources.NewResourceUnmanagedConflictError("test-resource", requestingManager)
237
238 result := NewResourceResult().
239 WithName(name).
240 WithGroup(group).
241 WithKind(kind).
242 WithPath(path).
243 WithAction(action).
244 WithError(unmanagedErr).
245 Build()
246
247 assert.Nil(t, result.Error(), "ResourceUnmanagedConflictError should be stored as warning, not error")
248 assert.NotNil(t, result.Warning(), "ResourceUnmanagedConflictError should be stored as warning")
249 assert.Equal(t, unmanagedErr, result.Warning())
250
251 wrappedErr := fmt.Errorf("writing resource from file: %w", unmanagedErr)
252
253 result2 := NewResourceResult().
254 WithName(name).
255 WithGroup(group).
256 WithKind(kind).
257 WithPath(path).
258 WithAction(action).
259 WithError(wrappedErr).
260 Build()
261
262 assert.Nil(t, result2.Error(), "Error wrapping ResourceUnmanagedConflictError should be stored as warning, not error")
263 assert.NotNil(t, result2.Warning(), "Error wrapping ResourceUnmanagedConflictError should be stored as warning")
264}
265
266func TestNewJobResourceResult_WithErrorAsRegularError(t *testing.T) {
267 name := "test-resource"
268 group := "test-group"
269 kind := "test-kind"
270 path := "/test/path"
…lines 271–330 unchanged (60 lines)
331
332 t.Run("regular error returns empty reason", func(t *testing.T) {
333 result := NewResourceResult().WithError(errors.New("not a warning")).Build()
334 assert.Empty(t, result.WarningReason())
335 })
336
337 t.Run("ResourceUnmanagedConflictError returns ReasonResourceInvalid", func(t *testing.T) {
338 unmanagedErr := resources.NewResourceUnmanagedConflictError("res",
339 utils.ManagerProperties{Kind: utils.ManagerKindRepo, Identity: "a"},
340 )
341 result := NewResourceResult().WithError(unmanagedErr).Build()
342
343 assert.Equal(t, provisioning.ReasonResourceInvalid, result.WarningReason())
344 })
345
346 t.Run("wrapped ResourceUnmanagedConflictError returns ReasonResourceInvalid", func(t *testing.T) {
347 unmanagedErr := resources.NewResourceUnmanagedConflictError("res",
348 utils.ManagerProperties{Kind: utils.ManagerKindRepo, Identity: "a"},
349 )
350 wrapped := fmt.Errorf("writing resource: %w", unmanagedErr)
351 result := NewResourceResult().WithError(wrapped).Build()
352
353 assert.Equal(t, provisioning.ReasonResourceInvalid, result.WarningReason())
354 })
355
356 t.Run("explicit WithWarning with QuotaExceededError returns reason", func(t *testing.T) {
357 quotaErr := quotas.NewQuotaExceededError(errors.New("over quota"))
358 result := NewResourceResult().WithWarning(quotaErr).Build()
359
360 assert.Equal(t, provisioning.ReasonQuotaExceeded, result.WarningReason())
361 })
362}
363