From cb1a6ae8f6abdd0d84453eec491844520d266993 Mon Sep 17 00:00:00 2001 From: Frank Weigel Date: Mon, 4 Nov 2024 21:51:27 +0100 Subject: [PATCH] test: Add fixtures for missing findings --- .../Positive_12/Component.js | 8 ++++++ .../Positive_12/manifest.json | 23 ++++++++++++++++++ .../rules/NoDeprecatedApi/NoDeprecatedApi.js | 11 +++++++-- .../linter/rules/renderer/9Control.js | 8 ++++++ .../snapshots/AsyncComponentFlags.ts.snap | Bin 2144 -> 2156 bytes .../lib/linter/rules/snapshots/renderer.ts.md | 8 ++++++ .../linter/rules/snapshots/renderer.ts.snap | Bin 3895 -> 3937 bytes 7 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/Component.js create mode 100644 test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/manifest.json create mode 100644 test/fixtures/linter/rules/renderer/9Control.js diff --git a/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/Component.js b/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/Component.js new file mode 100644 index 000000000..52a2b7140 --- /dev/null +++ b/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/Component.js @@ -0,0 +1,8 @@ +// Fixture description: +// Async flag (rootView only, no routing) in manifest.json +// No manifest: "json" configuration in metadata +sap.ui.define(["sap/ui/core/UIComponent"], function (UIComponent) { + "use strict"; + + return UIComponent.extend("mycomp.Component"); +}); diff --git a/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/manifest.json b/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/manifest.json new file mode 100644 index 000000000..d077969ee --- /dev/null +++ b/test/fixtures/linter/rules/AsyncComponentFlags/Positive_12/manifest.json @@ -0,0 +1,23 @@ +{ + "_version": "1.12.0", + + "sap.app": { + "id": "mycomp", + "type": "application", + "i18n": "i18n/i18n.properties", + "title": "{{appTitle}}", + "description": "{{appDescription}}", + "applicationVersion": { + "version": "1.0.0" + } + }, + + "sap.ui5": { + "rootView": { + "viewName": "mycomp.view.App", + "type": "XML", + "id": "app", + "async": true + } + } +} diff --git a/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js b/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js index 78b9a6b2b..2110d2ac5 100644 --- a/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js +++ b/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js @@ -1,7 +1,7 @@ sap.ui.define([ "sap/m/Button", "sap/m/DateTimeInput", "sap/base/util/includes", "sap/ui/Device", "sap/ui/core/library", "sap/ui/generic/app/navigation/service/NavigationHandler", - "sap/ui/table/Table", "sap/ui/table/plugins/MultiSelectionPlugin", "sap/ui/core/Configuration", "sap/m/library" -], function(Button, DateTimeInput, includes, Device, coreLib, NavigationHandler, Table, MultiSelectionPlugin, Configuration, mobileLib) { + "sap/ui/table/Table", "sap/ui/table/plugins/MultiSelectionPlugin", "sap/ui/core/Configuration", "sap/m/library", "sap/m/Bar" +], function(Button, DateTimeInput, includes, Device, coreLib, NavigationHandler, Table, MultiSelectionPlugin, Configuration, mobileLib, Bar) { var dateTimeInput = new DateTimeInput(); // Control is deprecated. A finding only appears for the module dependency, not for the usage. @@ -48,4 +48,11 @@ sap.ui.define([ const navigationHandler = new NavigationHandler({}); navigationHandler.storeInnerAppState({}); // Method "storeInnerAppState" is deprecated + + var bar = new Bar("P1Header", { + enableFlexBox: false, // Property "enableFlexBox" is deprecated + contentLeft: [], + contentRight: [] + }) + }); diff --git a/test/fixtures/linter/rules/renderer/9Control.js b/test/fixtures/linter/rules/renderer/9Control.js new file mode 100644 index 000000000..90443ab1e --- /dev/null +++ b/test/fixtures/linter/rules/renderer/9Control.js @@ -0,0 +1,8 @@ +sap.ui.define(["sap/m/Image", "sap/m/ImageRenderer"], function (Image, ImageRenderer) { + var LightBox = Image.extend("Lightbox", { + metadata: {}, + renderer: ImageRenderer.render + }); + + return Lightbox; +}); diff --git a/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.snap b/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.snap index b84ff36e3de3a8cb5114d6bf3ed75aeb61d0355f..6f5556395dcb9d17155358b2d143ab4740b83daf 100644 GIT binary patch literal 2156 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 diff --git a/test/lib/linter/rules/snapshots/renderer.ts.md b/test/lib/linter/rules/snapshots/renderer.ts.md index 8847f5ef1..350a65767 100644 --- a/test/lib/linter/rules/snapshots/renderer.ts.md +++ b/test/lib/linter/rules/snapshots/renderer.ts.md @@ -376,6 +376,14 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 0, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: '9Control.js', + messages: [], + warningCount: 0, + }, { coverageInfo: [], errorCount: 3, diff --git a/test/lib/linter/rules/snapshots/renderer.ts.snap b/test/lib/linter/rules/snapshots/renderer.ts.snap index 0476c26ced87758383ee5cddc6b15d5d92e9d76d..a2073558651e6e7f55a56ba94dc3b3256aa17ea8 100644 GIT binary patch literal 3937 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%0D)s3hX{1^z zjaHxEs3y&DglCAgUs!Qp8XCu{)H^JxrXgwapdt;*!%{$z{nlC17}k6PAzjml3@M!OAI-1TS zw$A3(n)3{nC%KSdshLo)#5#JGFc9i4PY1{QoM*f@jp+a085`r;QprjSs7Cm0LO%0! zb*?_2!?#YycHNZxQUA*0dAGLoyr+MZILj38lQey_)5qV00 literal 3895 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 z