/* eslint-env mocha */ /* eslint no-template-curly-in-string: 0 */ import assert from 'assert'; import { extractProp, changePlugins, fallbackToBabylon, describeIfNotBabylon, setParserName, } from '../helper'; import getPropValue from '../../src/getPropValue'; describe('getPropValue', () => { beforeEach(() => { setParserName('babel'); }); it('should export a function', () => { const expected = 'function'; const actual = typeof getPropValue; assert.equal(actual, expected); }); it('should return undefined when not provided with a JSXAttribute', () => { const expected = undefined; const actual = getPropValue(1); assert.equal(actual, expected); }); it('should not throw error when trying to get value from unknown node type', () => { const prop = { type: 'JSXAttribute', value: { type: 'JSXExpressionContainer', }, }; let counter = 0; // eslint-disable-next-line no-console const errorOrig = console.error; // eslint-disable-next-line no-console console.error = () => { counter += 1; }; let value; assert.doesNotThrow(() => { value = getPropValue(prop); }, Error); assert.equal(null, value); assert.equal(counter, 1); // eslint-disable-next-line no-console console.error = errorOrig; }); describe('Null', () => { it('should return true when no value is given', () => { const prop = extractProp('
'); const expected = true; const actual = getPropValue(prop); assert.equal(actual, expected); }); }); describe('Literal', () => { it('should return correct string if value is a string', () => { const prop = extractProp(''); const expected = 'bar'; const actual = getPropValue(prop); assert.equal(actual, expected); }); it('should return correct string if value is a string expression', () => { const prop = extractProp(''); const expected = 'bar'; const actual = getPropValue(prop); assert.equal(actual, expected); }); it('should return correct integer if value is a integer expression', () => { const prop = extractProp(''); const expected = 1; const actual = getPropValue(prop); assert.equal(actual, expected); }); it('should convert "true" to boolean type', () => { const prop = extractProp(''); const expected = true; const actual = getPropValue(prop); assert.equal(actual, expected); }); it('should convert "false" to boolean type', () => { const prop = extractProp(''); const expected = false; const actual = getPropValue(prop); assert.equal(actual, expected); }); }); describe('JSXElement', () => { it('should return correct representation of JSX element as a string', () => { const prop = extractProp('} />'); const expected = '