spouliot
|
edd7389d7d
|
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>
|
2026-05-09 22:12:33 -04:00 |
|
spouliot
|
dbe4170986
|
Add unit tests for 9 new services/controllers and expand existing test coverage
116 tests passing: JobPhotoService, MeasurementConversionService, PlatformSettingsService,
QuoteApprovalController, QuotePhotoService, ShopCapabilityCalculator, StorageMigrationService,
TenantContext, UsageQuotaController — plus expanded PricingCalculation, Registration, and
Subscription tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-25 18:27:30 -04:00 |
|