import { nextTicketStatus } from './ticket-status';

describe('nextTicketStatus', () => {
  it('books the line as soon as a ticket is assigned', () => {
    expect(nextTicketStatus('Pending', 1)).toBe('Booked');
    expect(nextTicketStatus('Pending', 2)).toBe('Booked');
  });

  it('stays Pending while no ticket is assigned', () => {
    expect(nextTicketStatus('Pending', 0)).toBe('Pending');
  });

  it('falls back to Pending when the last ticket is taken back', () => {
    expect(nextTicketStatus('Booked', 0)).toBe('Pending');
  });

  it('stays Booked while at least one ticket remains', () => {
    expect(nextTicketStatus('Booked', 1)).toBe('Booked');
  });

  it('never overrides manual statuses', () => {
    expect(nextTicketStatus('On Hold', 2)).toBe('On Hold');
    expect(nextTicketStatus('Cancelled', 0)).toBe('Cancelled');
    expect(nextTicketStatus('No Show', 0)).toBe('No Show');
  });
});
