diff --git a/intellij-plugin/hs-core/src/org/hyperskill/academy/learning/handlers/handlersUtils.kt b/intellij-plugin/hs-core/src/org/hyperskill/academy/learning/handlers/handlersUtils.kt index 27a10239b..75c2407d1 100644 --- a/intellij-plugin/hs-core/src/org/hyperskill/academy/learning/handlers/handlersUtils.kt +++ b/intellij-plugin/hs-core/src/org/hyperskill/academy/learning/handlers/handlersUtils.kt @@ -18,7 +18,7 @@ private fun isRefactoringForbidden(project: Project?, element: PsiElement?): Boo is PsiFile -> { // TODO: allow changing user created non-task files EDU-2556 val taskFile = element.originalFile.virtualFile.getTaskFile(project) - taskFile == null + taskFile != null } is PsiDirectory -> { diff --git a/intellij-plugin/hs-core/testSrc/org/hyperskill/academy/learning/handlers/HandlersUtilsTest.kt b/intellij-plugin/hs-core/testSrc/org/hyperskill/academy/learning/handlers/HandlersUtilsTest.kt new file mode 100644 index 000000000..7529e8806 --- /dev/null +++ b/intellij-plugin/hs-core/testSrc/org/hyperskill/academy/learning/handlers/HandlersUtilsTest.kt @@ -0,0 +1,46 @@ +package org.hyperskill.academy.learning.handlers + +import com.intellij.psi.PsiManager +import org.hyperskill.academy.learning.EduTestCase +import org.junit.Test + +class HandlersUtilsTest : EduTestCase() { + + @Test + fun `test rename is forbidden for task file`() { + courseWithFiles { + lesson { + eduTask { + taskFile("Task.kt") + } + } + } + val taskFile = findFile("lesson1/task1/Task.kt") + val psiFile = PsiManager.getInstance(project).findFile(taskFile)!! + + assertTrue("Renaming a task file should be forbidden", isRenameForbidden(project, psiFile)) + } + + @Test + fun `test rename is not forbidden for non-task file`() { + courseWithFiles { + lesson { + eduTask { + taskFile("Task.kt") + } + } + } + val nonTaskFile = myFixture.addFileToProject("lesson1/task1/non-task-file.kt", "").virtualFile + val psiFile = PsiManager.getInstance(project).findFile(nonTaskFile)!! + + assertFalse("Renaming a non-task file should be allowed", isRenameForbidden(project, psiFile)) + } + + @Test + fun `test rename is not forbidden outside of course project`() { + val file = myFixture.addFileToProject("some/file.kt", "").virtualFile + val psiFile = PsiManager.getInstance(project).findFile(file)!! + + assertFalse("Renaming a file outside a course project should be allowed", isRenameForbidden(project, psiFile)) + } +}