installedNozzleDiameters.test.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /**
  2. * Tests for installedNozzleDiameters helper (#2618).
  3. *
  4. * The spool PA-Profil picker must fetch K-profiles across every nozzle the
  5. * printer actually has installed, not just the hardcoded 0.4mm default — else
  6. * a 0.6mm profile for the same filament is never surfaced. This helper lists
  7. * the distinct reported diameters, skipping empty/non-positive defaults, and
  8. * returns an empty array when the hardware hasn't been reported so the caller
  9. * can keep its own fallback.
  10. */
  11. import { describe, it, expect } from 'vitest';
  12. import { installedNozzleDiameters } from '../../utils/amsHelpers';
  13. describe('installedNozzleDiameters', () => {
  14. it('returns an empty array when status is null or undefined', () => {
  15. expect(installedNozzleDiameters(null)).toEqual([]);
  16. expect(installedNozzleDiameters(undefined)).toEqual([]);
  17. });
  18. it('returns an empty array when no nozzles are reported', () => {
  19. expect(installedNozzleDiameters({ nozzles: [] })).toEqual([]);
  20. expect(installedNozzleDiameters({})).toEqual([]);
  21. });
  22. it('skips empty-string and non-positive nozzle defaults', () => {
  23. expect(
  24. installedNozzleDiameters({ nozzles: [{ nozzle_diameter: '' }, { nozzle_diameter: '0' }] }),
  25. ).toEqual([]);
  26. });
  27. it('returns the single installed diameter', () => {
  28. expect(installedNozzleDiameters({ nozzles: [{ nozzle_diameter: '0.4' }] })).toEqual(['0.4']);
  29. });
  30. it('returns both diameters on a dual-nozzle printer, in order', () => {
  31. expect(
  32. installedNozzleDiameters({ nozzles: [{ nozzle_diameter: '0.4' }, { nozzle_diameter: '0.6' }] }),
  33. ).toEqual(['0.4', '0.6']);
  34. });
  35. it('dedupes repeated diameters (two 0.4 hotends report once)', () => {
  36. expect(
  37. installedNozzleDiameters({ nozzles: [{ nozzle_diameter: '0.4' }, { nozzle_diameter: '0.4' }] }),
  38. ).toEqual(['0.4']);
  39. });
  40. it('keeps only the valid diameter when one hotend is still an empty default', () => {
  41. expect(
  42. installedNozzleDiameters({ nozzles: [{ nozzle_diameter: '0.6' }, { nozzle_diameter: '' }] }),
  43. ).toEqual(['0.6']);
  44. });
  45. });