Best JavaScript code snippet using playwright-internal
slick.editors.js
Source:slick.editors.js
...21 $input.on("change", function () {22 var activeCell = args.grid.getActiveCell();23 // when valid, we'll also apply the new value to the dataContext item object24 if (scope.validate().valid) {25 scope.applyValue(scope.args.item, scope.serializeValue());26 }27 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());28 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });29 });30 }31 };32 this.destroy = function () {33 $input.remove();34 };35 this.focus = function () {36 $input.focus();37 };38 this.getValue = function () {39 return $input.val();40 };41 this.setValue = function (val) {42 $input.val(val);43 };44 this.loadValue = function (item) {45 defaultValue = item[args.column.field] || "";46 $input.val(defaultValue);47 $input[0].defaultValue = defaultValue;48 $input.select();49 };50 this.serializeValue = function () {51 return $input.val();52 };53 this.applyValue = function (item, state) {54 item[args.column.field] = state;55 };56 this.isValueChanged = function () {57 return (!($input.val() === "" && defaultValue == null)) && ($input.val() != defaultValue);58 };59 this.validate = function () {60 if (args.column.validator) {61 var validationResults = args.column.validator($input.val(), args);62 if (!validationResults.valid) {63 return validationResults;64 }65 }66 return {67 valid: true,68 msg: null69 };70 };71 this.init();72 }73 function IntegerEditor(args) {74 var $input;75 var defaultValue;76 var scope = this;77 this.args = args;78 this.init = function () {79 var navOnLR = args.grid.getOptions().editorCellNavOnLRKeys;80 $input = $("<INPUT type=text class='editor-text' />")81 .appendTo(args.container)82 .on("keydown.nav", navOnLR ? handleKeydownLRNav : handleKeydownLRNoNav)83 .focus()84 .select();85 // trigger onCompositeEditorChange event when input changes and it's a Composite Editor86 if (args.compositeEditorOptions) {87 $input.on("change", function () {88 var activeCell = args.grid.getActiveCell();89 // when valid, we'll also apply the new value to the dataContext item object90 if (scope.validate().valid) {91 scope.applyValue(scope.args.item, scope.serializeValue());92 }93 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());94 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });95 });96 }97 };98 this.destroy = function () {99 $input.remove();100 };101 this.focus = function () {102 $input.focus();103 };104 this.loadValue = function (item) {105 defaultValue = item[args.column.field];106 $input.val(defaultValue);107 $input[0].defaultValue = defaultValue;108 $input.select();109 };110 this.serializeValue = function () {111 return parseInt($input.val(), 10) || 0;112 };113 this.applyValue = function (item, state) {114 item[args.column.field] = state;115 };116 this.isValueChanged = function () {117 return (!($input.val() === "" && defaultValue == null)) && ($input.val() != defaultValue);118 };119 this.validate = function () {120 if (isNaN($input.val())) {121 return {122 valid: false,123 msg: "Please enter a valid integer"124 };125 }126 if (args.column.validator) {127 var validationResults = args.column.validator($input.val(), args);128 if (!validationResults.valid) {129 return validationResults;130 }131 }132 return {133 valid: true,134 msg: null135 };136 };137 this.init();138 }139 function FloatEditor(args) {140 var $input;141 var defaultValue;142 var scope = this;143 this.args = args;144 this.init = function () {145 var navOnLR = args.grid.getOptions().editorCellNavOnLRKeys;146 $input = $("<INPUT type=text class='editor-text' />")147 .appendTo(args.container)148 .on("keydown.nav", navOnLR ? handleKeydownLRNav : handleKeydownLRNoNav)149 .focus()150 .select();151 // trigger onCompositeEditorChange event when input changes and it's a Composite Editor152 if (args.compositeEditorOptions) {153 $input.on("change", function () {154 var activeCell = args.grid.getActiveCell();155 // when valid, we'll also apply the new value to the dataContext item object156 if (scope.validate().valid) {157 scope.applyValue(scope.args.item, scope.serializeValue());158 }159 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());160 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });161 });162 }163 };164 this.destroy = function () {165 $input.remove();166 };167 this.focus = function () {168 $input.focus();169 };170 function getDecimalPlaces() {171 // returns the number of fixed decimal places or null172 var rtn = args.column.editorFixedDecimalPlaces;173 if (typeof rtn == 'undefined') {174 rtn = FloatEditor.DefaultDecimalPlaces;175 }176 return (!rtn && rtn !== 0 ? null : rtn);177 }178 this.loadValue = function (item) {179 defaultValue = item[args.column.field];180 var decPlaces = getDecimalPlaces();181 if (decPlaces !== null182 && (defaultValue || defaultValue === 0)183 && defaultValue.toFixed) {184 defaultValue = defaultValue.toFixed(decPlaces);185 }186 $input.val(defaultValue);187 $input[0].defaultValue = defaultValue;188 $input.select();189 };190 this.serializeValue = function () {191 var rtn = parseFloat($input.val());192 if (FloatEditor.AllowEmptyValue) {193 if (!rtn && rtn !== 0) { rtn = ''; }194 } else {195 rtn = rtn || 0;196 }197 var decPlaces = getDecimalPlaces();198 if (decPlaces !== null199 && (rtn || rtn === 0)200 && rtn.toFixed) {201 rtn = parseFloat(rtn.toFixed(decPlaces));202 }203 return rtn;204 };205 this.applyValue = function (item, state) {206 item[args.column.field] = state;207 };208 this.isValueChanged = function () {209 return (!($input.val() === "" && defaultValue == null)) && ($input.val() != defaultValue);210 };211 this.validate = function () {212 if (isNaN($input.val())) {213 return {214 valid: false,215 msg: "Please enter a valid number"216 };217 }218 if (args.column.validator) {219 var validationResults = args.column.validator($input.val(), args);220 if (!validationResults.valid) {221 return validationResults;222 }223 }224 return {225 valid: true,226 msg: null227 };228 };229 this.init();230 }231 FloatEditor.DefaultDecimalPlaces = null;232 FloatEditor.AllowEmptyValue = false;233 function DateEditor(args) {234 var $input;235 var defaultValue;236 var scope = this;237 var calendarOpen = false;238 this.args = args;239 this.init = function () {240 $input = $("<INPUT type=text class='editor-text' />");241 $input.appendTo(args.container);242 $input.focus().select();243 $input.datepicker({244 showOn: "button",245 buttonImageOnly: true,246 beforeShow: function () {247 calendarOpen = true;248 },249 onClose: function () {250 calendarOpen = false;251 // trigger onCompositeEditorChange event when input changes and it's a Composite Editor252 if (args.compositeEditorOptions) {253 var activeCell = args.grid.getActiveCell();254 // when valid, we'll also apply the new value to the dataContext item object255 if (scope.validate().valid) {256 scope.applyValue(scope.args.item, scope.serializeValue());257 }258 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());259 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });260 }261 }262 });263 $input.width($input.width() - (!args.compositeEditorOptions ? 18 : 28));264 };265 this.destroy = function () {266 $.datepicker.dpDiv.stop(true, true);267 $input.datepicker("hide");268 $input.datepicker("destroy");269 $input.remove();270 };271 this.show = function () {272 if (calendarOpen) {273 $.datepicker.dpDiv.stop(true, true).show();274 }275 };276 this.hide = function () {277 if (calendarOpen) {278 $.datepicker.dpDiv.stop(true, true).hide();279 }280 };281 this.position = function (position) {282 if (!calendarOpen) {283 return;284 }285 $.datepicker.dpDiv286 .css("top", position.top + 30)287 .css("left", position.left);288 };289 this.focus = function () {290 $input.focus();291 };292 this.loadValue = function (item) {293 defaultValue = item[args.column.field];294 $input.val(defaultValue);295 $input[0].defaultValue = defaultValue;296 $input.select();297 };298 this.serializeValue = function () {299 return $input.val();300 };301 this.applyValue = function (item, state) {302 item[args.column.field] = state;303 };304 this.isValueChanged = function () {305 return (!($input.val() === "" && defaultValue == null)) && ($input.val() != defaultValue);306 };307 this.validate = function () {308 if (args.column.validator) {309 var validationResults = args.column.validator($input.val(), args);310 if (!validationResults.valid) {311 return validationResults;312 }313 }314 return {315 valid: true,316 msg: null317 };318 };319 this.init();320 }321 function YesNoSelectEditor(args) {322 var $select;323 var defaultValue;324 var scope = this;325 this.args = args;326 this.init = function () {327 $select = $("<SELECT tabIndex='0' class='editor-yesno'><OPTION value='yes'>Yes</OPTION><OPTION value='no'>No</OPTION></SELECT>");328 $select.appendTo(args.container);329 $select.focus();330 // trigger onCompositeEditorChange event when input changes and it's a Composite Editor331 if (args.compositeEditorOptions) {332 $select.on("change", function () {333 var activeCell = args.grid.getActiveCell();334 // when valid, we'll also apply the new value to the dataContext item object335 if (scope.validate().valid) {336 scope.applyValue(scope.args.item, scope.serializeValue());337 }338 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());339 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });340 });341 }342 };343 this.destroy = function () {344 $select.remove();345 };346 this.focus = function () {347 $select.focus();348 };349 this.loadValue = function (item) {350 $select.val((defaultValue = item[args.column.field]) ? "yes" : "no");351 $select.select();352 };353 this.serializeValue = function () {354 return ($select.val() == "yes");355 };356 this.applyValue = function (item, state) {357 item[args.column.field] = state;358 };359 this.isValueChanged = function () {360 return ($select.val() != defaultValue);361 };362 this.validate = function () {363 return {364 valid: true,365 msg: null366 };367 };368 this.init();369 }370 function CheckboxEditor(args) {371 var $select;372 var defaultValue;373 var scope = this;374 this.args = args;375 this.init = function () {376 $select = $("<INPUT type=checkbox value='true' class='editor-checkbox' hideFocus>");377 $select.appendTo(args.container);378 $select.focus();379 // trigger onCompositeEditorChange event when input checkbox changes and it's a Composite Editor380 if (args.compositeEditorOptions) {381 $select.on("change", function () {382 var activeCell = args.grid.getActiveCell();383 // when valid, we'll also apply the new value to the dataContext item object384 if (scope.validate().valid) {385 scope.applyValue(scope.args.item, scope.serializeValue());386 }387 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());388 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });389 });390 }391 };392 this.destroy = function () {393 $select.remove();394 };395 this.focus = function () {396 $select.focus();397 };398 this.loadValue = function (item) {399 defaultValue = !!item[args.column.field];400 if (defaultValue) {401 $select.prop('checked', true);402 } else {403 $select.prop('checked', false);404 }405 };406 this.preClick = function () {407 $select.prop('checked', !$select.prop('checked'));408 };409 this.serializeValue = function () {410 return $select.prop('checked');411 };412 this.applyValue = function (item, state) {413 item[args.column.field] = state;414 };415 this.isValueChanged = function () {416 return (this.serializeValue() !== defaultValue);417 };418 this.validate = function () {419 return {420 valid: true,421 msg: null422 };423 };424 this.init();425 }426 function PercentCompleteEditor(args) {427 var $input, $picker;428 var defaultValue;429 var scope = this;430 this.args = args;431 this.init = function () {432 $input = $("<INPUT type=text class='editor-percentcomplete' />");433 $input.width($(args.container).innerWidth() - 25);434 $input.appendTo(args.container);435 $picker = $("<div class='editor-percentcomplete-picker' />").appendTo(args.container);436 $picker.append("<div class='editor-percentcomplete-helper'><div class='editor-percentcomplete-wrapper'><div class='editor-percentcomplete-slider' /><div class='editor-percentcomplete-buttons' /></div></div>");437 $picker.find(".editor-percentcomplete-buttons").append("<button val=0>Not started</button><br/><button val=50>In Progress</button><br/><button val=100>Complete</button>");438 $input.focus().select();439 $picker.find(".editor-percentcomplete-slider").slider({440 orientation: "vertical",441 range: "min",442 value: defaultValue,443 slide: function (event, ui) {444 $input.val(ui.value);445 },446 stop: function (event, ui) {447 // trigger onCompositeEditorChange event when slider stops and it's a Composite Editor448 if (args.compositeEditorOptions) {449 var activeCell = args.grid.getActiveCell();450 // when valid, we'll also apply the new value to the dataContext item object451 if (scope.validate().valid) {452 scope.applyValue(scope.args.item, scope.serializeValue());453 }454 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());455 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });456 }457 }458 });459 $picker.find(".editor-percentcomplete-buttons button").on("click", function (e) {460 $input.val($(this).attr("val"));461 $picker.find(".editor-percentcomplete-slider").slider("value", $(this).attr("val"));462 });463 };464 this.destroy = function () {465 $input.remove();466 $picker.remove();467 };468 this.focus = function () {469 $input.focus();470 };471 this.loadValue = function (item) {472 $input.val(defaultValue = item[args.column.field]);473 $input.select();474 };475 this.serializeValue = function () {476 return parseInt($input.val(), 10) || 0;477 };478 this.applyValue = function (item, state) {479 item[args.column.field] = state;480 };481 this.isValueChanged = function () {482 return (!($input.val() === "" && defaultValue == null)) && ((parseInt($input.val(), 10) || 0) != defaultValue);483 };484 this.validate = function () {485 if (isNaN(parseInt($input.val(), 10))) {486 return {487 valid: false,488 msg: "Please enter a valid positive number"489 };490 }491 return {492 valid: true,493 msg: null494 };495 };496 this.init();497 }498 /*499 * An example of a "detached" editor.500 * The UI is added onto document BODY and .position(), .show() and .hide() are implemented.501 * KeyDown events are also handled to provide handling for Tab, Shift-Tab, Esc and Ctrl-Enter.502 */503 function LongTextEditor(args) {504 var $input, $wrapper;505 var defaultValue;506 var scope = this;507 this.args = args;508 this.init = function () {509 var compositeEditorOptions = args.compositeEditorOptions;510 var navOnLR = args.grid.getOptions().editorCellNavOnLRKeys;511 var $container = compositeEditorOptions ? args.container : $('body');512 $wrapper = $("<DIV class='slick-large-editor-text' style='z-index:10000;background:white;padding:5px;border:3px solid gray; border-radius:10px;'/>")513 .appendTo($container);514 if (compositeEditorOptions) {515 $wrapper.css({ position: 'relative', padding: 0, border: 0 });516 } else {517 $wrapper.css({ position: 'absolute' });518 }519 $input = $("<TEXTAREA hidefocus rows=5 style='background:white;width:250px;height:80px;border:0;outline:0'>")520 .appendTo($wrapper);521 // trigger onCompositeEditorChange event when input changes and it's a Composite Editor522 if (compositeEditorOptions) {523 $input.on("change", function () {524 var activeCell = args.grid.getActiveCell();525 // when valid, we'll also apply the new value to the dataContext item object526 if (scope.validate().valid) {527 scope.applyValue(scope.args.item, scope.serializeValue());528 }529 scope.applyValue(scope.args.compositeEditorOptions.formValues, scope.serializeValue());530 args.grid.onCompositeEditorChange.notify({ row: activeCell.row, cell: activeCell.cell, item: scope.args.item, column: scope.args.column, formValues: scope.args.compositeEditorOptions.formValues });531 });532 } else {533 $("<DIV style='text-align:right'><BUTTON>Save</BUTTON><BUTTON>Cancel</BUTTON></DIV>")534 .appendTo($wrapper);535 $wrapper.find("button:first").on("click", this.save);536 $wrapper.find("button:last").on("click", this.cancel);537 $input.on("keydown", this.handleKeyDown);538 scope.position(args.position);539 }540 $input.focus().select();541 };542 this.handleKeyDown = function (e) {543 if (e.which == $.ui.keyCode.ENTER && e.ctrlKey) {...
Environment.js
Source:Environment.js
...124 o = bind[key];125 stub = o.stub;126 bindInfo = {127 id: o.id,128 value: this.serializeValue(o.getRawValue()),129 stub: stub ? {130 id: stub.id,131 name: stub.name132 } : null133 };134 if (o.isTemplateBinding) {135 bindInfo.isTemplateBinding = true;136 bindInfo.tokens = [];137 Ext.Array.forEach(o.tokens, function(token) {138 bindInfo.tokens.push(token.split('.'));139 }, this);140 bindInfo.descriptor = o.tpl.text;141 } else if (o.isMultiBinding) {142 bindInfo.isMultiBinding = true;143 // TODO:144 } else {145 if (stub) {146 name = this.buildStubName(stub);147 bindInfo.tokens = name.split('.');148 bindInfo.descriptor = '{' + name + '}';149 }150 }151 out[key] = bindInfo;152 }153 return out;154 },155 156 buildStubName: function(stub) {157 var parent = stub.parent,158 name = '';159 160 if (parent && !parent.isRootStub) {161 name = this.buildStubName(parent) + '.';162 }163 return name + stub.name;164 },165 166 buildViewModel: function(vm, comp) {167 var parent = vm.getParent();168 return {169 id: vm.getId(),170 view: comp.id,171 parent: parent ? parent.getId() : null,172 data: this.serializeValue(vm.getData(), true),173 rootStub: this.buildStub(vm.getRoot())174 };175 },176 177 buildStub: function(stub, isLinkChild) {178 var o = {},179 children = stub.children,180 isLink = stub.isLinkStub,181 outChildren = {},182 key, hasAny, child, sameTarget;183 184 if (!stub.isRootStub) {185 o.name = stub.name;186 o.parent = stub.parent ? stub.parent.id : null;187 o.isLoading = stub.isLoading();188 o.bindCount = (stub.bindings && stub.bindings.length) || 0;189 o.cumulativeBindCount = o.bindCount;190 o.value = this.serializeValue(stub.getRawValue());191 if (isLink) {192 sameTarget = stub.target === stub.owner;193 o.linkInfo = {194 sameTarget: sameTarget,195 descriptor: stub.linkDescriptor,196 value: this.serializeValue(stub.binding.getValue())197 };198 isLinkChild = true;199 }200 } else {201 o.name = '';202 o.isLoading = false;203 o.bindCount = o.cumulativeBindCount = 0;204 }205 206 if (children) {207 for (key in children) {208 hasAny = true;209 child = this.buildStub(children[key], isLinkChild);210 outChildren[key] = child;211 o.cumulativeBindCount += child.cumulativeBindCount;212 }213 }214 215 if (hasAny) {216 o.children = outChildren;217 } 218 return o;219 },220 221 createModel: function(entityName, data) {222 var Model = Ext.app.bindinspector.noconflict[entityName];223 return new Model(data);224 },225 226 unpackSnapshot: function(data) {227 this.components = new Ext.util.Collection();228 this.viewModels = new Ext.util.Collection();229 230 Ext.Object.each(data.models, function(key, fields) {231 Ext.define('Ext.app.bindinspector.noconflict.' + key, {232 extend: 'Ext.app.bindinspector.noconflict.BaseModel',233 fields: fields234 });235 });236 237 Ext.Array.forEach(data.components, function(comp) {238 this.unpackComponent(comp, this.components, this.viewModels);239 }, this);240 this.rootComponents = data.components;241 },242 243 unpackComponent: function(comp, allComponents, allViewModels) {244 var vm = comp.viewModel,245 items = comp.items,246 bindings = comp.bindings,247 len, i,248 parentVM,249 parentData, data, key, binding;250 251 allComponents.add(comp);252 253 if (bindings) {254 for (key in bindings) {255 binding = bindings[key];256 binding.value = this.deserializeValue(binding.value);257 }258 }259 260 if (vm) {261 allViewModels.add(vm);262 parentVM = this.getVM(vm.parent);263 if (parentVM) {264 parentData = Ext.Object.chain(parentVM.data);265 }266 data = this.deserializeValue(vm.data);267 if (parentData) {268 data = Ext.apply(parentData, data);269 }270 vm.data = data;271 this.deserializeStub(vm.rootStub);272 }273 274 if (items) {275 for (i = 0, len = items.length; i < len; ++i) {276 this.unpackComponent(items[i], allComponents, allViewModels);277 }278 }279 },280 281 serializeValue: function(value, checkHasOwn) {282 var info = {},283 type, key, item, childInfo, model;284 285 if (value && value.constructor === Object) {286 type = 'object';287 info.value = {};288 for (key in value) {289 if (!(checkHasOwn && !value.hasOwnProperty(key))) {290 childInfo = this.serializeValue(value[key], checkHasOwn);291 item = {292 type: childInfo.type,293 value: childInfo.value294 };295 if (childInfo.entityName) {296 item.entityName = childInfo.entityName;297 }298 info.value[key] = item;299 }300 }301 } else if (value && value.isModel) {302 type = 'model';303 info.entityName = value.entityName;304 this.serializeModel(value.self);305 info.value = this.serializeValue(value.data);306 } else if (value && value.isStore) {307 type = 'store';308 model = value.getModel();309 info.entityName = model.entityName;310 if (model.entityName) {311 this.serializeModel(model);312 }313 } else if (Ext.isDate(value)) {314 type = 'date';315 info.value = Ext.Date.format(value, 'c');316 } else if (Ext.isArray(value)) {317 type = 'array';318 info.value = [];319 Ext.Array.forEach(value, function(item) {320 info.value.push(this.serializeValue(item));321 }, this);322 } else {323 type = Ext.typeOf(value);324 info.value = value;325 }326 info.type = type;327 return info;328 },329 330 deserializeValue: function(info) {331 var type = info.type,332 raw = info.value,333 out, key;334 335 if (type === 'null') {336 out = null;337 } else if (type === 'undefined') {338 out = undefined;339 } else if (type === 'string' || type === 'boolean' || type === 'number') {340 out = raw;341 } else if (type === 'date') {342 out = Ext.Date.parse(raw, 'c');343 } else if (type === 'object') {344 out = {};345 for (key in raw) {346 out[key] = this.deserializeValue(raw[key]);347 }348 } else if (type === 'model') {349 out = this.createModel(info.entityName, this.deserializeValue(raw));350 } else if (type === 'store') {351 out = {352 isStore: true,353 entityName: info.entityName354 };355 } else if (type === 'array') {356 out = [];357 Ext.Array.forEach(raw, function(item) {358 out.push(this.deserializeValue(item));359 }, this);360 }361 return out;362 },363 364 deserializeStub: function(stub) {365 var children = stub.children,366 linkInfo = stub.linkInfo,367 key;368 369 if (stub.value) {370 stub.value = this.deserializeValue(stub.value);371 }372 373 if (linkInfo) {374 linkInfo.value = this.deserializeValue(linkInfo.value);375 }376 377 if (children) {378 for (key in children) {379 this.deserializeStub(children[key]);380 }381 }382 }
...
parameter.js
Source:parameter.js
...35 `<parameters:Parameter name="start" value="{time:start}" ${namespace} pattern="^unknown$" />`36 ).documentElement37 );38 it('shall correctly encode Dates', () => {39 expect(paramTime.serializeValue(new Date('2000-01-01T01:01:01Z'))).to.equal('2000-01-01T01:01:01.000Z');40 });41 it('shall correctly encode bounding box values', () => {42 expect(paramBox.serializeValue([0, 0, 1, 1])).to.equal('0,0,1,1');43 });44 it('shall correctly encode point geometry values', () => {45 expect(paramGeometry.serializeValue({ type: 'Point', coordinates: [0, 0] })).to.match(/^POINT/);46 });47 it('shall correctly encode linestring geometry values', () => {48 expect(paramGeometry.serializeValue({ type: 'LineString', coordinates: [[0, 0], [1, 1]] })).to.match(/^LINESTRING/);49 });50 it('shall correctly encode polygon geometry values', () => {51 expect(paramGeometry.serializeValue({ type: 'Polygon', coordinates: [[[0, 0], [1, 0], [0, 1], [0, 0]]] })).to.match(/^POLYGON/);52 });53 it('shall correctly encode multipolygon geometry values', () => {54 expect(paramGeometry.serializeValue({ type: 'MultiPolygon', coordinates: [[[[0, 0], [1, 0], [0, 1], [0, 0]]]] })).to.match(/^MULTIPOLYGON/);55 });56 it('shall correctly encode simple numeric EO values', () => {57 expect(paramEONumeric.serializeValue(10.1)).to.equal('10.1');58 });59 it('shall correctly encode lists of numeric EO values', () => {60 expect(paramEONumeric.serializeValue([1, 2, 3])).to.equal('{1,2,3}');61 });62 it('shall correctly encode inclusive intervals', () => {63 expect(paramEONumeric.serializeValue({ min: 1, max: 2 })).to.equal('[1,2]');64 });65 it('shall correctly encode exclusive intervals', () => {66 expect(paramEONumeric.serializeValue({ minExclusive: 1, maxExclusive: 2 })).to.equal(']1,2[');67 });68 it('shall correctly encode top open intervals', () => {69 expect(paramEONumeric.serializeValue({ min: 1 })).to.equal('[1');70 });71 it('shall correctly encode bottom open intervals', () => {72 expect(paramEONumeric.serializeValue({ maxExclusive: 2 })).to.equal('2[');73 });74 it('shall correctly encode simple numeric EO dates', () => {75 expect(paramEODate.serializeValue(new Date('2000-01-01T01:01:01Z'))).to.equal('2000-01-01T01:01:01.000Z');76 });77 it('shall correctly encode lists of numeric EO date', () => {78 expect(paramEODate.serializeValue([new Date('2000-01-01T01:01:01Z'), new Date('2000-01-02T01:01:01Z'), new Date('2000-01-03T01:01:01Z')]))79 .to.equal('{2000-01-01T01:01:01.000Z,2000-01-02T01:01:01.000Z,2000-01-03T01:01:01.000Z}');80 });81 it('shall correctly encode inclusive date intervals', () => {82 expect(paramEODate.serializeValue({ min: new Date('2000-01-01T01:01:01Z'), max: new Date('2000-01-02T01:01:01Z') }))83 .to.equal('[2000-01-01T01:01:01.000Z,2000-01-02T01:01:01.000Z]');84 });85 it('shall correctly encode exclusive date intervals', () => {86 expect(paramEODate.serializeValue({ minExclusive: new Date('2000-01-01T01:01:01Z'), maxExclusive: new Date('2000-01-02T01:01:01Z') }))87 .to.equal(']2000-01-01T01:01:01.000Z,2000-01-02T01:01:01.000Z[');88 });89 it('shall correctly encode top open date intervals', () => {90 expect(paramEODate.serializeValue({ min: new Date('2000-01-01T01:01:01Z') })).to.equal('[2000-01-01T01:01:01.000Z');91 });92 it('shall correctly encode bottom open date intervals', () => {93 expect(paramEODate.serializeValue({ maxExclusive: new Date('2000-01-02T01:01:01Z') })).to.equal('2000-01-02T01:01:01.000Z[');94 });95 it('shall correctly serialize dates when a pattern is specified', () => {96 expect(paramDateWithPatternNoMS.serializeValue(new Date('2000-01-02T01:01:01Z'))).to.equal('2000-01-02T01:01:01Z');97 });98 it('shall correctly serialize dates when a pattern is specified', () => {99 expect(paramDateWithPatternNoTZ.serializeValue(new Date('2000-01-02T01:01:01Z'))).to.equal('2000-01-02T01:01:01.000');100 });101 it('shall correctly serialize dates when a pattern is specified', () => {102 expect(paramDateWithPatternNoMSandTZ.serializeValue(new Date('2000-01-02T01:01:01Z'))).to.equal('2000-01-02T01:01:01');103 });104 it('shall throw when no pattern could be decoded', () => {105 expect(paramDateWithUnknownPattern.serializeValue(new Date('2000-01-02T01:01:01Z'))).to.equal('2000-01-02T01:01:01.000Z');106 });107 it('shall work with multi params and templates', () => {108 expect(paramMultiTemplateOptional.serializeValue(new Date('2000-01-02T01:01:01Z'), 'time:start')).to.equal('2000-01-02T01:01:01.000Z');109 expect(paramMultiTemplateOptional.serializeValue(new Date('2000-01-03T01:01:01Z'), 'time:end')).to.equal('2000-01-03T01:01:01.000Z');110 });111 });112 describe('fromKeyValuePair', () => {113 const paramMandatory = OpenSearchParameter.fromKeyValuePair('q', '{searchTerms}');114 const paramOptional = OpenSearchParameter.fromKeyValuePair('start', '{startIndex?}');115 const paramIgnored = OpenSearchParameter.fromKeyValuePair('format', 'rss');116 const paramMultiTemplateOptional = OpenSearchParameter.fromKeyValuePair('timespan', '{time:start?}/{time:end?}');117 it('should work for mandatory parameters', () => {118 expect(paramMandatory.name).to.equal('q');119 expect(paramMandatory.type).to.equal('searchTerms');120 expect(paramMandatory.mandatory).to.be.true;121 });122 it('should work for optional parameters', () => {123 expect(paramOptional.name).to.equal('start');...
serializers.js
Source:serializers.js
...97 if (prepare) {98 object = prepare(object);99 checkObject = prepare(checkObject);100 }101 const serialized = serializeValue(object);102 const result = deSerializeValue(serialized);103 assert.notStrictEqual(result, object);104 if (log) {105 console.log(object);106 console.log(result);107 }108 assertDeepEqualExt(result, checkObject);109 }110 it('primitives', function () {111 function testPrimitive(value) {112 assert.strictEqual(deSerializeValue(serializeValue(value)), value);113 }114 testPrimitive(null);115 testPrimitive(undefined);116 testPrimitive(123);117 assert.ok(Number.isNaN(deSerializeValue(serializeValue(NaN))));118 testPrimitive(Infinity);119 testPrimitive(true);120 testPrimitive(false);121 testPrimitive('');122 testPrimitive('str');123 }); // const array = []124 //125 // const obj: any = {126 // p1: 'p1',127 // p2: 123,128 // p3: true,129 // p4: null,130 // p5: undefined,131 // p6: new Date(),132 // // p7: new CircularClass(array),133 // }134 // obj.p8 = {135 // ...obj,136 // }137 // // obj.p8.value = obj138 // // obj.p9 = obj139 // obj.p10 = Object.values(obj)140 it('simple circular', function () {141 const array = [];142 const object = new CircularClass(array);143 array[0] = object;144 const serialized = serializeValue(object);145 const result = deSerializeValue(serialized);146 assert.notStrictEqual(result, object);147 assert.notStrictEqual(result.array, object.array);148 assertDeepEqualExt(result, object);149 });150 it('Object', function () {151 testComplexObject({});152 });153 it('Array', function () {154 testComplexObject({}, o => o.array);155 });156 it('Map', function () {157 const map = new Map();158 const arr = createComplexObject({159 array: true160 }).array;161 for (let i = 1; i < arr.length; i++) {162 map.set(arr[i - 1], arr[i]);163 }164 const serialized = serializeValue(map);165 const result = deSerializeValue(serialized);166 assert.notStrictEqual(result, map);167 assertDeepEqualExt(result, map);168 });169 it('Set', function () {170 const arr = createComplexObject({171 array: true172 }).array;173 const set = new Set(arr);174 const serialized = serializeValue(set);175 const result = deSerializeValue(serialized);176 assert.notStrictEqual(result, set);177 assertDeepEqualExt(result, set);178 });179 it('Date', function () {180 const date = new Date();181 const serialized = serializeValue(date);182 const result = deSerializeValue(serialized);183 assert.notStrictEqual(result, date);184 assertDeepEqualExt(result, date);185 });186 class Class1 {}187 it('Class: Simple', function () {188 const obj1 = new Class1();189 obj1.prop1 = 'p1';190 assert.throws(() => serializeValue(obj1), Error);191 const serializer = new ObjectSerializer();192 assert.throws(() => serializer.serialize(obj1), Error);193 serializer.typeMeta.putType(Class1, {194 uuid: 'Class1 uuid',195 serializer: TypeMetaSerializerCollection.default.getMeta(Object).serializer // valueFactory: () => new Class1(),196 });197 assert.throws(() => serializeValue(obj1), Error);198 const serialized = serializer.serialize(obj1);199 assert.throws(() => deSerializeValue(obj1), Error);200 const result = serializer.deSerialize(serialized);201 assert.notStrictEqual(result, obj1);202 assertDeepEqualExt(result, obj1);203 });204 class Class2 extends Class1 {205 constructor(prop2) {206 super();207 this.prop3 = 'prop3';208 this.prop2 = prop2;209 }210 serialize(serialize) {211 return {212 prop3: serialize(this.prop3)213 };214 }215 deSerialize(deSerialize, serializedValue) {216 deSerialize(serializedValue.prop3, o => {217 this.prop3 = o;218 });219 }220 }221 Class2.uuid = '3cd346429e194a0d8a57ff526b445100';222 it('Class: Serializable', function () {223 const obj2 = new Class2('p_2');224 obj2.prop1 = 'p1';225 obj2.prop2 = 'p2';226 obj2.prop3 = 'p3';227 assert.throws(() => serializeValue(obj2), Error);228 registerSerializable(Class2, {229 valueFactory: () => new Class2('prop2')230 });231 const serialized = serializeValue(obj2);232 const result = deSerializeValue(serialized, {233 valueFactory: () => new Class2('p2')234 });235 delete obj2.prop1;236 assert.notStrictEqual(result, obj2);237 assertDeepEqualExt(result, obj2);238 });239 class Class3 extends Class2 {240 constructor(prop2) {241 super(prop2);242 }243 serialize(serialize) {244 return { ...super.serialize(serialize),245 prop4: serialize(this.prop4)246 };247 }248 *deSerialize(deSerialize, serializedValue) {249 super.deSerialize(deSerialize, serializedValue);250 this.prop4 = yield deSerialize(serializedValue.prop4);251 }252 }253 Class3.uuid = 'c2a26bc91cc542499f10f8e087fd6a1b';254 it('Class: Serializable inherit', function () {255 const obj3 = new Class3('prop2');256 obj3.prop1 = 'p1';257 obj3.prop2 = 'p2';258 obj3.prop3 = 'p3';259 obj3.prop4 = 'p4';260 assert.throws(() => serializeValue(obj3), Error);261 registerSerializable(Class3, {262 valueFactory: () => new Class3('prop2')263 });264 const serialized = serializeValue(obj3);265 const result = deSerializeValue(serialized);266 delete obj3.prop1;267 obj3.prop2 = 'prop2';268 assert.notStrictEqual(result, obj3);269 assertDeepEqualExt(result, obj3);270 });271 it('complex object', function () {272 testComplexObject({273 circular: true,274 circularClass: true,275 sortedList: true,276 set: true,277 arraySet: true,278 objectSet: true,...
remote.spec.js
Source:remote.spec.js
...83 });84/** Seam.Remoting.Serialize tests **/85 86 it('Seam.Remoting.Serialize testSerializeBool', function() {87 expect(Seam.Remoting.serializeValue(true, "bool")).toEqual("<bool>true</bool>");88 expect(Seam.Remoting.serializeValue(false, "bool")).toEqual("<bool>false</bool>");89 expect(Seam.Remoting.serializeValue(true)).toEqual("<bool>true</bool>");90 expect(Seam.Remoting.serializeValue(false)).toEqual("<bool>false</bool>");91 });92 it('Seam.Remoting.Serialize testSerializeNumber', function() {93 expect(Seam.Remoting.serializeValue(123, "number")).toEqual("<number>123</number>");94 expect(Seam.Remoting.serializeValue(123)).toEqual("<number>123</number>");95 expect(Seam.Remoting.serializeValue(123.45)).toEqual("<number>123.45</number>");96 });97 98 it('Seam.Remoting.Serialize testSerializeDate', function() {99 var dte = new Date(2005, 0, 1);100 expect(Seam.Remoting.serializeValue(dte, "date")).toEqual("<date>20050101000000000</date>");101 dte = new Date(2005, 10, 15, 12, 30, 9, 150);102 expect(Seam.Remoting.serializeValue(dte, "date")).toEqual("<date>20051115123009150</date>");103 expect(Seam.Remoting.serializeValue(dte)).toEqual("<date>20051115123009150</date>");104 });105 it('Seam.Remoting.Serialize testSerializeString', function() {106 var val = "abc";107 expect(Seam.Remoting.serializeValue(val, "str")).toEqual("<str>abc</str>");108 expect(Seam.Remoting.serializeValue(val)).toEqual("<str>abc</str>"); 109 });110 it('Seam.Remoting.Serialize testSerializeBag', function() {111 var bag = new Array();112 bag.push(1);113 expect(Seam.Remoting.serializeBag(bag, "bag")).toEqual("<bag><element><number>1</number></element></bag>");114 expect(Seam.Remoting.serializeBag(bag)).toEqual("<bag><element><number>1</number></element></bag>");115 bag.push("zzz");116 expect(Seam.Remoting.serializeBag(bag, "bag")).toEqual("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>");117 expect(Seam.Remoting.serializeBag(bag)).toEqual("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>"); 118 });119 120 it('Seam.Remoting.Serialize testSerializeMap', function() {121 var map = new Seam.Remoting.Map();122 map.put("1", "zzzz");123 expect(Seam.Remoting.serializeMap(map, "map")).toEqual("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>");124 expect(Seam.Remoting.serializeMap(map)).toEqual("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>");125 });126 it('Seam.Remoting.Serialize testSerializeNull', function() {127 expect(Seam.Remoting.serializeValue(null)).toEqual("<null/>"); 128 });129 130 it('Seam.Remoting.Serialize testComponent', function() {131 var comp = function() { };132 comp.__name = "testComponent";133 134 expect(Seam.Component.isRegistered("testComponent")).toBeFalsy();135 Seam.Component.register(comp);136 expect(Seam.Component.isRegistered("testComponent")).toBeTruthy();137 138 var instance = Seam.Component.getInstance("testComponent");139 expect(Seam.Component.getInstance("testComponent")).toEqual(instance);140 expect(instance).not.toEqual(Seam.Component.newInstance("testComponent1"));141 ...
serializer.test.js
Source:serializer.test.js
...16test('Integer types test', () => {17 const int = 1;18 const intValue = new IntValue();19 intValue.setValue(int);20 expect(Serializer.serializeValue(int)).toStrictEqual(intValue);21 expect(Serializer.deserializeValue(intValue)).toBe(int);22});23test('Float types test', () => {24 const float = 1.2;25 const floatValue = new FloatValue();26 floatValue.setValue(float);27 expect(Serializer.serializeValue(float)).toStrictEqual(floatValue);28 expect(Serializer.deserializeValue(floatValue)).toBe(float);29});30test('String types test', () => {31 const string = 'Test string';32 const stringValue = new StringValue();33 stringValue.setValue(string);34 expect(Serializer.serializeValue(string)).toStrictEqual(stringValue);35 expect(Serializer.deserializeValue(stringValue)).toBe(string);36});37test('Boolean types test', () => {38 const bool = true;39 const booleanValue = new BooleanValue();40 booleanValue.setValue(bool);41 expect(Serializer.serializeValue(bool)).toStrictEqual(booleanValue);42 expect(Serializer.deserializeValue(booleanValue)).toBe(bool);43});44test('Camera types test', () => {45 const url = 'URL';46 const camera = new Camera({47 url,48 });49 const cameraValue = new CameraValue();50 cameraValue.setUrl(url);51 expect(Serializer.serializeValue(camera)).toStrictEqual(cameraValue);52 expect(Serializer.deserializeValue(cameraValue)).toStrictEqual(camera);53});54test('Image types test', () => {55 const data = 'imageData';56 const width = 1200;57 const height = 700;58 const imageObject = new Image({59 data,60 width,61 height,62 });63 console.log(imageObject);64 const imageValue = new ImageValue();65 imageValue.setData(data);66 imageValue.setWidth(width);67 imageValue.setHeight(height);68 expect(Serializer.serializeValue(imageObject)).toStrictEqual(imageValue);69 expect(Serializer.deserializeValue(imageValue)).toStrictEqual(imageObject);70});71const serializerTests = () => {72 console.log(Serializer.serializeValue([]));73 console.log(Serializer.serializeValue(new Tuple({ items: [] })));74 const lst = Serializer.serializeValue([1, 2, 3]);75 console.log(lst);76 console.log(Serializer.deserializeAny(lst.getItemsList()[1]));77 console.log(Serializer.deserializeValue(lst));78 const message = Serializer.serializeMessage(1, [1, 2, 3]);79 console.log(Serializer.deserializeMessage(message));80 const tuple = Serializer.serializeValue(new Tuple({ items: [4, 5, 6] }));81 console.log(tuple);82 console.log(Serializer.deserializeAny(tuple.getItemsList()[1]));83 console.log(Serializer.deserializeValue(tuple));84};85const run = async () => {86 serializerTests();87};...
index.js
Source:index.js
...9function serializeArgs(args) {10 // Map each argument into its string representation11 var items = [];12 for (var i = args.length; i--;) {13 var item = serializeValue(args[i]);14 items.unshift(item);15 }16 // Remove trailing null values, assuming they are optional17 for (var i = items.length; i--;) {18 var item = items[i];19 if (item !== 'void 0' && item !== 'null') break;20 items.pop();21 }22 return items.join(', ');23}24function serializeValue(input) {25 if (input && input.serialize) {26 return input.serialize();27 } else if (typeof input === 'undefined') {28 return 'void 0';29 } else if (input === null) {30 return 'null';31 } else if (typeof input === 'string') {32 return formatString(input);33 } else if (typeof input === 'number' || typeof input === 'boolean') {34 return input + '';35 } else if (Array.isArray(input)) {36 var items = [];37 for (var i = 0; i < input.length; i++) {38 var value = serializeValue(input[i]);39 items.push(value);40 }41 return '[' + items.join(', ') + ']';42 } else if (typeof input === 'object') {43 var items = [];44 for (var key in input) {45 var value = serializeValue(input[key]);46 items.push(formatString(key) + ': ' + value);47 }48 return '{' + items.join(', ') + '}';49 }50}51function formatString(value) {52 var escaped = value.replace(/['\r\n\\]/g, function(match) {53 return (match === '\'') ? '\\\'' :54 (match === '\r') ? '\\r' :55 (match === '\n') ? '\\n' :56 (match === '\\') ? '\\\\' :57 '';58 });59 return '\'' + escaped + '\'';...
serializeValue.js
Source:serializeValue.js
...32 return {33 M: Object34 .keys(val)35 .reduce((acc, key) => {36 acc[key] = serializeValue(val[key]);37 return acc;38 }, {}),39 };40 }41 return serializeScalarValue(val);42};43const serializeObject = (val) => {44 if (val && typeof val === 'object') {45 return Object46 .keys(val)47 .reduce((acc, key) => {48 acc[key] = serializeValue(val[key]);49 return acc;50 }, Array.isArray(val) ? [] : {});51 }52 return serializeValue(val);53}...
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/server/serializers');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const page = await browser.newPage();6 const value = await page.evaluate(() => {7 return {8 foo: {9 bar: {10 }11 }12 }13 });14 const serializedValue = serializeValue(value);15 console.log(serializedValue);16 await browser.close();17})();18{19 objectId: '{"injectedScriptId":1,"id":1}',20 preview: {21 {22 value: '{"type":"object","subtype":"null","description":"Object","objectId":"{\\"injectedScriptId\\":1,\\"id\\":2}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"bar","type":"object","value":"{\\"type\\":\\"object\\",\\"subtype\\":\\"null\\",\\"description\\":\\"Object\\",\\"objectId\\":{\\"injectedScriptId\\":1,\\"id\\":3},\\"preview\\":{\\"type\\":\\"object\\",\\"description\\":\\"Object\\",\\"overflow\\":false,\\"properties\\":[{\\"name\\":\\"baz\\",\\"type\\":\\"string\\",\\"value\\":\\"qux\\"}]}}"}],"ownProperties":{}}}'23 }24 ownProperties: {}25 }26}
Using AI Code Generation
1const { serializeValue } = require('@playwright/test/lib/server/serializer');2const value = serializeValue('value');3const { serializeValue } = require('@playwright/test/lib/server/serializer');4const value = serializeValue('value');5const { serializeValue } = require('@playwright/test/lib/server/serializer');6const value = serializeValue('value');
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/protocol/serializers');2const value = await page.$eval('input', el => el.value);3console.log(value);4const serializedValue = serializeValue(value);5console.log(serializedValue);6- [Playwright Internal Library](
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/server/frames');2const value = await page.evaluate(() => window.foo);3const serializedValue = await serializeValue(value);4console.log(serializedValue);5{6 objectId: '{"injectedScriptId":1,"id":1}'7}
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/utils/serializers');2const value = { foo: 'bar' };3console.log(serializeValue(value));4const { serializeValue } = require('playwright/lib/utils/serializers');5const value = { foo: 'bar' };6console.log(serializeValue(value));7const { serializeValue } = require('playwright/lib/utils/serializers');8const value = { foo: 'bar' };9console.log(serializeValue(value));10const { serializeValue } = require('playwright/lib/utils/serializers');11const value = { foo: 'bar' };12console.log(serializeValue(value));13const { serializeValue } = require('playwright/lib/utils/serializers');14const value = { foo: 'bar' };15console.log(serializeValue(value));16const { serializeValue } = require('playwright/lib/utils/serializers');17const value = { foo: 'bar' };18console.log(serializeValue(value));19const { serializeValue } = require('playwright/lib/utils/serializers');20const value = { foo: 'bar' };21console.log(serializeValue(value));22const { serializeValue } = require('playwright/lib/utils/serializers');23const value = { foo: 'bar' };
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/server/frames');2const value = await page.evaluate(() => window.foo);3const serializedValue = await serializeValue(value);4console.log(serializedValue);5{6 objectId: '{"injectedScriptId":1,"id":1}'7}
Using AI Code Generation
1const { serializeValue } = require('playwright/lib/utils/serializers');2const value = { foo: 'bar' };3console.log(serializeValue(value));4const { serializeValue } = require('playwright/lib/utils/serializers');5const value = { foo: 'bar' };6console.log(serializeValue(value));7const { serializeValue } = require('playwright/lib/utils/serializers');8const value = { foo: 'bar' };9console.log(serializeValue(value));10const { serializeValue } = require('playwright/lib/utils/serializers');11const value = { foo: 'bar' };12console.log(serializeValue(value));13const { serializeValue } = require('playwright/lib/utils/serializers');14const value = { foo: 'bar' };15console.log(serializeValue(value));16const { serializeValue } = require('playwright/lib/utils/serializers');17const value = { foo: 'bar' };18console.log(serializeValue(value));19const { serializeValue } = require('playwright/lib/utils/serializers');20const value = { foo: 'bar' };21console.log(serializeValue(value));22const { serializeValue } = require('playwright/lib/utils/serializers');23const value = { foo: 'bar' };
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!!