aboutsummaryrefslogtreecommitdiff
path: root/test/unit/specs/services/theme_data/sanity_checks.spec.js
blob: f0072e7d567e3c53bc7343e330222ecf486c60d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { getColors } from 'src/services/theme_data/theme_data.service.js'

const checkColors = (output) => {
  expect(output).to.have.property('colors')
  Object.entries(output.colors).forEach(([key, v]) => {
    expect(v, key).to.be.an('object')
    expect(v, key).to.include.all.keys('r', 'g', 'b')
    'rgba'.split('').forEach(k => {
      if ((k === 'a' && v.hasOwnProperty('a')) || k !== 'a') {
        expect(v[k], key + '.' + k).to.be.a('number')
        expect(v[k], key + '.' + k).to.be.least(0)
        expect(v[k], key + '.' + k).to.be.most(k === 'a' ? 1 : 255)
      }
    })
  })
}

describe('Theme Data utility functions', () => {
  const context = require.context('static/themes/', false, /\.json$/)
  context.keys().forEach((key) => {
    it(`Should render all colors for ${key} properly`, () => {
      const { theme, source } = context(key)
      const data = source || theme
      const colors = getColors(data.colors, data.opacity, 1)
      checkColors(colors)
    })
  })
})