mirror of
https://github.com/ONLYOFFICE/sdkjs.git
synced 2026-04-07 14:09:12 +08:00
[se] Add test by data validation
This commit is contained in:
1
.github/workflows/common_check.yml
vendored
1
.github/workflows/common_check.yml
vendored
@ -43,6 +43,7 @@ jobs:
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/FormulaTrace.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/GoalSeekTests.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/NumFormatParse.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/DataValidationTests.html
|
||||
node-qunit-puppeteer tests/word/unit-tests/paragraphContentPos.html
|
||||
node-qunit-puppeteer tests/word/content-control/block-level/cursorAndSelection.html
|
||||
node-qunit-puppeteer tests/word/content-control/inline-level/cursorAndSelection.html
|
||||
|
||||
1
.github/workflows/dev_check.yml
vendored
1
.github/workflows/dev_check.yml
vendored
@ -43,6 +43,7 @@ jobs:
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/FormulaTrace.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/GoalSeekTests.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/NumFormatParse.html
|
||||
node-qunit-puppeteer tests/cell/spreadsheet-calculation/DataValidationTests.html
|
||||
node-qunit-puppeteer tests/word/unit-tests/paragraphContentPos.html
|
||||
node-qunit-puppeteer tests/word/content-control/block-level/cursorAndSelection.html
|
||||
node-qunit-puppeteer tests/word/content-control/inline-level/cursorAndSelection.html
|
||||
|
||||
32
tests/cell/spreadsheet-calculation/DataValidationTests.html
Normal file
32
tests/cell/spreadsheet-calculation/DataValidationTests.html
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<title>Unit Tests</title>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<link type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/qunit/2.16.0/qunit.css" rel="stylesheet" media="screen" />
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/qunit/2.16.0/qunit.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../develop/sdkjs/cell/scripts.js"></script>
|
||||
<script type="text/javascript">
|
||||
window["WebAssembly"] = undefined;
|
||||
window.sdk_scripts.forEach(function(item){
|
||||
document.write('<script type="text/javascript" src="' + item + '"><\/script>');
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="DataValidationTests.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="qunit-header">Data validation tests</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<div id="qunit-testrunner-toolbar"></div>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<div id="qunit-fixture">test markup, will be hidden</div>
|
||||
<div id="editor_sdk" class="viewer" style="overflow: hidden;" tabindex="-1"></div>
|
||||
</body>
|
||||
</html>
|
||||
224
tests/cell/spreadsheet-calculation/DataValidationTests.js
Normal file
224
tests/cell/spreadsheet-calculation/DataValidationTests.js
Normal file
@ -0,0 +1,224 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2024
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
$(function () {
|
||||
|
||||
Asc.spreadsheet_api.prototype._init = function () {
|
||||
this._loadModules();
|
||||
};
|
||||
Asc.spreadsheet_api.prototype._loadFonts = function (fonts, callback) {
|
||||
callback();
|
||||
};
|
||||
Asc.spreadsheet_api.prototype.onEndLoadFile = function (fonts, callback) {
|
||||
openDocument();
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype._calcMaxDigitWidth = function () {
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype._init = function () {
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype._isLockedUserProtectedRange = function (callback) {
|
||||
callback(true);
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype._onWSSelectionChanged = function () {
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype.showWorksheet = function () {
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype.recalculateDrawingObjects = function () {
|
||||
};
|
||||
AscCommonExcel.WorkbookView.prototype.restoreFocus = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._init = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype.updateRanges = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._autoFitColumnsWidth = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype.cleanSelection = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._drawSelection = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._scrollToRange = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype.draw = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._prepareDrawingObjects = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._initCellsArea = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype.getZoom = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._prepareCellTextMetricsCache = function () {
|
||||
};
|
||||
|
||||
AscCommon.baseEditorsApi.prototype._onEndLoadSdk = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._isLockedCells = function (range, subType, callback) {
|
||||
callback(true);
|
||||
return true;
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._isLockedAll = function (callback) {
|
||||
callback(true);
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._isLockedFrozenPane = function (callback) {
|
||||
callback(true);
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._updateVisibleColsCount = function () {
|
||||
};
|
||||
AscCommonExcel.WorksheetView.prototype._calcActiveCellOffset = function () {
|
||||
};
|
||||
|
||||
AscCommon.baseEditorsApi.prototype._onEndLoadSdk = function () {
|
||||
};
|
||||
Asc.ReadDefTableStyles = function(){};
|
||||
|
||||
function openDocument(){
|
||||
AscCommon.g_oTableId.init();
|
||||
api._onEndLoadSdk();
|
||||
api.isOpenOOXInBrowser = false;
|
||||
api._openDocument(AscCommon.getEmpty());
|
||||
api._openOnClient();
|
||||
}
|
||||
|
||||
var api = new Asc.spreadsheet_api({
|
||||
'id-view': 'editor_sdk'
|
||||
});
|
||||
api.FontLoader = {
|
||||
LoadDocumentFonts: function() {}
|
||||
};
|
||||
window["Asc"]["editor"] = api;
|
||||
AscCommon.g_oTableId.init();
|
||||
api._onEndLoadSdk();
|
||||
api.isOpenOOXInBrowser = false;
|
||||
api._openDocument(AscCommon.getEmpty());
|
||||
api._openOnClient();
|
||||
api.collaborativeEditing = new AscCommonExcel.CCollaborativeEditing({});
|
||||
api.wb = new AscCommonExcel.WorkbookView(api.wbModel, api.controller, api.handlers, api.HtmlElement,
|
||||
api.topLineEditorElement, api, api.collaborativeEditing, api.fontRenderingMode);
|
||||
var wb = api.wbModel;
|
||||
wb.handlers.add("getSelectionState", function () {
|
||||
return null;
|
||||
});
|
||||
wb.handlers.add("getLockDefNameManagerStatus", function () {
|
||||
return true;
|
||||
});
|
||||
wb.handlers.add("asc_onConfirmAction", function (test1, callback) {
|
||||
callback(true);
|
||||
});
|
||||
api.wb.cellCommentator = new AscCommonExcel.CCellCommentator({
|
||||
model: api.wbModel.aWorksheets[0],
|
||||
collaborativeEditing: null,
|
||||
draw: function() {
|
||||
},
|
||||
handlers: {
|
||||
trigger: function() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
AscCommonExcel.CCellCommentator.prototype.isLockedComment = function (oComment, callbackFunc) {
|
||||
callbackFunc(true);
|
||||
};
|
||||
AscCommonExcel.CCellCommentator.prototype.drawCommentCells = function () {
|
||||
};
|
||||
AscCommonExcel.CCellCommentator.prototype.ascCvtRatio = function () {
|
||||
};
|
||||
|
||||
var wsView = api.wb.getWorksheet(0);
|
||||
wsView.handlers = api.handlers;
|
||||
wsView.objectRender = new AscFormat.DrawingObjects();
|
||||
var ws = api.wbModel.aWorksheets[0];
|
||||
|
||||
var getRange = function (c1, r1, c2, r2) {
|
||||
return new window["Asc"].Range(c1, r1, c2, r2);
|
||||
};
|
||||
const clearData = function (c1, r1, c2, r2) {
|
||||
ws.autoFilters.deleteAutoFilter(getRange(0,0,0,0));
|
||||
ws.removeRows(r1, r2, false);
|
||||
ws.removeCols(c1, c2);
|
||||
};
|
||||
|
||||
function checkUndoRedo(fBefore, fAfter, desc) {
|
||||
fAfter("after_" + desc);
|
||||
AscCommon.History.Undo();
|
||||
fBefore("undo_" + desc);
|
||||
AscCommon.History.Redo();
|
||||
fAfter("redo_" + desc);
|
||||
AscCommon.History.Undo();
|
||||
}
|
||||
|
||||
function compareData (assert, range, data, desc) {
|
||||
for (let i = range.r1; i <= range.r2; i++) {
|
||||
for (let j = range.c1; j <= range.c2; j++) {
|
||||
let rangeVal = ws.getCell3(i, j);
|
||||
let dataVal = data[i - range.r1][j - range.c1];
|
||||
assert.strictEqual(rangeVal.getValue(), dataVal, desc + " compare " + rangeVal.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QUnit.test('Data validation: custom formula manipulation', function (assert) {
|
||||
|
||||
assert.strictEqual(ws.dataValidations, null, "Data validation count before add");
|
||||
|
||||
const props = new AscCommonExcel.CDataValidation();
|
||||
props.asc_setType(Asc.EDataValidationType.Custom);
|
||||
props.setShowErrorMessage(true);
|
||||
props.asc_setFormula1(new Asc.CDataFormula('=COUNTIF(B:B;B1)=1'));
|
||||
|
||||
wsView.setSelection(new Asc.Range(1, 0, 1, AscCommon.gc_nMaxRow0));
|
||||
api.asc_setDataValidation(props);
|
||||
|
||||
|
||||
assert.strictEqual(ws.dataValidations.elems.length, 1, "Data validation count after add");
|
||||
assert.strictEqual(ws.getDataValidation(0, 0), null, "Check data validation in A1");
|
||||
assert.strictEqual(!!(ws.getDataValidation(1, 0)), true, "Check data validation in B1");
|
||||
|
||||
//try to add value
|
||||
let oDataValidation = ws.getDataValidation(1, 0);
|
||||
|
||||
//imitate try to set value into B1
|
||||
ws.getRange2("B1").setValue("test1");
|
||||
wsView.setSelection(new Asc.Range(1, 0, 1, 0));
|
||||
assert.strictEqual(oDataValidation.checkValue(new AscCommonExcel.Cell(), ws), true, "B4 validation before add repeated values");
|
||||
|
||||
//imitate try to set value into B2
|
||||
ws.getRange2("B2").setValue("test1");
|
||||
|
||||
wsView.setSelection(new Asc.Range(1, 1, 1, 1));
|
||||
assert.strictEqual(oDataValidation.checkValue(new AscCommonExcel.Cell(), ws), false, "B4 validation before add repeated values");
|
||||
|
||||
//clearData(0, 6, 0, 6);
|
||||
});
|
||||
|
||||
QUnit.module("Sheet structure");
|
||||
});
|
||||
Reference in New Issue
Block a user