import { parse, TodoFormat, build } from '../parser';



describe('Todo', () => {
  describe('parse', () => {
    const validate = (message: string, result: TodoFormat, rebuild?: string) => {
      const parsed = parse(message);
      expect(parsed).toEqual(result);
      const built = build(result);
      expect(built).toEqual(rebuild || message);
    }

    const create = (todo: TodoFormat, rebuild?: string) => {
      const built = build(todo);
      expect(built).toBe(rebuild);
    }

    test('it should be able to parse', () => {
      validate('    // TOdo(#asdsdf): Hello world', {
        prefix: '    // TOdo',
        content: 'Hello world',
        issueId: 'asdsdf',
      });

      validate('#   TODO do stuff', {
        prefix: '#   TODO',
        content: 'do stuff',
      }, '#   TODO: do stuff');

      validate('todo: do stuff', {
        prefix: 'todo',
        content: 'do stuff',
      });

      create({
        prefix: '#todo',
        content: 'some text',
        issueId: '234',
        owner: 'foo',
      }, '#todo(#234,foo): some text‌⁠')

      create({
        prefix: '  //TODO',
        content: 'some text',
        issueId: '234',
      }, '  //TODO(#234): some text‌⁠')
    })
  });
});
