UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

190 lines (161 loc) 5.37 kB
<!DOCTYPE html> <!-- All Rights Reserved. @author tildahl@google.com (Michael Tildahl) @author robbyw@google.com (Robby Walker) --> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by an Apache 2.0 License. See the COPYING file for details. --> <head> <title>Closure Unit Tests - goog.editor.plugins.AbstractBubblePlugin</title> <script src="../../base.js"></script> <script> goog.require('goog.dom'); goog.require('goog.dom.TagName'); goog.require('goog.editor.plugins.AbstractBubblePlugin'); goog.require('goog.events.BrowserEvent'); goog.require('goog.events.EventType'); goog.require('goog.events.KeyCodes'); goog.require('goog.style'); goog.require('goog.testing.editor.FieldMock'); goog.require('goog.testing.editor.TestHelper'); goog.require('goog.testing.events'); goog.require('goog.testing.jsunit'); goog.require('goog.testing.LooseMock'); goog.require('goog.userAgent'); </script> <link rel="stylesheet" type="text/css" href="../../css/bubble.css"> </head> <body> <div id="field"></div> <script> var testHelper; var fieldDiv = goog.dom.$('field'); var COMMAND = 'base'; var FIELDMOCK; var bubblePlugin; var link; var link2; function setUpPage() { var viewportSize = goog.dom.getViewportSize(); // Some tests depends on enough size of viewport. if (viewportSize.width < 600 || viewportSize.height < 440) { window.moveTo(0, 0); window.resizeTo(640, 480); } }; function setUp() { testHelper = new goog.testing.editor.TestHelper(fieldDiv); testHelper.setUpEditableElement(); FIELDMOCK = new goog.testing.editor.FieldMock(); bubblePlugin = new goog.editor.plugins.AbstractBubblePlugin(COMMAND); bubblePlugin.fieldObject = FIELDMOCK; fieldDiv.innerHTML = '<a href="http://www.google.com">Google</a>' + '<a href="http://www.google.com">Google2</a>'; link = fieldDiv.firstChild; link2 = fieldDiv.lastChild; window.scrollTo(0, 0); goog.style.setStyle(document.body, 'direction', 'ltr'); goog.style.setStyle(document.getElementById('field'), 'position', 'static'); } function tearDown() { bubblePlugin.closeBubble(); testHelper.tearDownEditableElement(); } /** * This is a helper function for setting up the targetElement with a * given direction. * * @param {string} dir The direction of the targetElement, 'ltr' or 'rtl'. */ function prepareTargetWithGivenDirection(dir) { goog.style.setStyle(document.body, 'direction', dir); fieldDiv.style.direction = dir; fieldDiv.innerHTML = '<a href="http://www.google.com">Google</a>'; link = fieldDiv.firstChild; FIELDMOCK.$replay(); bubblePlugin.createBubbleContents = function(bubbleContainer) { bubbleContainer.innerHTML = '<div style="border:1px solid blue;">B</div>'; goog.style.setStyle(bubbleContainer, 'border', '1px solid white'); }; bubblePlugin.registerFieldObject(FIELDMOCK); bubblePlugin.enable(FIELDMOCK); bubblePlugin.createBubble(link); } function helpTestCreateBubble(opt_fn) { FIELDMOCK.$replay(); var numCalled = 0; bubblePlugin.createBubbleContents = function(bubbleContainer) { numCalled++; assertNotNull('bubbleContainer should not be null', bubbleContainer); } if (opt_fn) { opt_fn(); } bubblePlugin.createBubble(link); assertEquals('createBubbleContents should be called', 1, numCalled); FIELDMOCK.$verify(); } function testCreateBubble(opt_fn) { helpTestCreateBubble(opt_fn); assertTrue(bubblePlugin.getSharedBubble_() instanceof goog.ui.editor.Bubble); assertTrue('Bubble should be visible', bubblePlugin.isVisible()); } function testOpeningBubbleCallsOnShow() { var numCalled = 0; testCreateBubble(function() { bubblePlugin.onShow = function() { numCalled++; }; }); assertEquals('onShow should be called', 1, numCalled); FIELDMOCK.$verify(); } function testCloseBubble() { testCreateBubble(); bubblePlugin.closeBubble(); assertFalse('Bubble should not be visible', bubblePlugin.isVisible()); FIELDMOCK.$verify(); } function testZindexBehavior() { // Don't use the default return values. FIELDMOCK.$reset(); FIELDMOCK.getAppWindow().$anyTimes().$returns(window); FIELDMOCK.getEditableDomHelper().$anyTimes() .$returns(goog.dom.getDomHelper(document)); FIELDMOCK.getBaseZindex().$returns(2); bubblePlugin.createBubbleContents = goog.nullFunction; FIELDMOCK.$replay(); bubblePlugin.createBubble(link); assertEquals('2', '' + bubblePlugin.getSharedBubble_().bubbleContainer_.style.zIndex); FIELDMOCK.$verify(); } function testNoTwoBubblesOpenAtSameTime() { FIELDMOCK.$replay(); var origClose = goog.bind(bubblePlugin.closeBubble, bubblePlugin);; var numTimesCloseCalled = 0; bubblePlugin.closeBubble = function() { numTimesCloseCalled++; origClose(); }; bubblePlugin.getBubbleTargetFromSelection = function(selectedElement) { return selectedElement; }; bubblePlugin.createBubbleContents = goog.nullFunction; bubblePlugin.handleSelectionChangeInternal_(link); assertEquals(0, numTimesCloseCalled); assertEquals(link, bubblePlugin.targetElement_); FIELDMOCK.$verify(); bubblePlugin.handleSelectionChangeInternal_(link2); assertEquals(1, numTimesCloseCalled); assertEquals(link2, bubblePlugin.targetElement_); FIELDMOCK.$verify(); } </script> </body> </html>