
describe('EditableText', () => {
    const scripts = ['instrumentation.js', 'components/base.js', 'components/editable-text.js'];

    it('show the set text', () => {
        const context = new BrowsingContext();
        let editableText;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.enqueueToRender();
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().textContent).to.not.contain('hello');
            editableText.setText('hello');
            editableText.enqueueToRender();
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().textContent).to.contain('hello');
        });
    });

    it('go to the editing mode', () => {
        const context = new BrowsingContext();
        let editableText;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.setText('hello');
            editableText.enqueueToRender();
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().querySelector('input').offsetHeight).to.be(0);
            expect(editableText.content().textContent).to.contain('hello');
            expect(editableText.content().querySelector('a').textContent).to.contain('Edit');
            expect(editableText.content().querySelector('a').textContent).to.not.contain('Save');
            editableText.content().querySelector('a').click();
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().querySelector('input').offsetHeight).to.not.be(0);
            expect(editableText.content().querySelector('a').textContent).to.not.contain('Edit');
            expect(editableText.content().querySelector('a').textContent).to.contain('Save');
        });
    });

    it('should dispatch "update" action', () => {
        const context = new BrowsingContext();
        let editableText;
        let updateCount = 0;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.setText('hello');
            editableText.enqueueToRender();
            editableText.listenToAction('update', () => updateCount++);
            return waitForComponentsToRender(context);
        }).then(() => {
            editableText.content().querySelector('a').click();
            return waitForComponentsToRender(context);
        }).then(() => {
            const input = editableText.content().querySelector('input');
            expect(input.offsetHeight).to.not.be(0);
            expect(editableText.editedText()).to.be('hello');
            input.value = 'world';
            expect(editableText.editedText()).to.be('world');
            expect(updateCount).to.be(0);
            editableText.content().querySelector('a').click();
            expect(updateCount).to.be(1);
            expect(editableText.editedText()).to.be('world');
            expect(editableText.text()).to.be('hello');
        });
    });

    it('should end the editing mode when it loses the focus', () => {
        const context = new BrowsingContext();
        let editableText;
        let updateCount = 0;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.setText('hello');
            editableText.enqueueToRender();
            editableText.listenToAction('update', () => updateCount++);
            return waitForComponentsToRender(context);
        }).then(() => {
            editableText.content().querySelector('a').click();
            return waitForComponentsToRender(context);
        }).then(() => {
            const input = editableText.content().querySelector('input');
            expect(input.offsetHeight).to.not.be(0);
            expect(editableText.editedText()).to.be('hello');
            input.value = 'world';
            expect(updateCount).to.be(0);

            const focusableElement = document.createElement('div');
            focusableElement.setAttribute('tabindex', 0);
            document.body.appendChild(focusableElement);
            focusableElement.focus();

            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().querySelector('input').offsetHeight).to.be(0);
            expect(editableText.text()).to.be('hello');
            expect(updateCount).to.be(0);
        });
    });

    it('should not end the editing mode when the "Save" button is focused', () => {
        const context = new BrowsingContext();
        let editableText;
        let updateCount = 0;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.setText('hello');
            editableText.enqueueToRender();
            editableText.listenToAction('update', () => updateCount++);
            return waitForComponentsToRender(context);
        }).then(() => {
            editableText.content().querySelector('a').click();
            return waitForComponentsToRender(context);
        }).then(() => {
            const input = editableText.content().querySelector('input');
            expect(input.offsetHeight).to.not.be(0);
            expect(editableText.editedText()).to.be('hello');
            input.value = 'world';
            expect(updateCount).to.be(0);
            editableText.content().querySelector('a').focus();
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content().querySelector('input').offsetHeight).to.not.be(0);
            editableText.content().querySelector('a').click();
            expect(editableText.editedText()).to.be('world');
            expect(updateCount).to.be(1);
        });
    });

    it('should dipsatch "update" action when the "Save" button is clicked in Safari', () => {
        const context = new BrowsingContext();
        let editableText;
        let updateCount = 0;
        return context.importScripts(scripts, 'EditableText', 'ComponentBase').then((symbols) => {
            const [EditableText] = symbols;
            editableText = new EditableText;
            context.document.body.appendChild(editableText.element());
            editableText.setText('hello');
            editableText.enqueueToRender();
            editableText.listenToAction('update', () => updateCount++);
            return waitForComponentsToRender(context);
        }).then(() => {
            editableText.content('action-button').click();
            return waitForComponentsToRender(context);
        }).then(() => {
            const input = editableText.content('text-field');
            expect(input.offsetHeight).to.not.be(0);
            expect(editableText.editedText()).to.be('hello');
            input.value = 'world';
            expect(updateCount).to.be(0);
            return waitForComponentsToRender(context);
        }).then(() => {
            editableText.content('action-button').dispatchEvent(new MouseEvent('mousedown'));
            return wait(0);
        }).then(() => {
            editableText.content('text-field').blur();
            editableText.content('action-button').dispatchEvent(new MouseEvent('mouseup'));
            return waitForComponentsToRender(context);
        }).then(() => {
            expect(editableText.content('text-field').offsetHeight).to.be(0);
            expect(updateCount).to.be(1);
            expect(editableText.editedText()).to.be('world');
        });
    });

});
