Refactor: extract shared helpers, fix field drift, add assembly services
- IJobItemAssemblyService / IQuotePricingAssemblyService: centralize job item and quote pricing construction that was duplicated across create, rework copy, and quote-to-job conversion paths - BlobFileHelper: single ValidateUpload/GetContentType/SanitizeFileName used by 6 blob services (JobPhoto, QuotePhoto, ProfilePhoto, CompanyLogo, Equipment, Catalog) and BillsController + ExpensesController, removing 8 private copies - PagedResult<T>.From(): static factory eliminates 6-line boilerplate in 11 controllers (Appointments, Customers, Equipment, Inventory, Invoices, Jobs, Maintenance, CompanyUsers, PlatformUsers, Quotes, Vendors) - AccountingDropdownHelper: single LoadAsync() call replaces duplicate vendor/account/job queries in BillsController and ExpensesController - JobTemplateItem: add IsSalesItem + Sku fields with migration; propagate through JobTemplatesController snapshot copy and GetTemplatesJson projection, and JobsController template-application path - Test assertions updated for standardized BlobFileHelper error messages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@ public class JobPhotoServiceTests
|
||||
var result = await service.SaveJobPhotoAsync(null!, 1, 2);
|
||||
|
||||
Assert.False(result.Success);
|
||||
Assert.Equal("No file was uploaded.", result.ErrorMessage);
|
||||
Assert.Equal("No file provided.", result.ErrorMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -31,7 +31,7 @@ public class JobPhotoServiceTests
|
||||
var result = await service.SaveJobPhotoAsync(file, 1, 2);
|
||||
|
||||
Assert.False(result.Success);
|
||||
Assert.Equal("Photo must be smaller than 10 MB.", result.ErrorMessage);
|
||||
Assert.Equal("File exceeds the 10 MB limit.", result.ErrorMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -43,7 +43,7 @@ public class JobPhotoServiceTests
|
||||
var result = await service.SaveJobPhotoAsync(file, 1, 2);
|
||||
|
||||
Assert.False(result.Success);
|
||||
Assert.Equal("Only JPG, PNG, GIF, and WebP images are allowed.", result.ErrorMessage);
|
||||
Assert.Equal("File type not allowed. Allowed: .jpg, .jpeg, .png, .gif, .webp.", result.ErrorMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user