Best JavaScript code snippet using playwright-internal
command.spec.js
Source:command.spec.js
1/**2 * @author NHN. FE Development Team <dl_javascript@nhn.com>3 * @fileoverview Tests command with command-factory4 */5import snippet from 'tui-code-snippet';6import fabric from 'fabric';7import Graphics from '@/graphics';8import Invoker from '@/invoker';9import commandFactory from '@/factory/command';10import { Promise } from '@/util';11import { commandNames as commands } from '@/consts';12describe('commandFactory', () => {13 let invoker, mockImage, canvas, graphics, dimensions;14 beforeEach(() => {15 dimensions = {16 width: 100,17 height: 100,18 };19 graphics = new Graphics(document.createElement('canvas'));20 invoker = new Invoker();21 mockImage = new fabric.Image(null, dimensions);22 graphics.setCanvasImage('', mockImage);23 canvas = graphics.getCanvas();24 });25 describe('functions', () => {26 it('can register custom command', (done) => {27 const testCommand = {28 name: 'testCommand',29 execute() {},30 undo() {},31 };32 spyOn(testCommand, 'execute').and.returnValue(Promise.resolve('testCommand'));33 spyOn(testCommand, 'undo').and.returnValue(Promise.resolve());34 commandFactory.register(testCommand);35 const command = commandFactory.create('testCommand');36 expect(command).not.toBe(null);37 invoker38 .execute('testCommand', graphics)39 .then((commandName) => {40 expect(commandName).toBe('testCommand');41 expect(testCommand.execute).toHaveBeenCalledWith(graphics);42 done();43 })44 ['catch']((message) => {45 fail(message);46 done();47 });48 });49 it('can pass parameters on execute', (done) => {50 commandFactory.register({51 name: 'testCommand',52 execute(compMap, obj1, obj2, obj3) {53 expect(obj1).toBe(1);54 expect(obj2).toBe(2);55 expect(obj3).toBe(3);56 return Promise.resolve();57 },58 });59 invoker60 .execute('testCommand', graphics, 1, 2, 3)61 .then(() => {62 done();63 })64 ['catch']((message) => {65 fail(message);66 done();67 });68 });69 it('can pass parameters on undo', (done) => {70 commandFactory.register({71 name: 'testCommand',72 execute() {73 return Promise.resolve();74 },75 undo(compMap, obj1, obj2, obj3) {76 expect(obj1).toBe(1);77 expect(obj2).toBe(2);78 expect(obj3).toBe(3);79 return Promise.resolve();80 },81 });82 invoker83 .execute('testCommand', graphics, 1, 2, 3)84 .then(() => invoker.undo())85 .then(() => done())86 ['catch']((message) => {87 fail(message);88 done();89 });90 });91 });92 describe('addObjectCommand', () => {93 let obj;94 it('should stamp object', (done) => {95 obj = new fabric.Rect();96 invoker.execute(commands.ADD_OBJECT, graphics, obj).then(() => {97 expect(snippet.hasStamp(obj)).toBe(true);98 done();99 });100 });101 it('should add object to canvas', (done) => {102 obj = new fabric.Rect();103 invoker.execute(commands.ADD_OBJECT, graphics, obj).then(() => {104 expect(canvas.contains(obj)).toBe(true);105 done();106 });107 });108 it('"undo()" should remove object from canvas', (done) => {109 obj = new fabric.Rect();110 invoker111 .execute(commands.ADD_OBJECT, graphics, obj)112 .then(() => invoker.undo())113 .then(() => {114 expect(canvas.contains(obj)).toBe(false);115 done();116 });117 });118 });119 describe('changeSelectionCommand', () => {120 let obj;121 beforeEach(() => {122 spyOn(canvas, 'getPointer');123 obj = new fabric.Rect({124 width: 10,125 height: 10,126 top: 10,127 left: 10,128 scaleX: 1,129 scaleY: 1,130 angle: 0,131 });132 graphics._addFabricObject(obj);133 graphics._onMouseDown({ target: obj });134 const props = [135 {136 id: graphics.getObjectId(obj),137 width: 30,138 height: 30,139 top: 30,140 left: 30,141 scaleX: 0.5,142 scaleY: 0.5,143 angle: 10,144 },145 ];146 const makeCommand = commandFactory.create(commands.CHANGE_SELECTION, graphics, props);147 makeCommand.execute(graphics, props);148 invoker.pushUndoStack(makeCommand);149 });150 it('should work undo command correctly', (done) => {151 invoker.undo().then(() => {152 expect(obj.width).toBe(10);153 expect(obj.height).toBe(10);154 expect(obj.left).toBe(10);155 expect(obj.top).toBe(10);156 expect(obj.scaleX).toBe(1);157 expect(obj.scaleY).toBe(1);158 expect(obj.angle).toBe(0);159 done();160 });161 });162 it('should work redo command correctly', (done) => {163 invoker.undo().then(() => {164 invoker.redo().then(() => {165 expect(obj.width).toBe(30);166 expect(obj.height).toBe(30);167 expect(obj.left).toBe(30);168 expect(obj.top).toBe(30);169 expect(obj.scaleX).toBe(0.5);170 expect(obj.scaleY).toBe(0.5);171 expect(obj.angle).toBe(10);172 done();173 });174 });175 });176 });177 describe('loadImageCommand', () => {178 const imageURL = 'base/tests/fixtures/sampleImage.jpg';179 beforeEach(() => {180 graphics.setCanvasImage('', null);181 });182 it('should clear canvas', () => {183 spyOn(canvas, 'clear');184 invoker.execute(commands.LOAD_IMAGE, graphics, 'image', imageURL);185 expect(canvas.clear).toHaveBeenCalled();186 });187 it('should load new image', (done) => {188 invoker.execute(commands.LOAD_IMAGE, graphics, 'image', imageURL).then((sizeChange) => {189 expect(graphics.getImageName()).toEqual('image');190 expect(graphics.getCanvasImage().getSrc()).toContain(imageURL);191 expect(sizeChange.oldWidth).toEqual(jasmine.any(Number));192 expect(sizeChange.oldHeight).toEqual(jasmine.any(Number));193 expect(sizeChange.newWidth).toEqual(jasmine.any(Number));194 expect(sizeChange.newHeight).toEqual(jasmine.any(Number));195 done();196 });197 });198 it('After running the LOAD_IMAGE command, existing objects should not include cropzone.', (done) => {199 const objCropzone = new fabric.Object({ type: 'cropzone' });200 invoker.execute(commands.ADD_OBJECT, graphics, objCropzone).then(() => {201 invoker.execute(commands.LOAD_IMAGE, graphics, 'image', imageURL).then(() => {202 const lastUndoIndex = invoker._undoStack.length - 1;203 const savedObjects = invoker._undoStack[lastUndoIndex].undoData.objects;204 expect(savedObjects.length).toBe(0);205 done();206 });207 });208 });209 it('`evented` attribute of the saved object must be true after LOAD_IMAGE.', (done) => {210 const objCircle = new fabric.Object({211 type: 'circle',212 evented: false,213 });214 invoker.execute(commands.ADD_OBJECT, graphics, objCircle).then(() => {215 invoker.execute(commands.LOAD_IMAGE, graphics, 'image', imageURL).then(() => {216 const lastUndoIndex = invoker._undoStack.length - 1;217 const [savedObject] = invoker._undoStack[lastUndoIndex].undoData.objects;218 expect(savedObject.evented).toBe(true);219 done();220 });221 });222 });223 it('"undo()" should clear image if not exists prev image', (done) => {224 invoker225 .execute(commands.LOAD_IMAGE, graphics, 'image', imageURL)226 .then(() => invoker.undo())227 .then(() => {228 expect(graphics.getCanvasImage()).toBe(null);229 expect(graphics.getImageName()).toBe('');230 done();231 });232 });233 it('"undo()" should restore to prev image', (done) => {234 const newImageURL = 'base/tests/fixtures/TOAST%20UI%20Component.png';235 invoker236 .execute(commands.LOAD_IMAGE, graphics, 'image', imageURL)237 .then(() => invoker.execute(commands.LOAD_IMAGE, graphics, 'newImage', newImageURL))238 .then(() => {239 expect(graphics.getImageName()).toBe('newImage');240 expect(graphics.getCanvasImage().getSrc()).toContain(newImageURL);241 return invoker.undo();242 })243 .then(() => {244 expect(graphics.getImageName()).toEqual('image');245 expect(graphics.getCanvasImage().getSrc()).toContain(imageURL);246 done();247 });248 });249 });250 describe('flipImageCommand', () => {251 it('flipX', () => {252 const originFlipX = mockImage.flipX;253 invoker.execute(commands.FLIP_IMAGE, graphics, 'flipX');254 expect(mockImage.flipX).toBe(!originFlipX);255 });256 it('flipY', () => {257 const originFlipY = mockImage.flipY;258 invoker.execute(commands.FLIP_IMAGE, graphics, 'flipY');259 expect(mockImage.flipY).toBe(!originFlipY);260 });261 it('resetFlip', () => {262 mockImage.flipX = true;263 mockImage.flipY = true;264 invoker.execute(commands.FLIP_IMAGE, graphics, 'reset');265 expect(mockImage.flipX).toBe(false);266 expect(mockImage.flipY).toBe(false);267 });268 it('"undo()" should restore flipX', (done) => {269 const originFlipX = mockImage.flipX;270 invoker271 .execute(commands.FLIP_IMAGE, graphics, 'flipX')272 .then(() => invoker.undo())273 .then(() => {274 expect(mockImage.flipX).toBe(originFlipX);275 done();276 });277 });278 it('"undo()" should restore filpY', (done) => {279 const originFlipY = mockImage.flipY;280 invoker281 .execute(commands.FLIP_IMAGE, graphics, 'flipY')282 .then(() => invoker.undo())283 .then(() => {284 expect(mockImage.flipY).toBe(originFlipY);285 done();286 });287 });288 });289 describe('textCommand', () => {290 let textObjectId;291 const defaultFontSize = 50;292 const defaultUnderline = false;293 beforeEach((done) => {294 invoker295 .execute(commands.ADD_TEXT, graphics, 'text', {296 styles: {297 fontSize: defaultFontSize,298 underline: false,299 },300 })301 .then((textObject) => {302 textObjectId = textObject.id;303 done();304 });305 });306 it('"changeTextStyle" should set text style', (done) => {307 invoker308 .execute(commands.CHANGE_TEXT_STYLE, graphics, textObjectId, {309 fontSize: 30,310 underline: true,311 })312 .then(() => {313 const textObject = graphics.getObject(textObjectId);314 expect(textObject.fontSize).toBe(30);315 expect(textObject.underline).toBe(true);316 done();317 });318 });319 it('"undo()" should restore fontSize', (done) => {320 invoker321 .execute(commands.CHANGE_TEXT_STYLE, graphics, textObjectId, {322 fontSize: 30,323 underline: true,324 })325 .then(() => invoker.undo())326 .then(() => {327 const textObject = graphics.getObject(textObjectId);328 expect(textObject.fontSize).toBe(defaultFontSize);329 expect(textObject.underline).toBe(defaultUnderline);330 done();331 });332 });333 });334 describe('rotationImageCommand', () => {335 it('"rotate()" should add angle', () => {336 const originAngle = mockImage.angle;337 invoker.execute(commands.ROTATE_IMAGE, graphics, 'rotate', 10);338 expect(mockImage.angle).toBe(originAngle + 10);339 });340 it('"setAngle()" should set angle', () => {341 mockImage.angle = 100;342 invoker.execute(commands.ROTATE_IMAGE, graphics, 'setAngle', 30);343 expect(mockImage.angle).toBe(30);344 });345 it('"undo()" should restore angle', (done) => {346 const originalAngle = mockImage.angle;347 invoker348 .execute(commands.ROTATE_IMAGE, graphics, 'setAngle', 100)349 .then(() => invoker.undo())350 .then(() => {351 expect(mockImage.angle).toBe(originalAngle);352 done();353 });354 });355 });356 describe('shapeCommand', () => {357 let shapeObjectId;358 const defaultStrokeWidth = 12;359 beforeEach((done) => {360 invoker361 .execute(commands.ADD_SHAPE, graphics, 'rect', {362 strokeWidth: defaultStrokeWidth,363 })364 .then((shapeObject) => {365 shapeObjectId = shapeObject.id;366 done();367 });368 });369 it('"changeShape" should set strokeWidth', (done) => {370 invoker371 .execute(commands.CHANGE_SHAPE, graphics, shapeObjectId, {372 strokeWidth: 50,373 })374 .then(() => {375 const shapeObject = graphics.getObject(shapeObjectId);376 expect(shapeObject.strokeWidth).toBe(50);377 done();378 });379 });380 it('"redo()" should restore strokeWidth', (done) => {381 invoker382 .execute(commands.CHANGE_SHAPE, graphics, shapeObjectId, {383 strokeWidth: 50,384 })385 .then(() => invoker.undo())386 .then(() => {387 const shapeObject = graphics.getObject(shapeObjectId);388 expect(shapeObject.strokeWidth).toBe(defaultStrokeWidth);389 done();390 });391 });392 });393 describe('clearCommand', () => {394 let canvasContext;395 beforeEach(() => {396 canvasContext = canvas;397 });398 it('should clear all objects', () => {399 const objects = [new fabric.Rect(), new fabric.Rect(), new fabric.Rect()];400 canvas.add.apply(canvasContext, objects);401 expect(canvas.contains(objects[0])).toBe(true);402 expect(canvas.contains(objects[1])).toBe(true);403 expect(canvas.contains(objects[2])).toBe(true);404 invoker.execute(commands.CLEAR_OBJECTS, graphics);405 expect(canvas.contains(objects[0])).toBe(false);406 expect(canvas.contains(objects[1])).toBe(false);407 expect(canvas.contains(objects[2])).toBe(false);408 });409 it('"undo()" restore all objects', (done) => {410 const objects = [new fabric.Rect(), new fabric.Rect(), new fabric.Rect()];411 canvas.add.apply(canvasContext, objects);412 invoker413 .execute(commands.CLEAR_OBJECTS, graphics)414 .then(() => invoker.undo())415 .then(() => {416 expect(canvas.contains(objects[0])).toBe(true);417 expect(canvas.contains(objects[1])).toBe(true);418 expect(canvas.contains(objects[2])).toBe(true);419 done();420 });421 });422 });423 describe('removeCommand', () => {424 let object, object2, group;425 beforeEach(() => {426 object = new fabric.Rect({427 left: 10,428 top: 10,429 });430 object2 = new fabric.Rect({431 left: 5,432 top: 20,433 });434 group = new fabric.Group();435 graphics.add(object);436 graphics.add(object2);437 graphics.add(group);438 group.add(object, object2);439 });440 it('should remove an object', () => {441 graphics.setActiveObject(object);442 invoker.execute(commands.REMOVE_OBJECT, graphics, snippet.stamp(object));443 expect(canvas.contains(object)).toBe(false);444 });445 it('should remove objects group', () => {446 canvas.setActiveObject(group);447 invoker.execute(commands.REMOVE_OBJECT, graphics, snippet.stamp(group));448 expect(canvas.contains(object)).toBe(false);449 expect(canvas.contains(object2)).toBe(false);450 });451 it('"undo()" should restore the removed object', (done) => {452 canvas.setActiveObject(object);453 invoker454 .execute(commands.REMOVE_OBJECT, graphics, snippet.stamp(object))455 .then(() => invoker.undo())456 .then(() => {457 expect(canvas.contains(object)).toBe(true);458 done();459 });460 });461 it('"undo()" should restore the removed objects (group)', (done) => {462 canvas.setActiveObject(group);463 invoker464 .execute(commands.REMOVE_OBJECT, graphics, snippet.stamp(group))465 .then(() => invoker.undo())466 .then(() => {467 expect(canvas.contains(object)).toBe(true);468 expect(canvas.contains(object2)).toBe(true);469 done();470 });471 });472 it('"undo ()" should restore the position of the removed object (group). ', (done) => {473 const activeSelection = graphics.getActiveSelectionFromObjects(canvas.getObjects());474 graphics.setActiveObject(activeSelection);475 invoker476 .execute(commands.REMOVE_OBJECT, graphics, graphics.getActiveObjectIdForRemove())477 .then(() => invoker.undo())478 .then(() => {479 expect(object.left).toBe(10);480 expect(object.top).toBe(10);481 expect(object2.left).toBe(5);482 expect(object2.top).toBe(20);483 done();484 });485 });486 });487 describe('resizeCommand', () => {488 it('resize', () => {489 const newDimensions = {490 width: 20,491 height: 20,492 };493 invoker.execute(commands.RESIZE_IMAGE, graphics, newDimensions);494 const { width, height, scaleX, scaleY } = mockImage;495 expect({496 width: width * scaleX,497 height: height * scaleY,498 }).toEqual(newDimensions);499 });500 it('"undo()" should restore dimensions of image', (done) => {501 const newDimensions = {502 width: 20,503 height: 20,504 };505 invoker506 .execute(commands.RESIZE_IMAGE, graphics, newDimensions)507 .then(() => invoker.undo())508 .then(() => {509 const { width, height, scaleX, scaleY } = mockImage;510 expect({511 width: width * scaleX,512 height: height * scaleY,513 }).toEqual(dimensions);514 done();515 });516 });517 });...
command-invoker.test.js
Source:command-invoker.test.js
1'use strict';2const CommandInvoker = require('../command-invoker');3const sandbox = require('sinon').createSandbox();4describe('CommandInvoker', () => {5 let invoker;6 beforeEach(() => {7 invoker = new CommandInvoker();8 });9 afterEach(() => {10 sandbox.reset();11 sandbox.restore();12 });13 it('should create a proper command and pass entity, arg & flags', async function () {14 const HelpCommand = require('../commands/help-command');15 const stub = sandbox.stub(HelpCommand.prototype, 'execute');16 invoker.entity = 'app';17 invoker.command = 'help';18 await invoker.executeCommand();19 expect(stub).to.have.been.calledOnce;20 });21 it('should execute help command if user doesn\'t provide any argument', async function () {22 const HelpCommand = require('../commands/help-command');23 const stub = sandbox.stub(HelpCommand.prototype, 'execute');24 await invoker.parse(['', 'mdb']);25 await invoker.executeCommand();26 expect(stub).to.have.been.calledOnce;27 });28 it('should throw error if flag contain `=` instead of space', function () {29 try {30 invoker.parse(['', 'mdb', 'login', '--method=google']);31 } catch (e) {32 return expect(e.message).to.be.eq('Please use space instead of `=` on flags');33 }34 chai.assert.fail('_isFlag function should throw error if flag contain `=`');35 });36 describe('should properly parse entity, command, arg and flags', function () {37 it('mdb help', function () {38 invoker.parse(['', 'mdb', 'help']);39 expect(invoker.entity).to.eq('app');40 expect(invoker.command).to.eq('help');41 expect(invoker.args).to.deep.eq([]);42 expect(invoker.flags).to.deep.eq([]);43 });44 it('mdb version', function () {45 invoker.parse(['', 'mdb', 'version']);46 expect(invoker.entity).to.eq('app');47 expect(invoker.command).to.eq('version');48 expect(invoker.args).to.deep.eq([]);49 expect(invoker.flags).to.deep.eq([]);50 });51 it('mdb -v', function () {52 invoker.parse(['', 'mdb', '-v']);53 expect(invoker.entity).to.eq('app');54 expect(invoker.command).to.eq('version');55 expect(invoker.args).to.deep.eq([]);56 expect(invoker.flags).to.deep.eq([]);57 });58 it('mdb --version', function () {59 invoker.parse(['', 'mdb', '--version']);60 expect(invoker.entity).to.eq('app');61 expect(invoker.command).to.eq('version');62 expect(invoker.args).to.deep.eq([]);63 expect(invoker.flags).to.deep.eq([]);64 });65 it('mdb update', function () {66 invoker.parse(['', 'mdb', 'update']);67 expect(invoker.entity).to.eq('app');68 expect(invoker.command).to.eq('update');69 expect(invoker.args).to.deep.eq([]);70 expect(invoker.flags).to.deep.eq([]);71 });72 it('mdb register', function () {73 invoker.parse(['', 'mdb', 'register']);74 expect(invoker.entity).to.eq('user');75 expect(invoker.command).to.eq('register');76 expect(invoker.args).to.deep.eq([]);77 expect(invoker.flags).to.deep.eq([]);78 });79 it('mdb login', function () {80 invoker.parse(['', 'mdb', 'login']);81 expect(invoker.entity).to.eq('user');82 expect(invoker.command).to.eq('login');83 expect(invoker.args).to.deep.eq([]);84 expect(invoker.flags).to.deep.eq([]);85 });86 it('mdb logout', function () {87 invoker.parse(['', 'mdb', 'logout']);88 expect(invoker.entity).to.eq('user');89 expect(invoker.command).to.eq('logout');90 expect(invoker.args).to.deep.eq([]);91 expect(invoker.flags).to.deep.eq([]);92 });93 it('mdb starters', function () {94 invoker.parse(['', 'mdb', 'starters']);95 expect(invoker.entity).to.eq('starter');96 expect(invoker.command).to.eq('ls');97 expect(invoker.args).to.deep.eq([]);98 expect(invoker.flags).to.deep.eq([]);99 });100 it('mdb starter ls', function () {101 invoker.parse(['', 'mdb', 'starter', 'ls']);102 expect(invoker.entity).to.eq('starter');103 expect(invoker.command).to.eq('ls');104 expect(invoker.args).to.deep.eq([]);105 expect(invoker.flags).to.deep.eq([]);106 });107 it('mdb starter init', function () {108 invoker.parse(['', 'mdb', 'starter', 'init']);109 expect(invoker.entity).to.eq('starter');110 expect(invoker.command).to.eq('init');111 expect(invoker.args).to.deep.eq([]);112 expect(invoker.flags).to.deep.eq([]);113 });114 it('mdb backend init', function () {115 invoker.parse(['', 'mdb', 'backend', 'init']);116 expect(invoker.entity).to.eq('backend');117 expect(invoker.command).to.eq('init');118 expect(invoker.args).to.deep.eq([]);119 expect(invoker.flags).to.deep.eq([]);120 });121 it('mdb frontend init', function () {122 invoker.parse(['', 'mdb', 'frontend', 'init']);123 expect(invoker.entity).to.eq('frontend');124 expect(invoker.command).to.eq('init');125 expect(invoker.args).to.deep.eq([]);126 expect(invoker.flags).to.deep.eq([]);127 });128 it('mdb blank init', function () {129 invoker.parse(['', 'mdb', 'blank', 'init']);130 expect(invoker.entity).to.eq('blank');131 expect(invoker.command).to.eq('init');132 expect(invoker.args).to.deep.eq([]);133 expect(invoker.flags).to.deep.eq([]);134 });135 it('mdb repo init', function () {136 invoker.parse(['', 'mdb', 'repo', 'init']);137 expect(invoker.entity).to.eq('repo');138 expect(invoker.command).to.eq('init');139 expect(invoker.args).to.deep.eq([]);140 expect(invoker.flags).to.deep.eq([]);141 });142 it('mdb config domain newname', function () {143 invoker.parse(['', 'mdb', 'config', 'domain', 'newname']);144 expect(invoker.entity).to.eq('config');145 expect(invoker.command).to.eq('config');146 expect(invoker.args).to.deep.eq(['domain', 'newname']);147 expect(invoker.flags).to.deep.eq([]);148 });149 it('mdb config domain --unset', function () {150 invoker.parse(['', 'mdb', 'config', 'domain', '--unset']);151 expect(invoker.entity).to.eq('config');152 expect(invoker.command).to.eq('config');153 expect(invoker.args).to.deep.eq(['domain']);154 expect(invoker.flags).to.deep.eq(['--unset']);155 });156 it('mdb publish', function () {157 invoker.parse(['', 'mdb', 'publish']);158 expect(invoker.entity).to.eq('');159 expect(invoker.command).to.eq('publish');160 expect(invoker.args).to.deep.eq([]);161 expect(invoker.flags).to.deep.eq([]);162 });163 it('mdb publish -t --ftp', function () {164 invoker.parse(['', 'mdb', 'publish', '-t', '--ftp']);165 expect(invoker.entity).to.eq('');166 expect(invoker.command).to.eq('publish');167 expect(invoker.args).to.deep.eq([]);168 expect(invoker.flags).to.deep.eq(['-t', '--ftp']);169 });170 it('mdb frontend publish', function () {171 invoker.parse(['', 'mdb', 'frontend', 'publish']);172 expect(invoker.entity).to.eq('frontend');173 expect(invoker.command).to.eq('publish');174 expect(invoker.args).to.deep.eq([]);175 expect(invoker.flags).to.deep.eq([]);176 });177 it('mdb backend publish', function () {178 invoker.parse(['', 'mdb', 'backend', 'publish']);179 expect(invoker.entity).to.eq('backend');180 expect(invoker.command).to.eq('publish');181 expect(invoker.args).to.deep.eq([]);182 expect(invoker.flags).to.deep.eq([]);183 });184 it('mdb frontend publish -t --ftp', function () {185 invoker.parse(['', 'mdb', 'frontend', 'publish', '-t', '--ftp']);186 expect(invoker.entity).to.eq('frontend');187 expect(invoker.command).to.eq('publish');188 expect(invoker.args).to.deep.eq([]);189 expect(invoker.flags).to.deep.eq(['-t', '--ftp']);190 });191 it('mdb delete', function () {192 invoker.parse(['', 'mdb', 'delete']);193 expect(invoker.entity).to.eq('');194 expect(invoker.command).to.eq('delete');195 expect(invoker.args).to.deep.eq([]);196 expect(invoker.flags).to.deep.eq([]);197 });198 it('mdb frontend delete', function () {199 invoker.parse(['', 'mdb', 'frontend', 'delete']);200 expect(invoker.entity).to.eq('frontend');201 expect(invoker.command).to.eq('delete');202 expect(invoker.args).to.deep.eq([]);203 expect(invoker.flags).to.deep.eq([]);204 });205 it('mdb backend delete', function () {206 invoker.parse(['', 'mdb', 'backend', 'delete']);207 expect(invoker.entity).to.eq('backend');208 expect(invoker.command).to.eq('delete');209 expect(invoker.args).to.deep.eq([]);210 expect(invoker.flags).to.deep.eq([]);211 });212 it('mdb ls', function () {213 invoker.parse(['', 'mdb', 'ls']);214 expect(invoker.entity).to.eq('');215 expect(invoker.command).to.eq('ls');216 expect(invoker.args).to.deep.eq([]);217 expect(invoker.flags).to.deep.eq([]);218 });219 it('mdb frontend ls', function () {220 invoker.parse(['', 'mdb', 'frontend', 'ls']);221 expect(invoker.entity).to.eq('frontend');222 expect(invoker.command).to.eq('ls');223 expect(invoker.args).to.deep.eq([]);224 expect(invoker.flags).to.deep.eq([]);225 });226 it('mdb backend ls', function () {227 invoker.parse(['', 'mdb', 'backend', 'ls']);228 expect(invoker.entity).to.eq('backend');229 expect(invoker.command).to.eq('ls');230 expect(invoker.args).to.deep.eq([]);231 expect(invoker.flags).to.deep.eq([]);232 });233 it('mdb database ls', function () {234 invoker.parse(['', 'mdb', 'database', 'ls']);235 expect(invoker.entity).to.eq('database');236 expect(invoker.command).to.eq('ls');237 expect(invoker.args).to.deep.eq([]);238 expect(invoker.flags).to.deep.eq([]);239 });240 it('mdb get', function () {241 invoker.parse(['', 'mdb', 'get']);242 expect(invoker.entity).to.eq('');243 expect(invoker.command).to.eq('get');244 expect(invoker.args).to.deep.eq([]);245 expect(invoker.flags).to.deep.eq([]);246 });247 it('mdb orders', function () {248 invoker.parse(['', 'mdb', 'orders']);249 expect(invoker.entity).to.eq('order');250 expect(invoker.command).to.eq('ls');251 expect(invoker.args).to.deep.eq([]);252 expect(invoker.flags).to.deep.eq([]);253 });254 it('mdb order ls', function () {255 invoker.parse(['', 'mdb', 'order', 'ls']);256 expect(invoker.entity).to.eq('order');257 expect(invoker.command).to.eq('ls');258 expect(invoker.args).to.deep.eq([]);259 expect(invoker.flags).to.deep.eq([]);260 });261 it('mdb database info', function () {262 invoker.parse(['', 'mdb', 'database', 'info']);263 expect(invoker.entity).to.eq('database');264 expect(invoker.command).to.eq('info');265 expect(invoker.args).to.deep.eq([]);266 expect(invoker.flags).to.deep.eq([]);267 });268 it('mdb database delete', function () {269 invoker.parse(['', 'mdb', 'database', 'delete']);270 expect(invoker.entity).to.eq('database');271 expect(invoker.command).to.eq('delete');272 expect(invoker.args).to.deep.eq([]);273 expect(invoker.flags).to.deep.eq([]);274 });275 it('mdb backend kill', function () {276 invoker.parse(['', 'mdb', 'backend', 'kill']);277 expect(invoker.entity).to.eq('backend');278 expect(invoker.command).to.eq('kill');279 expect(invoker.args).to.deep.eq([]);280 expect(invoker.flags).to.deep.eq([]);281 });282 it('mdb backend destroy', function () {283 invoker.parse(['', 'mdb', 'backend', 'destroy']);284 expect(invoker.entity).to.eq('backend');285 expect(invoker.command).to.eq('destroy');286 expect(invoker.args).to.deep.eq([]);287 expect(invoker.flags).to.deep.eq([]);288 });289 it('mdb backend info', function () {290 invoker.parse(['', 'mdb', 'backend', 'info']);291 expect(invoker.entity).to.eq('backend');292 expect(invoker.command).to.eq('info');293 expect(invoker.args).to.deep.eq([]);294 expect(invoker.flags).to.deep.eq([]);295 });296 it('mdb backend logs', function () {297 invoker.parse(['', 'mdb', 'backend', 'logs']);298 expect(invoker.entity).to.eq('backend');299 expect(invoker.command).to.eq('logs');300 expect(invoker.args).to.deep.eq([]);301 expect(invoker.flags).to.deep.eq([]);302 });303 it('mdb rename', function () {304 invoker.parse(['', 'mdb', 'rename']);305 expect(invoker.entity).to.eq('');306 expect(invoker.command).to.eq('rename');307 expect(invoker.args).to.deep.eq([]);308 expect(invoker.flags).to.deep.eq([]);309 });310 it('mdb rename newname', function () {311 invoker.parse(['', 'mdb', 'rename', 'newname']);312 expect(invoker.entity).to.eq('');313 expect(invoker.command).to.eq('rename');314 expect(invoker.args).to.deep.eq(['newname']);315 expect(invoker.flags).to.deep.eq([]);316 });317 });...
propertyValue.js
Source:propertyValue.js
...9 var val = {}, name = {};10 subject._super = methods.method();11 12 // act13 invoker(name, val, "i");14 15 // assert16 strictEqual(subject.parser("234"), 234);17});18testUtils.testWithUtils("value", "has cached", false, function(methods, classes, subject, invoker) {19 // arrange20 // act21 // assert22 strictEqual(subject._cachedValue = {}, invoker());23});24testUtils.testWithUtils("value", "no cached", false, function(methods, classes, subject, invoker) {25 // arrange26 subject.getValue = function () {27 return "XYZ";28 };29 30 // act31 // assert32 strictEqual("XYZ", invoker());33 strictEqual(subject._cachedValue, "XYZ");34});35testUtils.testWithUtils("value", "raw, has cached", false, function(methods, classes, subject, invoker) {36 // arrange37 // act38 // assert39 strictEqual(subject._unAlteredCachedValue = {}, invoker(true));40});41testUtils.testWithUtils("value", "raw, no cached", false, function(methods, classes, subject, invoker) {42 // arrange43 subject.getValue = function () {44 return "XYZ";45 };46 47 // act48 // assert49 strictEqual("XYZ", invoker(true));50 strictEqual(subject._unAlteredCachedValue, "XYZ");51});52testUtils.testWithUtils("getValue", null, false, function(methods, classes, subject, invoker) {53 // arrange54 // act55 // assert56 strictEqual(subject._value = {}, invoker());57});58testUtils.testWithUtils("getBindingStrategyOptions", "has strategy 0", false, function(methods, classes, subject, invoker) {59 // arrange60 subject.primed = methods.method();61 subject.renderContext = {62 $this: {63 $bindingStrategy: 064 }65 };66 67 // act68 // assert69 strictEqual(undefined, invoker());70});71testUtils.testWithUtils("getBindingStrategyOptions", "has strategy 1", false, function(methods, classes, subject, invoker) {72 // arrange73 subject.primed = methods.method();74 subject.renderContext = {75 $this: {76 $bindingStrategy: 177 }78 };79 80 // act81 // assert82 ok(invoker().trackPartialObservable);83 ok(!invoker().forceObserve);84});85testUtils.testWithUtils("getBindingStrategyOptions", "has strategy 2", false, function(methods, classes, subject, invoker) {86 // arrange87 subject.primed = methods.method();88 subject.renderContext = {89 $this: {90 $bindingStrategy: 291 }92 };93 94 // act95 // assert96 ok(!invoker().trackPartialObservable);97 ok(invoker().forceObserve);98});99testUtils.testWithUtils("getBindingStrategyOptions", "no strategy", false, function(methods, classes, subject, invoker) {100 // arrange101 subject.primed = methods.method();102 subject.renderContext = {$this: {}};103 var result1 = invoker();104 subject.renderContext.$this.$bindingStrategy = wipeout.settings.bindingStrategy;105 106 // act107 // assert108 ok(wipeout.settings.hasOwnProperty("bindingStrategy"));109 deepEqual(result1, invoker());110});111testUtils.testWithUtils("buildGetter", "has getter", false, function(methods, classes, subject, invoker) {112 // arrange113 // act114 // assert115 strictEqual(subject._getter = {}, invoker());116});117testUtils.testWithUtils("buildGetter", "no filter", false, function(methods, classes, subject, invoker) {118 // arrange119 subject.value = methods.method([], "'hello shane'");120 121 // act122 strictEqual(invoker(), subject._getter);123 124 // assert125 strictEqual(subject._getter(), "hello shane");126});127testUtils.testWithUtils("buildGetter", "invalid filter", false, function(methods, classes, subject, invoker) {128 // arrange129 subject.value = methods.method([], "'hello shane' => invalid-filter");130 131 // assert132 // act133 throws(function () {134 invoker();135 });136});137testUtils.testWithUtils("buildGetter", "good filter, no to child part", false, function(methods, classes, subject, invoker) {138 // arrange139 wo.filters["good-filter"] = {};140 subject.value = methods.method([], "'hello shane', 'another hello' => good-filter");141 142 // assert143 // act144 strictEqual(invoker()(), "hello shane");145 146 delete wo.filters["good-filter"];147});148testUtils.testWithUtils("buildGetter", "good filter, with to child part", false, function(methods, classes, subject, invoker) {149 // arrange150 var op = {};151 wo.filters["good-filter"] = {152 downward: methods.method(['hello shane', 'another hello'], op)153 };154 subject.value = methods.method([], "'hello shane', 'another hello' => good-filter");155 156 // assert157 // act158 strictEqual(invoker()(), op);159 160 delete wo.filters["good-filter"];161});162testUtils.testWithUtils("getter", "no parser", false, function(methods, classes, subject, invoker) {163 // arrange164 var op = {}, getterArgs = {};165 subject.getParser = function () {};166 subject.primed = methods.method();167 subject.buildGetter = methods.method([], {168 apply: methods.method([null, getterArgs], op)169 });170 subject.renderContext = {171 asGetterArgs: methods.method([], getterArgs)172 };173 174 // act175 // assert176 strictEqual(op, invoker()());177});178testUtils.testWithUtils("getter", "with parser", false, function(methods, classes, subject, invoker) {179 // arrange180 var op = {}, val = {};181 subject.name = {};182 subject.value = methods.method([true], val);183 subject.primed = methods.method();184 subject.renderContext = {};185 var parser = methods.method([val, subject.name, subject.renderContext], op);186 subject.getParser = methods.method([], parser);187 188 // act189 // assert190 strictEqual(op, invoker()());191});192testUtils.testWithUtils("getter", "xml parser", false, function(methods, classes, subject, invoker) {193 // arrange194 var op = {}, val = {};195 subject.renderContext = {};196 subject.name = {};197 subject._value = val;198 subject.primed = methods.method();199 var parser = methods.method([val, subject.name, subject.renderContext], op);200 parser.useRawXmlValue = true;201 subject.getParser = methods.method([], parser);202 203 // act204 // assert205 strictEqual(op, invoker()());206});207testUtils.testWithUtils("canSet", "", false, function(methods, classes, subject, invoker) {208 // arrange209 var po = {};210 subject.getParser = methods.method([po], false);211 subject.buildSetter = methods.method([po], true);212 213 // act214 // assert215 ok(invoker(po));216});217testUtils.testWithUtils("getParser", "primed, has parser", false, function(methods, classes, subject, invoker) {218 // arrange219 var po = subject.propertyOwner = {};220 subject.primed = methods.method();221 subject.parser = {}222 223 // act224 // assert225 strictEqual(subject.parser, invoker());226});227testUtils.testWithUtils("getParser", "primed, has global parser", false, function(methods, classes, subject, invoker) {228 // arrange229 subject.primed = methods.method();230 subject.propertyOwner = new (wipeout.base.bindable.extend(function () {this._super();}))();231 subject.propertyOwner.constructor.addGlobalParser("aaa", "s");232 subject.name = "aaa";233 234 // act235 // assert236 strictEqual(wo.parsers.s , invoker());237});238testUtils.testWithUtils("buildSetter", "has setter", false, function(methods, classes, subject, invoker) {239 // arrange240 // act241 // assert242 strictEqual(subject._setter = {}, invoker());243});244testUtils.testWithUtils("buildSetter", "no filter", false, function(methods, classes, subject, invoker) {245 // arrange246 var ctxt = {asGetterArgs: function() { return [this]; }};247 subject.value = methods.method([], "$context.val");248 249 // act250 strictEqual(invoker(), subject._setter);251 subject._setter(ctxt, "hello shane");252 253 // assert254 strictEqual(ctxt.val, "hello shane");255});256testUtils.testWithUtils("buildSetter", "invalid filter", false, function(methods, classes, subject, invoker) {257 // arrange258 subject.value = methods.method([], "$context.val => invalid-filter");259 260 // assert261 // act262 throws(function () {263 invoker();264 });265});266testUtils.testWithUtils("buildSetter", "good filter, no to child part", false, function(methods, classes, subject, invoker) {267 // arrange268 var ctxt = {asGetterArgs: function() { return [this]; }}, val = {};269 wo.filters["good-filter"] = {};270 subject.value = methods.method([], "$context.val, 'another hello' => good-filter");271 272 // act273 ok(invoker()(ctxt, val))274 275 // assert276 strictEqual(ctxt.val, val);277 278 delete wo.filters["good-filter"];279});280testUtils.testWithUtils("buildSetter", "good filter, with to child part", false, function(methods, classes, subject, invoker) {281 // arrange282 var ctxt = {asGetterArgs: function() { return [this, null, null, null, null]; }}, input = {}, output = {};283 wo.filters["good-filter"] = {284 upward: methods.method([input, 'another hello'], output)285 };286 subject.value = methods.method([], "$context.val, 'another hello' => good-filter");287 288 // act289 ok(invoker()(ctxt, input));290 291 // assert292 strictEqual(ctxt.val, output);293 294 delete wo.filters["good-filter"];295});296testUtils.testWithUtils("buildSetter", "cannot set", false, function(methods, classes, subject, invoker) {297 // arrange298 subject.value = methods.method([], "$context");299 300 // act301 ok(!invoker());302 303 // assert304 strictEqual(subject._setter, null);305});306testUtils.testWithUtils("setter", "cannot set", false, function(methods, classes, subject, invoker) {307 // arrange308 var op = {};309 subject.canSet = methods.method([op], false);310 subject.value = methods.method();311 312 // act313 // assert314 throws(function () {315 invoker()(null);316 });317});318testUtils.testWithUtils("setter", "", false, function(methods, classes, subject, invoker) {319 // arrange320 var po = {}, val = {}, op = {};321 subject.renderContext = {};322 subject.canSet = methods.method([], true);323 subject.buildSetter = methods.method([], methods.method([subject.renderContext, val]));324 325 // act326 // assert327 invoker()(val);328});329testUtils.testWithUtils("watch", "not caching. Other logic tested in integration tests", false, function(methods, classes, subject, invoker) {330 // arrange331 // act332 // assert333 throws(function () {334 invoker();335 });336});337testUtils.testWithUtils("prime", "already caching", false, function(methods, classes, subject, invoker) {338 // arrange339 subject._caching = true;340 341 // act342 // assert343 throws(function () {344 invoker();345 });346});347testUtils.testWithUtils("prime", "not caching", false, function(methods, classes, subject, invoker) {348 // arrange 349 var tmp;350 351 // act352 var output = invoker({}, {}, function () {353 tmp = subject._caching354 });355 356 // assert357 ok(tmp instanceof Array);358 ok(!subject._caching);359});360testUtils.testWithUtils("replace$model", "no $model, with strings and comments", true, function(methods, classes, subject, invoker) {361 // arrange362 var input1 = "//$model\n/*$model*/", input2 = "'$model'\n\"$model\"";363 364 // act365 var output = invoker(input1 + input2);366 367 // assert368 strictEqual("\n" + input2, output);369});370testUtils.testWithUtils("replace$model", "var $model", true, function(methods, classes, subject, invoker) {371 // arrange372 // act373 // assert374 throws(function () {375 invoker("var $model;");376 });377 throws(function () {378 invoker(" var $model;");379 });380});381testUtils.testWithUtils("replace$model", "$model", true, function (methods, classes, subject, invoker) {382 // arrange383 var input = "$model"384 385 // act386 var output = invoker(input);387 388 // assert389 strictEqual("$this.model", output);390});391testUtils.testWithUtils("replace$model", ", $model", true, function (methods, classes, subject, invoker) {392 // arrange393 var input = ", $model"394 395 // act396 var output = invoker(input);397 398 // assert399 strictEqual(", $this.model", output);400});401testUtils.testWithUtils("replace$model", "x$model", true, function (methods, classes, subject, invoker) {402 // arrange403 var input = "x$model"404 405 // act406 var output = invoker(input);407 408 // assert409 strictEqual(input, output);410});411testUtils.testWithUtils("replace$model", "x.$model", true, function (methods, classes, subject, invoker) {412 // arrange413 var input = "x.$model"414 415 // act416 var output = invoker(input);417 418 // assert419 strictEqual(input, output);420});421testUtils.testWithUtils("replace$model", "$modelx", true, function (methods, classes, subject, invoker) {422 // arrange423 var input = "$modelx"424 425 // act426 var output = invoker(input);427 428 // assert429 strictEqual(input, output);430});431testUtils.testWithUtils("replace$model", "{$model: 33}", true, function (methods, classes, subject, invoker) {432 // arrange433 var input = "{$model: 33}"434 435 // act436 var output = invoker(input);437 438 // assert439 strictEqual(input, output);440});441testUtils.testWithUtils("replace$model", "{$model : 33}", true, function (methods, classes, subject, invoker) {442 // arrange443 var input = "{$model : 33}"444 445 // act446 var output = invoker(input);447 448 // assert449 strictEqual(input, output);...
jquery-polyglot.language.switcher.js
Source:jquery-polyglot.language.switcher.js
1/*! @license Polyglot Language Switcher 2 - v1.0.0 - 2015-02-202 * https://github.com/ixtendo/Polyglot-Language-Switcher-2/3 *4 * Copyright (c) 2015 Ixtendo;5 * Licensed under the MIT license */6 (function ($) {7 var getOptions = function (invoker, options) {8 var $invoker = $(invoker);9 if (!options) {10 options = {};11 }12 $.each($.fn.polyglotLanguageSwitcher.defaults, function (prop) {13 var propData = $invoker.data(prop);14 if (propData) {15 options[prop] = propData;16 }17 });18 return options;19 };20 $.fn.polyglotLanguageSwitcher = function (options) {21 var getSetting = function (settings, setting) {22 return $.isFunction(settings[setting]) ? settings[setting].call(settings) : settings[setting];23 };24 var triggerEvent = function (evt, settings) {25 var invoker = settings._model.invoker;26 var $invoker = $(invoker);27 switch (evt.type) {28 case 'opening':29 settings._model.status = 'opening';30 $invoker.trigger($.Event('popupOpening', {target: evt.target, invoker: invoker}));31 break;32 case 'opened':33 settings._model.status = 'opened';34 var $popup = $(evt.target);35 if (!settings._model.documentClickHandler) {36 settings._model.documentClickHandler = $(document).on('click', function (e) {37 if ($(e.target).closest($popup).length === 0) {38 closePopup($popup, settings);39 }40 });41 }42 if (!settings._model.documentKeyHandler) {43 settings._model.documentKeyHandler = $(document).on('keydown', function (e) {44 if (e.keyCode === 27) {45 closePopup($popup, settings);46 }47 });48 }49 $invoker.trigger($.Event('popupOpened', {target: evt.target, invoker: invoker}));50 break;51 case 'closing':52 settings._model.status = 'closing';53 $invoker.trigger($.Event('popupClosing', {target: evt.target, invoker: invoker}));54 break;55 case 'closed':56 settings._model.status = 'closed';57 if (settings._model.documentClickHandler) {58 $(document).off('click', settings._model.documentClickHandler);59 settings._model.documentClickHandler = null;60 }61 if (settings._model.documentKeyHandler) {62 $(document).off('keydown', settings._model.documentKeyHandler);63 settings._model.documentKeyHandler = null;64 }65 $invoker.trigger($.Event('popupClosed', {target: evt.target, invoker: invoker}));66 break;67 }68 };69 var buildUI = function (settings) {70 var invoker = settings._model.invoker;71 var animEffect = settings.animEffect;72 var gridColumns = getSetting(settings, 'gridColumns');73 var selectedLang = getSetting(settings, 'selectedLang');74 var $popup = $('<div class="pls-language-container-scrollable"><table class="pls-language-container"><tbody><tr></tr></tbody></table></div>').hide();75 if (animEffect === 'slide') {76 $popup.slideUp(0);77 }78 var $popupTr = $popup.find('tr');79 var $languages = $(invoker).find('li');80 var langPerColumn = Math.round($languages.length / gridColumns);81 var $selectedLang;82 var columnLanguages = [];83 $languages.each(function (index) {84 var $li = $(this);85 var $a = $li.children('a');86 var lang = $a.data('langId');87 if (selectedLang === lang) {88 $selectedLang = $a.addClass('pls-selected-locale').clone();89 }90 columnLanguages.push($li);91 if (((index + 1) % langPerColumn) === 0) {92 $popupTr.append($('<td></td>').append($('<ul></ul>').append(columnLanguages)));93 columnLanguages = [];94 }95 });96 if (columnLanguages.length > 0) {97 $popupTr.append($('<td></td>').append($('<ul></ul>').append(columnLanguages)));98 columnLanguages = [];99 }100 if (!$selectedLang) {101 var $firstLi = $languages.first();102 $selectedLang = $firstLi.children('a').addClass('pls-selected-locale').clone();103 }104 $(invoker).empty().append($selectedLang).append($popup);105 };106 var openPopup = function ($popup, settings) {107 var animEffect = settings.animEffect;108 var animSpeed = settings.animSpeed;109 if (settings._model.status === 'closed') {110 triggerEvent({type: 'opening', target: $popup.get()}, settings);111 if (animEffect === 'fade') {112 $popup.fadeIn(animSpeed, function () {113 triggerEvent({type: 'opened', target: $popup.get()}, settings);114 });115 } else if (animEffect === 'slide') {116 $popup.slideDown(animSpeed, function () {117 triggerEvent({type: 'opened', target: $popup.get()}, settings);118 });119 }120 }121 };122 var closePopup = function ($popup, settings) {123 var animEffect = getSetting(settings, 'animEffect');124 var animSpeed = getSetting(settings, 'animSpeed');125 if (settings._model.status === 'opened') {126 triggerEvent({type: 'closing', target: $popup.get()}, settings);127 if (animEffect === 'fade') {128 $popup.fadeOut(animSpeed, function () {129 triggerEvent({type: 'closed', target: $popup.get()}, settings);130 });131 } else if (animEffect === 'slide') {132 $popup.slideUp(animSpeed, function () {133 triggerEvent({type: 'closed', target: $popup.get()}, settings);134 });135 }136 }137 };138 var addEventsListeners = function (settings) {139 var invoker = settings._model.invoker;140 var $popup = $(invoker).children('.pls-language-container-scrollable');141 var openMode = getSetting(settings, 'openMode');142 if (openMode === 'click') {143 $(invoker).children('a').on('click', function () {144 openPopup($popup, settings);145 return false;146 });147 } else if (openMode === 'hover') {148 var hoverTimeout = getSetting(settings, 'hoverTimeout');149 $(invoker).children('a').hover(function () {150 clearTimeout(settings._model.closePopupTimeout);151 settings._model.closePopupTimeout = -1;152 openPopup($popup, settings);153 }, function () {154 if (settings._model.closePopupTimeout < 0) {155 settings._model.closePopupTimeout = setTimeout(function () {156 closePopup($popup, settings);157 }, hoverTimeout);158 }159 });160 $popup.hover(function () {161 clearTimeout(settings._model.closePopupTimeout);162 settings._model.closePopupTimeout = -1;163 }, function () {164 if (settings._model.closePopupTimeout < 0) {165 settings._model.closePopupTimeout = setTimeout(function () {166 closePopup($popup, settings);167 }, hoverTimeout);168 }169 });170 } else {171 throw 'Open mode \'' + openMode + '\' not supported';172 }173 };174 return this.each(function () {175 var invoker = this;176 var settings = $.extend({177 _model: {178 invoker: invoker,179 status: 'closed',180 closePopupTimeout: -1,181 documentClickHandler: null,182 documentKeyHandler: null183 }184 }, $.fn.polyglotLanguageSwitcher.defaults, getOptions(this, options));185 buildUI(settings);186 addEventsListeners(settings);187 });188 };189 $.fn.polyglotLanguageSwitcher.defaults = {190 openMode: 'hover',191 hoverTimeout: 200,192 animSpeed: 200,193 animEffect: 'fade',194 gridColumns: 1,195 selectedLang: function () {196 return $('html').attr('lang');197 }198 }...
invoker.spec.js
Source:invoker.spec.js
1/**2 * @author NHN. FE Development Team <dl_javascript@nhn.com>3 * @fileoverview Test cases of "src/js/invoker.js"4 */5import Invoker from '@/invoker';6import Command from '@/interface/command';7import { Promise } from '@/util';8describe('Invoker', () => {9 let invoker, cmd;10 beforeEach(() => {11 invoker = new Invoker();12 cmd = new Command({13 execute: jasmine.createSpy().and.returnValue(Promise.resolve()),14 undo: jasmine.createSpy().and.returnValue(Promise.resolve()),15 });16 });17 it('"redo()" should call "command.execute" again', (done) => {18 invoker19 .execute(cmd)20 .then(() => invoker.undo())21 .then(() => {22 cmd.execute.calls.reset();23 return invoker.redo();24 })25 .then(() => {26 expect(cmd.execute).toHaveBeenCalled();27 done();28 });29 });30 it('should call the "command.executeCallback" after invoke', (done) => {31 const spyCallback = jasmine.createSpy();32 cmd.setExecuteCallback(spyCallback);33 invoker.execute(cmd).then(() => {34 expect(spyCallback).toHaveBeenCalled();35 done();36 });37 });38 it('should call the "command.undoCallback" after undo', (done) => {39 const spyCallback = jasmine.createSpy();40 cmd.setUndoCallback(spyCallback);41 invoker42 .execute(cmd)43 .then(() => invoker.undo())44 .then(() => {45 expect(spyCallback).toHaveBeenCalled();46 done();47 });48 });49 describe('invoker.customEvents', () => {50 let spyEvents;51 beforeEach(() => {52 spyEvents = {53 undoStackChanged: jasmine.createSpy(),54 redoStackChanged: jasmine.createSpy(),55 };56 });57 it(58 '"invoke()" should fire a event - ' + ' "pushUndoStack" (when redoStack is empty before)"',59 (done) => {60 invoker.on(spyEvents);61 invoker.execute(cmd).then(() => {62 expect(spyEvents.undoStackChanged).toHaveBeenCalledWith(1);63 expect(spyEvents.redoStackChanged).not.toHaveBeenCalled();64 done();65 });66 }67 );68 it(69 '"invoke()" should fire events - ' +70 ' "pushUndoStack", "clearRedoStack" (when redoStack is not empty before)',71 (done) => {72 invoker.pushRedoStack({});73 invoker.on(spyEvents);74 invoker.execute(cmd).then(() => {75 expect(spyEvents.undoStackChanged).toHaveBeenCalledWith(1);76 expect(spyEvents.redoStackChanged).toHaveBeenCalledWith(0);77 done();78 });79 }80 );81 it(82 '"undo()" should fire a event - ' + ' "pushRedoStack" (when undoStack is not empty after)',83 (done) => {84 invoker85 .execute(cmd)86 .then(() => invoker.execute(cmd))87 .then(() => {88 invoker.on(spyEvents);89 return invoker.undo();90 })91 .then(() => {92 expect(spyEvents.undoStackChanged).not.toHaveBeenCalled();93 expect(spyEvents.redoStackChanged).toHaveBeenCalledWith(1);94 done();95 });96 }97 );98 it(99 '"undo()" should fire events - ' +100 ' "pushRedoStack", "emptyUndoStack" (when undoStack is empty after)',101 (done) => {102 invoker103 .execute(cmd)104 .then(() => {105 invoker.on(spyEvents);106 return invoker.undo();107 })108 .then(() => {109 expect(spyEvents.redoStackChanged).toHaveBeenCalledWith(1);110 expect(spyEvents.undoStackChanged).toHaveBeenCalledWith(0);111 done();112 });113 }114 );115 it(116 '"redo()" should fire a event - ' + ' "pushUndoStack" (when redoStack is not empty after)',117 (done) => {118 invoker119 .execute(cmd)120 .then(() => invoker.execute(cmd))121 .then(() => invoker.undo())122 .then(() => invoker.undo())123 .then(() => {124 invoker.on(spyEvents);125 return invoker.redo();126 })127 .then(() => {128 expect(spyEvents.undoStackChanged).toHaveBeenCalledWith(1);129 expect(spyEvents.redoStackChanged).not.toHaveBeenCalled();130 done();131 });132 }133 );134 it(135 '"redo()" should fire events - ' +136 ' "pushUndoStack", "emptyRedoStack" (when undoStack is empty after)',137 (done) => {138 invoker139 .execute(cmd)140 .then(() => invoker.undo())141 .then(() => {142 invoker.on(spyEvents);143 return invoker.redo(cmd);144 })145 .then(() => {146 expect(spyEvents.undoStackChanged).toHaveBeenCalledWith(1);147 expect(spyEvents.redoStackChanged).toHaveBeenCalledWith(0);148 done();149 });150 }151 );152 });...
body.js
Source:body.js
1/*-----------------------------------------------2//////////////// vk.com/d2jscripts //////////////3/////////////////////////////////////////////////4ÐÐ°Ð½ÐµÐ»Ñ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ ÐºÑллдаÑн Ñкилов и манакоÑÑ, 5Ñак же позволÑÐµÑ ÑоÑвоÑиÑÑ Ð·Ð°ÐºÐ»Ð¸Ð½Ð°Ð½Ð¸Ðµ кликом по иконке6ÐвÑоÑ: vk.com/exieros7/////////////////////////////////////////////////8-----------------------End---------------------*/9var Config10try{ Game.Panels.InvokerPanel.DeleteAsync(0) }catch(e){}11for (i in Game.Subscribes.InvokerPanel)12 try{ GameEvents.Unsubscribe( Game.Subscribes.InvokerPanel[i] ) }catch(e){}13Game.Subscribes.InvokerPanel = []14Game.Subscribes.InvokerPanel.push( GameEvents.Subscribe('game_newmap', RefreshIPS) )15Game.Subscribes.InvokerPanel.push( GameEvents.Subscribe('player_connect_full', RefreshIPS) )16Game.Subscribes.InvokerPanel.push( GameEvents.Subscribe('player_connect', RefreshIPS) )17Game.Subscribes.InvokerPanel.push( GameEvents.Subscribe('dota_player_pick_hero', RefreshIPS) )18Game.Subscribes.InvokerPanel.push( GameEvents.Subscribe('dota_player_update_hero_selection', RefreshIPS) )19function RefreshIPS(){20 var MyID = Game.GetLocalPlayerID()21 try{ Game.Panels.InvokerPanel.DeleteAsync(0) }catch(e){}22 for (i in Game.Subscribes.InvokerPanel)23 try{ GameEvents.Unsubscribe( Game.Subscribes.InvokerPanel[i] ) }catch(e){}24 Game.Subscribes.InvokerPanel = []25}26InvokerPanelF = function(){27 var MyID = Game.GetLocalPlayerID()28 if ( MyID==-1 ){29 InvokerPanel.checked = false30 try{ Game.Panels.InvokerPanel.DeleteAsync(0) }catch(e){}31 for (i in Game.Subscribes.InvokerPanel)32 try{ GameEvents.Unsubscribe( Game.Subscribes.InvokerPanel[i] ) }catch(e){}33 Game.Subscribes.InvokerPanel = []34 return35 }36 if ( Players.GetPlayerSelectedHero(MyID) != 'npc_dota_hero_invoker' ){37 //Game.ScriptLogMsg('InvokerPanel: Not Invoker', '#ff0000')38 InvokerPanel.checked = false39 try{ Game.Panels.InvokerPanel.DeleteAsync(0) }catch(e){}40 for (i in Game.Subscribes.InvokerPanel)41 try{ GameEvents.Unsubscribe( Game.Subscribes.InvokerPanel[i] ) }catch(e){}42 Game.Subscribes.InvokerPanel = []43 return44 }45 if (InvokerPanel.checked){46 Game.GetFile('Invokerpanel/invokerpanel.xml', function(a){47 Game.Panels.InvokerPanel = $.CreatePanel( 'Panel', Game.GetMainHUD(), 'InvokerPanelMain' )48 Game.Panels.InvokerPanel.BLoadLayoutFromString( a, false, false )49 GameUI.MovePanel(Game.Panels.InvokerPanel,function(p){50 var position = p.style.position.split(' ')51 Config.MainPanel.x = position[0]52 Config.MainPanel.y = position[1]53 Game.SaveConfig('Invokerpanel/config.conf', Config)54 })55 Game.GetConfig('Invokerpanel/config.conf',function(a){56 Config = a[0]57 Game.Panels.InvokerPanel.style.position = Config.MainPanel.x + ' ' + Config.MainPanel.y + ' 0'58 Game.Panels.InvokerPanel.style.flowChildren = Config.MainPanel.flow59 })60 try{Game.AddCommand( '__InvokerPanel_Rotate', function(){61 if (Game.Panels.InvokerPanel.Children()[0].style.flowChildren == 'right')62 Game.Panels.InvokerPanel.Children()[0].style.flowChildren = 'down'63 else64 Game.Panels.InvokerPanel.Children()[0].style.flowChildren = 'right'65 Config.MainPanel.flow = Game.Panels.InvokerPanel.style.flowChildren66 Game.SaveConfig('Invokerpanel/config.conf', Config)67 }, '',0 )}catch(e){}68 })69 Game.ScriptLogMsg('Script enabled: InvokerPanel', '#00ff00')70 }else{71 try{ Game.Panels.InvokerPanel.DeleteAsync(0) }catch(e){}72 for (i in Game.Subscribes.InvokerPanel)73 try{ GameEvents.Unsubscribe( Game.Subscribes.InvokerPanel[i] ) }catch(e){}74 Game.Subscribes.InvokerPanel = []75 }76}77 78var Temp = $.CreatePanel( "Panel", $('#scripts'), "Invokerpanel" )79Temp.SetPanelEvent( 'onactivate', InvokerPanelF )80Temp.BLoadLayoutFromString( '<root><styles><include src="s2r://panorama/styles/dotastyles.vcss_c" /><include src="s2r://panorama/styles/magadan.vcss_c" /></styles><Panel><ToggleButton class="CheckBox" id="Invokerpanel" text="InvokerPanelV"/></Panel></root>', false, false)81var InvokerPanel = $.GetContextPanel().FindChildTraverse( 'Invokerpanel' ).Children()[0]...
obj.js
Source:obj.js
...9 // arrange10 var subject = [];11 12 // act 13 invoker([1,2,3,4], function(i, j){this.push({val:i, name:j});}, subject);14 15 // assert 16 strictEqual(subject.length, 4);17 strictEqual(subject[0].name, 0);18 strictEqual(subject[0].val, 1);19 strictEqual(subject[1].name, 1);20 strictEqual(subject[1].val, 2);21 strictEqual(subject[2].name, 2);22 strictEqual(subject[2].val, 3);23 strictEqual(subject[3].name, 3);24 strictEqual(subject[3].val, 4);25});26testUtils.testWithUtils("enumerateObj", null, true, function(methods, classes, subject, invoker) {27 // arrange28 var subject = [];29 30 // act 31 invoker({"a":1,"b": 2,"c": 3,"d": 4}, function(i, j){this.push({val:i, name:j});}, subject);32 33 // assert 34 strictEqual(subject.length, 4);35 strictEqual(subject[0].name, "a");36 strictEqual(subject[0].val, 1);37 strictEqual(subject[1].name, "b");38 strictEqual(subject[1].val, 2);39 strictEqual(subject[2].name, "c");40 strictEqual(subject[2].val, 3);41 strictEqual(subject[3].name, "d");42 strictEqual(subject[3].val, 4);43});44testUtils.testWithUtils("trim", "", true, function(methods, classes, subject, invoker) {45 // arrange46 var string = "JKHVJKHVJKHVH";47 48 // act 49 // assert50 strictEqual(invoker(" \n\r\t" + string + " \n\r\t"), string);51});52testUtils.testWithUtils("trimToLower", "", true, function(methods, classes, subject, invoker) {53 // arrange54 var string = "JKHVJKHVJKHVH";55 56 // act 57 // assert58 strictEqual(invoker(" \n\r\t" + string + " \n\r\t"), string.toLowerCase());59});60testUtils.testWithUtils("camelCase", "", true, function(methods, classes, subject, invoker) {61 // arrange 62 // act 63 // assert64 strictEqual(invoker("hello-one"), "helloOne");65 strictEqual(invoker("-hello-one"), "HelloOne");66 strictEqual(invoker("hello-one-"), "helloOne");67 strictEqual(invoker(null), null);68});69testUtils.testWithUtils("parseBool", "", true, function(methods, classes, subject, invoker) {70 // arrange 71 // act 72 // assert 73 strictEqual(invoker("sdasd"), true); 74 strictEqual(invoker("true"), true); 75 strictEqual(invoker("0"), false); 76 strictEqual(invoker(0), false); 77 strictEqual(invoker(""), false); 78 strictEqual(invoker("FalSe"), false); 79});80testUtils.testWithUtils("getObject", "", true, function(methods, classes, subject, invoker) {81 // arrange82 var ctxt = {a:{b:{c:{d:{}}}}};83 84 // act 85 // assert 86 strictEqual(invoker("a.b.c.d", ctxt), ctxt.a.b.c.d);87});88testUtils.testWithUtils("setObject", "", true, function(methods, classes, subject, invoker) {89 // arrange90 var ctxt = {a:{b:{c:{d:{}}}}}, obj = {};91 92 // act93 invoker("a.b.c.d", ctxt, obj);94 95 // assert 96 strictEqual(obj, ctxt.a.b.c.d);97});98testUtils.testWithUtils("splitPropertyName", "", true, function(methods, classes, subject, invoker) {99 // arrange 100 // act 101 // assert 102 deepEqual(invoker("a.b.c[3].t"), ["a", "b", "c", 3, "t"]);103});104testUtils.testWithUtils("joinPropertyName", "", true, function(methods, classes, subject, invoker) {105 // arrange 106 // act 107 // assert 108 deepEqual(invoker(["a", "b", "c", 3, "t"]), "a.b.c[3].t");109});110testUtils.testWithUtils("copyArray", "", true, function(methods, classes, subject, invoker) {111 // arrange112 var expected = [{}, {}, {}];113 114 // act 115 var actual = invoker(expected);116 117 // assert 118 strictEqual(actual.length, expected.length);119 for(var i = 0, ii = actual.length; i < ii; i++)120 strictEqual(actual[i], expected[i]); 121});122testUtils.testWithUtils("extend", "", true, function(methods, classes, subject, invoker) {123 // arrange124 var obj1 = {};125 var obj2 = {aaa:{}};126 127 // act128 var out = invoker(obj1, obj2);129 130 // assert 131 strictEqual(out, obj1);132 strictEqual(out.aaa, obj2.aaa);...
merge-hook.js
Source:merge-hook.js
1/* @flow */2import { remove } from 'shared/util'3import { createFnInvoker } from './update-listeners'4export function mergeVNodeHook (def: Object, hookKey: string, hook: Function) {5 let invoker6 const oldHook = def[hookKey]7 function wrappedHook () {8 hook.apply(this, arguments)9 // important: remove merged hook to ensure it's called only once10 // and prevent memory leak11 remove(invoker.fns, wrappedHook)12 }13 if (!oldHook) {14 // no existing hook15 invoker = createFnInvoker([wrappedHook])16 } else {17 /* istanbul ignore if */18 if (oldHook.fns && oldHook.merged) {19 // already a merged invoker20 invoker = oldHook21 invoker.fns.push(wrappedHook)22 } else {23 // existing plain hook24 invoker = createFnInvoker([oldHook, wrappedHook])25 }26 }27 invoker.merged = true28 def[hookKey] = invoker...
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright['chromium'].launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: 'google.png' });7 await browser.close();8})();9const playwright = require('playwright');10(async () => {11 const browser = await playwright['chromium'].launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: 'google.png' });15 await browser.close();16})();17const playwright = require('playwright');18(async () => {19 const browser = await playwright['chromium'].launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.screenshot({ path: 'google.png' });23 await browser.close();24})();25const playwright = require('playwright');26(async () => {27 const browser = await playwright['chromium'].launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.screenshot({ path: 'google.png' });31 await browser.close();32})();33const playwright = require('playwright');34(async () => {35 const browser = await playwright['chromium'].launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.screenshot({ path: 'google.png' });39 await browser.close();40})();41const playwright = require('playwright');42(async () => {43 const browser = await playwright['chromium'].launch();44 const context = await browser.newContext();45 const page = await context.newPage();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright['chromium'].launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: 'example.png' });7 await browser.close();8})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page.screenshot({ path: 'example.png' });6 await browser.close();7})();8const playwright = require('playwright');9(async () => {10 const browser = await playwright.chromium.launch();11 const page = await browser.newPage();12 await page.screenshot({ path: 'example.png' });13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const page = await browser.newPage();19 await page.screenshot({ path: 'example.png' });20 await browser.close();21})();22const playwright = require('playwright');23(async () => {24 const browser = await playwright.chromium.launch();25 const page = await browser.newPage();26 await page.screenshot({ path: 'example.png' });27 await browser.close();28})();29const { chromium } = require('playwright');30(async () => {31 const browser = await chromium.launch();32 const page = await browser.newPage();33 await page.screenshot({ path: 'example.png' });34 await browser.close();35})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page.screenshot({ path: 'google.png' });6 await browser.close();7})();
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = playwright;3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.screenshot({ path: 'google.png' });8 await browser.close();9})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 const title = await page.title();6 console.log(title);7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const page = await browser.newPage();13 const title = await page.title();14 console.log(title);15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const page = await browser.newPage();21 const title = await page.title();22 console.log(title);23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const page = await browser.newPage();29 const title = await page.title();30 console.log(title);31 await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const page = await browser.newPage();37 const title = await page.title();38 console.log(title);39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const page = await browser.newPage();45 const title = await page.title();46 console.log(title);47 await browser.close();48})();49const { chromium } = require('playwright');50(async () => {
Using AI Code Generation
1const playwright = require('playwright');2const { invoker } = playwright;3(async () => {4 const browser = await invoker.launch('chromium');5 const page = await invoker.newPage(browser);6 await invoker.close(browser);7})();8const playwright = require('playwright');9const { invoker } = playwright;10(async () => {11 const browser = await invoker.launch('chromium');12 const page = await invoker.newPage(browser);13 await invoker.close(browser);14})();15const playwright = require('playwright');16const { invoker } = playwright;17(async () => {18 const browser = await invoker.launch('chromium');19 const page = await invoker.newPage(browser);20 await invoker.close(browser);21})();22const playwright = require('playwright');23const { invoker } = playwright;24(async () => {25 const browser = await invoker.launch('chromium');26 const page = await invoker.newPage(browser);27 await invoker.close(browser);28})();29const playwright = require('playwright');30const { invoker } = playwright;31(async () => {32 const browser = await invoker.launch('chromium');33 const page = await invoker.newPage(browser);34 await invoker.close(browser);35})();36const playwright = require('playwright');37const { invoker } = playwright;38(async () => {39 const browser = await invoker.launch('chromium');40 const page = await invoker.newPage(browser);41 await invoker.close(browser);42})();
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = playwright;3const browser = await chromium.launch();4const context = await browser.newContext();5const page = await context.newPage();6const invoker = page._delegate;7console.log(result);8const playwright = require('playwright');9const { chromium } = playwright;10const browser = await chromium.launch();11const context = await browser.newContext();12const page = await context.newPage();13const invoker = page._delegate;14console.log(result);15const playwright = require('playwright');16const { chromium } = playwright;17const browser = await chromium.launch();18const context = await browser.newContext();19const page = await context.newPage();20const invoker = page._delegate;21console.log(result);22const playwright = require('playwright');23const { chromium } = playwright;24const browser = await chromium.launch();25const context = await browser.newContext();26const page = await context.newPage();27const invoker = page._delegate;28console.log(result);
Using AI Code Generation
1const { chromium, firefox, webkit } = require('playwright');2const { PlaywrightInvoker } = require('@playwright/test/lib/server/playwrightInvoker');3const { test } = require('@playwright/test');4test.describe('test', () => {5 test('test', async ({ browserName }) => {6 const browserType = { chromium, firefox, webkit }[browserName];7 const playwrightInvoker = new PlaywrightInvoker(browserType);8 const browser = await playwrightInvoker.invoke('launch');9 const context = await playwrightInvoker.invoke('newContext', browser);10 const page = await playwrightInvoker.invoke('newPage', context);11 await browser.close();12 });13});14{15 "scripts": {16 },17 "devDependencies": {18 }19}20module.exports = {21 use: {22 viewport: { width: 1280, height: 720 },23 },24 {25 use: {26 },27 },28 {29 use: {30 },31 },32 {33 use: {34 },35 },36};37 FAIL test.js (15.677 s)
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!