import { TypeKind } from 'graphql';
import isRequired from './isRequired';

describe('isRequired', () => {
  it('returns the correct type for SCALAR types', () => {
    expect(isRequired({ name: 'foo', kind: TypeKind.SCALAR })).toEqual(false);
  });
  it('returns the correct type for NON_NULL types', () => {
    expect(
      isRequired({
        kind: TypeKind.NON_NULL,
        ofType: { name: 'foo', kind: TypeKind.SCALAR }
      })
    ).toEqual(true);
  });
  it('returns the correct type for LIST types', () => {
    expect(
      isRequired({
        kind: TypeKind.LIST,
        ofType: { name: 'foo', kind: TypeKind.SCALAR }
      })
    ).toEqual(false);
  });
  it('returns the correct type for NON_NULL LIST types', () => {
    expect(
      isRequired({
        kind: TypeKind.NON_NULL,
        ofType: {
          kind: TypeKind.LIST,
          ofType: { name: 'foo', kind: TypeKind.SCALAR }
        }
      })
    ).toEqual(true);
  });
});
