From 8edb2af71678a213644eb12f5dcd2f9c63fd485c Mon Sep 17 00:00:00 2001 From: Manodnya Bhoite Date: Thu, 2 Jan 2025 12:32:30 -0800 Subject: [PATCH] Hide notifications is plugin mentioned in the conditions is not installed --- .../core/notifications/RulesEngine.kt | 1 + .../NotificationFormatUtilsTest.kt | 20 ++++++++++++++ .../NotificationFormatUtilsTestCases.kt | 26 +++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/notifications/RulesEngine.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/notifications/RulesEngine.kt index bfb54952481..4f5c174409e 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/notifications/RulesEngine.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/notifications/RulesEngine.kt @@ -56,6 +56,7 @@ object RulesEngine { if (notificationExtension.isNullOrEmpty()) return true val extensionsToBeChecked = notificationExtension.map { it.id } val pluginVersions = actualPluginVersions.filterKeys { extensionsToBeChecked.contains(it) } + if (pluginVersions.isEmpty()) return false return notificationExtension.all { extension -> val actualVersion = pluginVersions[extension.id] if (actualVersion == null) { diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTest.kt index 35311f21f4f..74a7da03715 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTest.kt @@ -36,6 +36,7 @@ class NotificationFormatUtilsTest { val projectRule = ProjectRule() private lateinit var mockSystemDetails: SystemDetails + private lateinit var mockSystemDetailsWithNoPlugin: SystemDetails private lateinit var exampleNotification: InputStream @BeforeEach @@ -53,6 +54,18 @@ class NotificationFormatUtilsTest { ) ) + mockSystemDetailsWithNoPlugin = SystemDetails( + computeType = "Local", + computeArchitecture = "x86_64", + osType = "Linux", + osVersion = "5.4.0", + ideType = "IC", + ideVersion = "2023.1", + pluginVersions = mapOf( + "aws.toolkit" to "1.0", + ) + ) + exampleNotification = javaClass.getResource("/exampleNotification2.json")?.let { Paths.get(it.toURI()).takeIf { f -> f.exists() } }?.inputStream() ?: throw RuntimeException("Test not found") @@ -98,6 +111,13 @@ class NotificationFormatUtilsTest { } } + @Test + fun `If plugin is not present, notification is not shown`() { + every { getCurrentSystemAndConnectionDetails() } returns mockSystemDetailsWithNoPlugin + val shouldShow = RulesEngine.displayNotification(projectRule.project, pluginNotPresentData) + assertThat(shouldShow).isFalse + } + @ParameterizedTest @MethodSource("validNotifications") fun `The notification is shown`(notification: String, expectedData: NotificationData) { diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTestCases.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTestCases.kt index 9a39843b3f6..f033474f857 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTestCases.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/notifications/NotificationFormatUtilsTestCases.kt @@ -360,3 +360,29 @@ val invalidIdeTypeAndVersionData = NotificationData( ) ) ) + +val pluginNotPresentData = NotificationData( + id = "example_id_12344", + schedule = NotificationSchedule(type = "StartUp"), + severity = "Critical", + condition = NotificationDisplayCondition( + compute = null, + os = null, + ide = null, + extension = mutableListOf( + ExtensionType( + "amazon.q", + version = NotificationExpression.NotEqualsCondition("1.3334") + ) + ), + authx = null + + ), + actions = emptyList(), + content = NotificationContentDescriptionLocale( + NotificationContentDescription( + title = "Look at this!", + description = "Some bug is there" + ) + ) +)