file.test.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { expect } from 'chai'
  2. import {
  3. getFileExtension,
  4. hasImageExtension,
  5. isSvgFile,
  6. } from '../../../../../frontend/js/features/source-editor/utils/file'
  7. describe('file utilities', function () {
  8. describe('getFileExtension', function () {
  9. ;[
  10. ['image.png', 'png'],
  11. ['image.PNG', 'png'],
  12. ['folder/subfolder/image.SVG', 'svg'],
  13. ['my.file.name.jpg', 'jpg'],
  14. ['filename', null],
  15. ['.gitignore.txt', 'txt'],
  16. ].forEach(([input, expected]) => {
  17. it(`returns correct extension for "${input}"`, function () {
  18. expect(getFileExtension(input as string)).to.equal(expected)
  19. })
  20. })
  21. })
  22. describe('hasImageExtension', function () {
  23. ;['png', 'jpg', 'jpeg', 'pdf', 'eps', 'svg'].forEach(ext => {
  24. it(`returns true for .${ext} files (including nested and uppercase)`, function () {
  25. expect(hasImageExtension(`image.${ext}`)).to.equal(true)
  26. expect(hasImageExtension(`image.${ext.toUpperCase()}`)).to.equal(true)
  27. expect(hasImageExtension(`folder/image.${ext}`)).to.equal(true)
  28. })
  29. })
  30. it('returns false for non-image files', function () {
  31. expect(hasImageExtension('document.tex')).to.equal(false)
  32. expect(hasImageExtension('README')).to.equal(false)
  33. })
  34. })
  35. describe('isSvgFile', function () {
  36. it('returns true for svg files (including nested and uppercase)', function () {
  37. expect(isSvgFile('diagram.svg')).to.equal(true)
  38. expect(isSvgFile('diagram.SVG')).to.equal(true)
  39. expect(isSvgFile('figures/diagram.svg')).to.equal(true)
  40. })
  41. it('returns false for non-svg files', function () {
  42. expect(isSvgFile('image.png')).to.equal(false)
  43. expect(isSvgFile('svgfile')).to.equal(false)
  44. expect(isSvgFile('svg-diagram.png')).to.equal(false)
  45. })
  46. })
  47. })