const { test, describe } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('fs');
const path = require('path');

describe('pause-work improvements', () => {
  let pauseContent;

  test('pause-work.md exists', () => {
    const p = path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md');
    assert.ok(fs.existsSync(p));
    pauseContent = fs.readFileSync(p, 'utf-8');
  });

  test('#1489: pause-work detects non-phase contexts (spike, deliberation, research)', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(pauseContent.includes('spike') || pauseContent.includes('Spike'),
      'pause-work should handle spike context');
    assert.ok(pauseContent.includes('deliberation') || pauseContent.includes('research'),
      'pause-work should handle deliberation/research context');
  });

  test('#1489: pause-work writes to non-phase paths when appropriate', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(pauseContent.includes('.planning/.continue-here') ||
              pauseContent.includes('.planning/spikes') ||
              pauseContent.includes('non-phase'),
      'pause-work should write to root .planning/ when not in a phase');
  });

  test('#1490: continue-here template includes required-reading section', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(pauseContent.includes('Required Reading') || pauseContent.includes('required-reading'),
      'Template should include Required Reading section');
  });

  test('#1490: continue-here template includes anti-patterns section', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(pauseContent.includes('Anti-Pattern') || pauseContent.includes('anti-pattern') ||
              pauseContent.includes('do NOT repeat'),
      'Template should include Anti-Patterns section');
  });

  test('#1490: continue-here template includes infrastructure-state section', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(pauseContent.includes('Infrastructure') || pauseContent.includes('infrastructure'),
      'Template should include Infrastructure State section');
  });

  test('#1487: pause-work documents pre-execution critique gate', () => {
    pauseContent = pauseContent || fs.readFileSync(
      path.join(__dirname, '..', 'get-shit-done', 'workflows', 'pause-work.md'), 'utf-8'
    );
    assert.ok(
      pauseContent.includes('critique') || pauseContent.includes('design gate') ||
      pauseContent.includes('Pre-Execution'),
      'pause-work should document design critique gate for design→execution transitions'
    );
  });
});
