import { RuleTester } from "@typescript-eslint/rule-tester"; import rule from "../../src/rules/call-sync-before-read"; const ruleTester = new RuleTester(); ruleTester.run("call-sync-before-read", rule, { valid: [ { code: ` Excel.run(function (context) { var selectedRange = context.workbook.getSelectedRange(); selectedRange.load('address'); await context.sync() console.log('The selected range is: ' + selectedRange.address); });`, }, { code: ` Excel.run(function (context) { var selectedRange; selectedRange = context.workbook.getSelectedRange(); selectedRange.load('address'); await context.sync() console.log('The selected range is: ' + selectedRange.address); });`, }, { code: ` Excel.run(function (context) { var selectedRange = context.workbook.getSelectedRange(); selectedRange.load('address'); return context.sync() .then(function () { console.log('The selected range is: ' + selectedRange.address); }); })`, }, { code: ` Excel.run(function (context) { var dataSheet = context.workbook.worksheets.getItemOrNullObject("Data"); await context.sync(); if (dataSheet.isNullObject) { dataSheet.position = 1; } })`, }, { code: ` Excel.run(function (context) { var dataSheet = context.workbook.worksheets.getItemOrNullObject("Data"); if (true) { await context.sync(); dataSheet.position = 1; } })`, }, { code: ` Excel.run(function (context) { var dataSheet = context.workbook.worksheets.getItemOrNullObject("Data"); if (true) { dataSheet.position = 1; // Write is OK } await context.sync(); });`, }, { code: ` var range = context.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); range.format.fill.color = "yellow";`, }, { code: ` var range = context.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); range.format.font.load('color');`, }, { code: ` var table = worksheet.getTables(); return context.sync().then(function () { table.delete(); });`, }, { code: ` var range = worksheet.getSelectedRange(); range.getCell(0,0);`, }, { code: ` var range = worksheet.getSelectedRange(); range.load("font"); context.sync(); range.font.getColor();`, }, { code: ` await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getActiveWorksheet(); let data: string[][] = [["one"], ["two"]]; const rangeAddress = data.length; const range = sheet.getRange(rangeAddress); range.values = data; range.format.autofitColumns(); return context.sync(); });`, }, ], invalid: [ { code: ` Excel.run(function (context) { var selectedRange = context.workbook.getSelectedRange(); selectedRange.load('address'); console.log('The selected range is: ' + selectedRange.address); });`, errors: [{ messageId: "callSync", data: { name: "selectedRange" } }], }, { code: ` Excel.run(function (context) { var selectedRange = context.workbook.getSelectedRange(); selectedRange.load('address'); console.log('The selected range is: ' + selectedRange.address); await context.sync(); });`, errors: [{ messageId: "callSync", data: { name: "selectedRange" } }], }, { code: ` Excel.run(function (context) { var selectedRange = context.workbook.getSelectedRange(); var selectedRange2 = context.workbook.getSelectedRange(); selectedRange.load('address'); selectedRange2.load('address'); console.log('The selected range is: ' + selectedRange.address); console.log('This should be the same: ' + selectedRange2.address); });`, errors: [ { messageId: "callSync", data: { name: "selectedRange" } }, { messageId: "callSync", data: { name: "selectedRange2" } }, ], }, { code: ` Excel.run(function (context) { var dataSheet = context.workbook.worksheets.getItemOrNullObject("Data"); if (dataSheet.isNullObject) { dataSheet.position = 1; } });`, errors: [{ messageId: "callSync", data: { name: "dataSheet" } }], }, { code: ` Excel.run(function (context) { var dataSheet = context.workbook.worksheets.getItemOrNullObject("Data"); if (true) { var pos = dataSheet.position; } await context.sync(); });`, errors: [{ messageId: "callSync", data: { name: "dataSheet" } }], }, { code: ` var range = context.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); range.format.fill.color == "yellow";`, errors: [{ messageId: "callSync", data: { name: "range" } }], }, { code: ` var range = context.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); var value = range.format.fill.color; value = range.format.fill.color;`, errors: [ { messageId: "callSync", data: { name: "range" } }, { messageId: "callSync", data: { name: "range" } }, ], }, ], });