travel/admin/node_modules/tui-code-snippet/test/enum.test.js

95 lines
2.7 KiB
JavaScript

'use strict';
var Enum = require('../src/js/enum');
describe('module:Enum', function() {
var isModernBrowser = (function() {
try {
Object.defineProperty({}, 'x', {});
return true;
} catch (e) {
return false;
}
})();
var enumO;
beforeEach(function() {
enumO = new Enum();
});
describe('.set()', function() {
it('상수명을 입력받을수있다.', function() {
enumO.set('CONST1', 'CONST2');
expect(enumO.CONST1).toBeDefined();
expect(enumO.CONST2).toBeDefined();
});
it('배열로 상수를 지정할수있다', function() {
enumO.set(['CONST3', 'CONST4']);
expect(enumO.CONST3).toBeDefined();
expect(enumO.CONST4).toBeDefined();
});
it('상수들은 서로다른 값을 갖는다', function() {
enumO.set('CONST1', 'CONST2');
expect(enumO.CONST1).not.toEqual(enumO.CONST2);
});
it('한번정의된 상수는 재정의 될수없다', function() {
var originalValue;
enumO.set('CONST1', 'CONST2');
originalValue = enumO.CONST1;
enumO.set('CONST1');
expect(enumO.CONST1).toEqual(originalValue);
});
});
describe('.getName()', function() {
it('값을 입력해 상수명을 얻어올수있다', function() {
var result;
enumO.set('CONST1', 'CONST2');
result = enumO.getName(enumO.CONST1);
expect(result).toEqual('CONST1');
});
});
describe('생성자 옵션으로 상수들을 지정할수있다', function() {
it('상수들이 정상적으로 생성되었다', function() {
var enumO2 = new Enum('CONST1', 'CONST2');
expect(enumO2.CONST1).toBeDefined();
expect(enumO2.CONST2).toBeDefined();
});
it('배열로 상수들이 정상적으로 생성되었다', function() {
var enumO2 = new Enum(['CONST1', 'CONST2']);
expect(enumO2.CONST1).toBeDefined();
expect(enumO2.CONST2).toBeDefined();
});
});
if (isModernBrowser) {
describe('Modern Browser: 정의된 값은 변경할수없다', function() {
beforeEach(function() {
enumO.set('CONST1', 'CONST2');
});
it('상수의 값이 변경되지 않는다', function() {
var desc = Object.getOwnPropertyDescriptor(enumO, 'CONST1');
expect(desc.writable).toEqual(false);
expect(desc.configurable).toEqual(false);
});
});
}
});