UNPKG

react-ionicons

Version:

A React SVG ionicon component

147 lines (123 loc) 3.1 kB
/** * Copyright 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @emails oncall+jsinfra@xmail.facebook.com */ /*jshint evil:true*/ require('mock-modules').autoMockOff(); describe('trailing-comma', function() { var transformFn; var visitors; beforeEach(function() { require('mock-modules').dumpCache(); visitors = require('../trailing-comma-visitors').visitorList; transformFn = require('../../src/jstransform').transform; }); function transform(code) { return transformFn(visitors, code).code; } // Functional tests. it('should strip commas from arrays', function() { var code = [ '([', ' 1,', ' 2, /* last item */', ']);' ].join('\n'); expect(eval(transform(code))).toEqual([1, 2]); }); it('should strip commas from objects', function() { var code = [ '({', ' x: 1,', ' y: 2, // last item', '});' ].join('\n'); expect(eval(transform(code))).toEqual({x: 1, y: 2}); }); // Syntax tests. it('should transform code with trailing comma in an array', function() { var code = [ 'var arr = [', ' 1,', ' [2, 3,],', ' 4 /* last, item */ ,', '];' ].join('\n'); var result = [ 'var arr = [', ' 1,', ' [2, 3],', ' 4 /* last item */ ', '];' ].join('\n'); expect(transform(code)).toEqual(result); }); it('should transform code with trailing comma in an array', function() { var code = [ 'var arr = [', ' 1,', ' 2, /* last item */', '];' ].join('\n'); var result = [ 'var arr = [', ' 1,', ' 2 /* last item */', '];' ].join('\n'); expect(transform(code)).toEqual(result); }); it('should not strip trailing parenthesis', function() { var code = [ 'var result = [', ' value1,', ' (condition ? 1 : 2),', '];' ].join('\n'); var result = [ 'var result = [', ' value1,', ' (condition ? 1 : 2)', '];' ].join('\n'); expect(transform(code)).toEqual(result); }); it('should transform code with trailing comma in an object', function() { var code = [ 'var obj = {', ' x: 1,', ' y: 2, /*last item*/', '};' ].join('\n'); var result = [ 'var obj = {', ' x: 1,', ' y: 2 /*last item*/', '};' ].join('\n'); expect(transform(code)).toEqual(result); }); it('should NOT transform code with trailing hole in an array', function() { var code = [ 'var arr = [', ' 1,', ' 2,', ' , /*last hole*/', '];' ].join('\n'); var result = [ 'var arr = [', ' 1,', ' 2,', ' , /*last hole*/', '];' ].join('\n'); expect(transform(code)).toEqual(result); }); });