| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| import ReactComponents from "../react-components"; |
| import React from "react"; |
| import {mount} from 'enzyme'; |
| |
| var codeNoNewlines = 'function (doc) {emit(doc._id, 1);}'; |
| var code = 'function (doc) {\n emit(doc._id, 1);\n}'; |
| |
| describe('CodeEditorPanel', () => { |
| |
| describe('Doc icon', () => { |
| it('hidden by default', () => { |
| |
| const codeEditorEl = mount( |
| <ReactComponents.CodeEditorPanel defaultCode={code} /> |
| ); |
| expect(codeEditorEl.find('.fonticon-help-circled').length).toBe(0); |
| }); |
| it('hidden by default', () => { |
| |
| const codeEditorEl = mount( |
| <ReactComponents.CodeEditorPanel defaultCode={code} docLink="http://link.com" /> |
| ); |
| expect(codeEditorEl.find('.fonticon-help-circled').length).toBe(1); |
| }); |
| }); |
| |
| describe('Zen Mode', () => { |
| it('shows zen mode by default', () => { |
| |
| const codeEditorEl = mount( |
| <ReactComponents.CodeEditorPanel defaultCode={code} /> |
| ); |
| expect(codeEditorEl.find('.zen-editor-icon').length).toBe(1); |
| }); |
| |
| it('omits zen mode if explicitly turned off', () => { |
| |
| const codeEditorEl = mount( |
| <ReactComponents.CodeEditor defaultCode={code} allowZenMode={false} /> |
| ); |
| expect(codeEditorEl.find('.zen-editor-icon').length).toBe(0); |
| }); |
| }); |
| |
| describe('Beautify', () => { |
| it('confirm clicking beautify actually works within context of component', () => { |
| |
| const codeEditorEl = mount( |
| <ReactComponents.CodeEditorPanel |
| defaultCode={codeNoNewlines} |
| /> |
| ); |
| |
| // confirm there are no newlines in the code at this point |
| expect(codeEditorEl.instance().getValue().match(/\n/g)).toBeNull(); |
| |
| codeEditorEl.find('.beautify').simulate('click'); |
| |
| // now confirm newlines are found |
| expect(codeEditorEl.instance().getValue().match(/\n/g).length).toBe(2); |
| }); |
| }); |
| |
| }); |