(function() { module("tinymce.plugins.Image", { setupModule: function() { QUnit.stop(); tinymce.init({ selector: 'textarea', add_unload_trigger: false, skin: false, plugins: "image", disable_nodechange: true, init_instance_callback: function(ed) { window.editor = ed; QUnit.start(); } }); }, teardown: function() { delete editor.settings.image_dimensions; delete editor.settings.file_browser_callback; delete editor.settings.image_list; delete editor.settings.image_class_list; delete editor.settings.document_base_url; delete editor.settings.image_advtab; delete editor.settings.image_caption; var win = Utils.getFrontmostWindow(); if (win) { win.close(); } } }); function cleanHtml(html) { return Utils.cleanHtml(html).replace(/

( |]+>)<\/p>$/, ''); } function fillAndSubmitWindowForm(data) { var win = Utils.getFrontmostWindow(); win.fromJSON(data); win.find('form')[0].submit(); win.close(); } test('Default image dialog on empty editor', function() { editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "constrain": true, "height": "", "src": "", "width": "" }); fillAndSubmitWindowForm({ "alt": "alt", "height": "100", "src": "src", "width": "200" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Image dialog image_dimensions: false', function() { editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "src": "" }); fillAndSubmitWindowForm({ "alt": "alt", "src": "src" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); if (tinymce.Env.ceFalse) { test('All image dialog ui options on empty editor', function() { editor.settings.image_caption = true; editor.settings.image_list = [ {title: 'link1', value: 'link1'}, {title: 'link2', value: 'link2'} ]; editor.settings.image_class_list = [ {title: 'class1', value: 'class1'}, {title: 'class2', value: 'class2'} ]; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "class": "class1", "constrain": true, "caption": false, "height": "", "src": "", "width": "" }); fillAndSubmitWindowForm({ "alt": "alt", "class": "class1", "constrain": true, "caption": true, "height": "200", "src": "src", "width": "100" }); equal( cleanHtml(editor.getContent()), '
alt
caption
' ); }); } else { test('All image dialog ui options on empty editor (old IE)', function() { editor.settings.image_caption = true; editor.settings.image_list = [ {title: 'link1', value: 'link1'}, {title: 'link2', value: 'link2'} ]; editor.settings.image_class_list = [ {title: 'class1', value: 'class1'}, {title: 'class2', value: 'class2'} ]; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "class": "class1", "constrain": true, "height": "", "src": "", "width": "" }); fillAndSubmitWindowForm({ "alt": "alt", "class": "class1", "constrain": true, "caption": true, "height": "200", "src": "src", "width": "100" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); } test("Image recognizes relative src url and prepends relative image_prepend_url setting.", function() { var win, elementId, element; editor.settings.image_prepend_url = 'testing/images/'; editor.setContent(''); editor.execCommand('mceImage', true); var data = { "src": "src", "alt": "alt" }; win = Utils.getFrontmostWindow(); elementId = win.find('#src')[0]._id; element = document.getElementById(elementId).childNodes[0]; win.fromJSON(data); Utils.triggerElementChange(element); win.find('form')[0].submit(); win.close(); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test("Image recognizes relative src url and prepends absolute image_prepend_url setting.", function() { var win, elementId, element; editor.settings.image_prepend_url = 'http://localhost/images/'; editor.setContent(''); editor.execCommand('mceImage', true); var data = { "src": "src", "alt": "alt" }; win = Utils.getFrontmostWindow(); elementId = win.find('#src')[0]._id; element = document.getElementById(elementId).childNodes[0]; win.fromJSON(data); Utils.triggerElementChange(element); win.find('form')[0].submit(); win.close(); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog border option on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "border": "10px", "src": "src" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog margin space options on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "hspace": "10", "src": "src", "vspace": "10" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog border style only options on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "src": "src", "style": "border-width: 10px;" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog margin style only options on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "src": "src", "style": "margin: 10px;" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog overriden border style options on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "border": "10", "src": "src", "style": "border-width: 15px;" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog overriden margin style options on empty editor', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); fillAndSubmitWindowForm({ "alt": "alt", "hspace": "10", "src": "src", "style": "margin-left: 15px; margin-top: 20px;", "vspace": "10" }); equal( cleanHtml(editor.getContent()), '

alt

' ); }); test('Advanced image dialog non-shorthand horizontal margin style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin-left: 15px; margin-right: 15px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "15", "src": "", "style": "margin-left: 15px; margin-right: 15px;", "vspace": "" }); }); test('Advanced image dialog non-shorthand vertical margin style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin-top: 15px; margin-bottom: 15px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "margin-top: 15px; margin-bottom: 15px;", "vspace": "15" }); }); test('Advanced image dialog shorthand margin 1 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "5", "src": "", "style": "margin: 5px;", "vspace": "5" }); }); test('Advanced image dialog shorthand margin 2 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px 10px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "10", "src": "", "style": "margin: 5px 10px 5px 10px;", "vspace": "5" }); }); test('Advanced image dialog shorthand margin 2 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px 10px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "10", "src": "", "style": "margin: 5px 10px 5px 10px;", "vspace": "5" }); }); test('Advanced image dialog shorthand margin 3 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px 10px 15px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "10", "src": "", "style": "margin: 5px 10px 15px 10px;", "vspace": "" }); }); test('Advanced image dialog shorthand margin 4 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px 10px 15px 20px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "margin: 5px 10px 15px 20px;", "vspace": "" }); }); test('Advanced image dialog shorthand margin 4 value style change test', function(){ editor.settings.image_advtab = true; editor.settings.image_dimensions = false; editor.setContent(''); editor.execCommand('mceImage', true); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "", "vspace": "" }); Utils.getFrontmostWindow().find('#style').value('margin: 5px 10px 15px 20px; margin-top: 15px;').fire('change'); deepEqual(Utils.getFrontmostWindow().toJSON(), { "alt": "", "border": "", "hspace": "", "src": "", "style": "margin: 15px 10px 15px 20px;", "vspace": "15" }); }); })();