import { getMotionContainerPropsForNavigation, getMotionItemPropsForNavigation, STAGGER_FAST, FADE_UP } from '../motion';

describe('getMotionContainerPropsForNavigation', () => {
  it('returns initial hidden for POP navigation', () => {
    expect(getMotionContainerPropsForNavigation(true, STAGGER_FAST, 'POP')).toEqual({
      variants: STAGGER_FAST,
      initial: 'hidden',
      animate: 'show',
    });
  });

  it('skips initial animation for PUSH navigation', () => {
    expect(getMotionContainerPropsForNavigation(true, STAGGER_FAST, 'PUSH')).toEqual({
      variants: STAGGER_FAST,
      initial: false,
      animate: 'show',
    });
  });

  it('disables motion when not enabled', () => {
    expect(getMotionContainerPropsForNavigation(false, STAGGER_FAST, 'POP')).toEqual({
      initial: false,
    });
  });
});

describe('getMotionItemPropsForNavigation', () => {
  it('returns animate props for POP navigation', () => {
    expect(getMotionItemPropsForNavigation(true, FADE_UP, 'POP')).toEqual({
      variants: FADE_UP,
      initial: 'hidden',
      animate: 'show',
    });
  });

  it('skips initial animation for PUSH navigation', () => {
    expect(getMotionItemPropsForNavigation(true, FADE_UP, 'PUSH')).toEqual({
      variants: FADE_UP,
      initial: false,
      animate: 'show',
    });
  });

  it('returns empty props when motion disabled', () => {
    expect(getMotionItemPropsForNavigation(false, FADE_UP, 'POP')).toEqual({});
  });
});
