| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- * Unit tests for getMaintenanceWikiUrl — model-aware wiki URL resolver.
- *
- * Covers the X2D classification (#988): X2D has hardened steel rods like
- * P2S, NOT carbon rods and NOT linear rails. It must resolve to the P2S
- * wiki pages for steel-rod-specific tasks.
- *
- * Also guards against regressions for the existing families (X1, P1, A1,
- * H2D, P2S) so that broadening the rod-type bucket for X2D did not
- * accidentally change their mappings.
- */
- import { describe, it, expect } from 'vitest';
- import { getMaintenanceWikiUrl } from '../../utils/maintenanceWikiUrls';
- describe('getMaintenanceWikiUrl', () => {
- describe('X2D (#988)', () => {
- it('resolves "Lubricate Steel Rods" to the P2S wiki page', () => {
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', 'X2D')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis',
- );
- });
- it('resolves "Clean Steel Rods" to the P2S wiki page', () => {
- expect(getMaintenanceWikiUrl('Clean Steel Rods', 'X2D')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis',
- );
- });
- it('resolves belt tension to the P2S wiki page', () => {
- expect(getMaintenanceWikiUrl('Check Belt Tension', 'X2D')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension',
- );
- });
- it('resolves nozzle cold pull to the P2S wiki page', () => {
- expect(getMaintenanceWikiUrl('Clean Nozzle/Hotend', 'X2D')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/cold-pull-maintenance-hotend',
- );
- });
- it('does not return a carbon-rod wiki URL for X2D', () => {
- // "Clean Carbon Rods" is X1/P1-only; X2D must resolve to null so the
- // task button renders without a link rather than pointing at the wrong page.
- expect(getMaintenanceWikiUrl('Clean Carbon Rods', 'X2D')).toBeNull();
- });
- it('does not return a linear-rail wiki URL for X2D', () => {
- // "Lubricate Linear Rails" is A1/H2-only.
- expect(getMaintenanceWikiUrl('Lubricate Linear Rails', 'X2D')).toBeNull();
- });
- });
- describe('regression: P2S still maps to P2S wiki pages', () => {
- it('still resolves Lubricate Steel Rods for P2S', () => {
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', 'P2S')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis',
- );
- });
- it('still resolves belt tension for P2S', () => {
- expect(getMaintenanceWikiUrl('Check Belt Tension', 'P2S')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension',
- );
- });
- });
- describe('P1 belt tension (#3302)', () => {
- // Bambu Lab's belt page covers X1 and P1 ("X1/P1 Series Belt tensioning
- // procedure"); there is no P1 page of its own. The link went to the P1
- // series' general maintenance recommendations instead.
- it.each(['P1S', 'P1P', 'P1 S'])('%s links to the X1/P1 belt tensioning page', (model) => {
- expect(getMaintenanceWikiUrl('Check Belt Tension', model)).toBe(
- 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension',
- );
- });
- });
- describe('regression: other families untouched', () => {
- it('X1C belt tension unchanged', () => {
- expect(getMaintenanceWikiUrl('Check Belt Tension', 'X1C')).toBe(
- 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension',
- );
- });
- it('H2D belt tension unchanged', () => {
- expect(getMaintenanceWikiUrl('Check Belt Tension', 'H2D')).toBe(
- 'https://wiki.bambulab.com/en/h2/maintenance/belt-tension',
- );
- });
- it('A1 Mini linear rails unchanged', () => {
- expect(getMaintenanceWikiUrl('Lubricate Linear Rails', 'A1 Mini')).toBe(
- 'https://wiki.bambulab.com/en/a1-mini/maintenance/lubricate-y-axis',
- );
- });
- it('X1C carbon rods unchanged', () => {
- expect(getMaintenanceWikiUrl('Clean Carbon Rods', 'X1C')).toBe(
- 'https://wiki.bambulab.com/en/general/carbon-rods-clearance',
- );
- });
- it('P2S still does not resolve linear-rail task', () => {
- // Sanity check: the X2D broadening must not have widened P2S into
- // unrelated task categories.
- expect(getMaintenanceWikiUrl('Lubricate Linear Rails', 'P2S')).toBeNull();
- });
- });
- describe('model name normalisation', () => {
- it('matches X2D regardless of hyphens or spaces', () => {
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', 'x-2d')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis',
- );
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', 'x 2d')).toBe(
- 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis',
- );
- });
- it('returns null for empty model', () => {
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', null)).toBeNull();
- expect(getMaintenanceWikiUrl('Lubricate Steel Rods', '')).toBeNull();
- });
- });
- });
|