Skip to content

Latest commit

 

History

History

__tests__

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
import {
  French,
  YosemiteDecimal,
  Font,
  VScale,
  GradeScales,
  convertGrade,
  Ewbank
} from '../index'

describe('Convert grades to scores', () => {
  test('returns the correct score', () => {
    expect(French.getScore('8a')).toEqual([84, 85])
    expect(French.getScore('7c+/8a')).toEqual([83, 84])
    expect(YosemiteDecimal.getScore('5.12+')).toEqual([79, 80])
  })
})

describe('Convert scores to greades', () => {
  test('supports single score', () => {
    expect(Font.getGrade(80)).toEqual('7c')
  })
  test('supports a range of scores', () => {
    expect(Font.getGrade([79, 81])).toEqual('7b+/7c')
  })
})

describe('Validate grading scales', () => {
  test('6A is Font scale not VScale', () => {
    expect(VScale.isType('6A')).toBe(false)
    expect(Font.isType('6A')).toBe(true)
  })
})

describe('Convert grades across scales', () => {
  jest.spyOn(console, 'warn').mockImplementation()
  beforeEach(() => {
    jest.clearAllMocks()
  })

  test('5.11a YDS is 6b+/6c in Frence', () => {
    expect(convertGrade('5.11a', GradeScales.YDS, GradeScales.FRENCH)).toEqual(
      '6b+/6c'
    )
  })
  test('6a Font is V3', () => {
    expect(convertGrade('6a', GradeScales.FONT, GradeScales.VSCALE)).toEqual(
      'V3'
    )
  })
  test('Convert from yds to vscale is not allowed', () => {
    expect(convertGrade('5.11a', GradeScales.YDS, GradeScales.VSCALE)).toEqual(
      ''
    )
    expect(console.warn).toHaveBeenCalledWith(
      expect.stringContaining(
        "Scale: Yosemite Decimal System doesn't support converting to Scale: V Scale"
      )
    )
  })
})

describe('Get gradeband', () => {
  test('returns correct grade band', () => {
    expect(Ewbank.getGradeBand('10')).toEqual('beginner')
    expect(Ewbank.getGradeBand('30')).toEqual('expert')
  })
  test('pass invalid grade format returns unknown', () => {
    expect(Ewbank.getGradeBand('6a')).toEqual('unknown')
  })
})

describe('Compare grades', () => {
  const harder = French.getScore('8a') // Output: [ 84, 85 ]
  const easier = YosemiteDecimal.getScore('5.13a') // Output: [ 82, 83 ]
  test('returns correct score', () => {
    expect(harder).toEqual([84, 85])
    expect(easier).toEqual([82, 83])
    expect(harder > easier).toBe(true)
  })
})