74a986cafb0728bb8c276998a1392323ae0c8ba7
[idea/community.git] / java / java-tests / testSrc / com / intellij / codeInspection / SingleInspectionProfilePanelTest.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.codeInspection;
17
18 import com.intellij.codeInspection.ex.InspectionProfileImpl;
19 import com.intellij.codeInspection.ex.InspectionProfileTest;
20 import com.intellij.codeInspection.ex.LocalInspectionToolWrapper;
21 import com.intellij.codeInspection.javaDoc.JavaDocLocalInspection;
22 import com.intellij.openapi.project.Project;
23 import com.intellij.openapi.project.ProjectManager;
24 import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
25 import com.intellij.profile.codeInspection.ProjectInspectionProfileManager;
26 import com.intellij.profile.codeInspection.ui.SingleInspectionProfilePanel;
27 import com.intellij.testFramework.LightIdeaTestCase;
28 import org.jetbrains.annotations.NotNull;
29
30 /**
31  * @author Dmitry Avdeev
32  *         Date: 5/10/12
33  */
34 public class SingleInspectionProfilePanelTest extends LightIdeaTestCase {
35   // see IDEA-85700
36   public void testSettingsModification() throws Exception {
37     Project project = ProjectManager.getInstance().getDefaultProject();
38     ProjectInspectionProfileManager profileManager = ProjectInspectionProfileManager.getInstanceImpl(project);
39     InspectionProfileImpl profile = (InspectionProfileImpl)profileManager.getProfile(PROFILE);
40     profile.initInspectionTools(project);
41
42     InspectionProfileImpl model = (InspectionProfileImpl)profile.getModifiableModel();
43     SingleInspectionProfilePanel panel = new SingleInspectionProfilePanel(profileManager, PROFILE, model, profile);
44     panel.setVisible(true);
45     panel.reset();
46
47     JavaDocLocalInspection tool = getInspection(model);
48     assertEquals("", tool.myAdditionalJavadocTags);
49     tool.myAdditionalJavadocTags = "foo";
50     model.setModified(true);
51     panel.apply();
52     assertEquals(1, InspectionProfileTest.countInitializedTools(model));
53
54     assertEquals("foo", getInspection(profile).myAdditionalJavadocTags);
55     panel.disposeUI();
56   }
57
58   public void testModifyInstantiatedTool() throws Exception {
59     Project project = ProjectManager.getInstance().getDefaultProject();
60     ProjectInspectionProfileManager profileManager = ProjectInspectionProfileManager.getInstanceImpl(project);
61     InspectionProfileImpl profile = (InspectionProfileImpl)profileManager.getProfile(PROFILE);
62     profile.initInspectionTools(project);
63
64     JavaDocLocalInspection originalTool = getInspection(profile);
65     originalTool.myAdditionalJavadocTags = "foo";
66
67     InspectionProfileImpl model = (InspectionProfileImpl)profile.getModifiableModel();
68
69     SingleInspectionProfilePanel panel = new SingleInspectionProfilePanel(profileManager, PROFILE, model, profile);
70     panel.setVisible(true);
71     panel.reset();
72     assertEquals(InspectionProfileTest.getInitializedTools(model).toString(), 1, InspectionProfileTest.countInitializedTools(model));
73
74     JavaDocLocalInspection copyTool = getInspection(model);
75     copyTool.myAdditionalJavadocTags = "bar";
76
77     model.setModified(true);
78     panel.apply();
79     assertEquals(1, InspectionProfileTest.countInitializedTools(model));
80
81     assertEquals("bar", getInspection(profile).myAdditionalJavadocTags);
82     panel.disposeUI();
83   }
84
85   public void testDoNotChangeSettingsOnCancel() throws Exception {
86     Project project = ProjectManager.getInstance().getDefaultProject();
87     InspectionProjectProfileManager profileManager = InspectionProjectProfileManager.getInstance(project);
88     InspectionProfileImpl profile = (InspectionProfileImpl)profileManager.getProfile(PROFILE);
89     profile.initInspectionTools(project);
90
91     JavaDocLocalInspection originalTool = getInspection(profile);
92     assertEquals("", originalTool.myAdditionalJavadocTags);
93
94     InspectionProfileImpl model = (InspectionProfileImpl)profile.getModifiableModel();
95     JavaDocLocalInspection copyTool = getInspection(model);
96     copyTool.myAdditionalJavadocTags = "foo";
97     // this change IS NOT COMMITTED
98
99     assertEquals("", getInspection(profile).myAdditionalJavadocTags);
100   }
101
102   private JavaDocLocalInspection getInspection(InspectionProfileImpl profile) {
103     LocalInspectionToolWrapper original = (LocalInspectionToolWrapper)profile.getInspectionTool(myInspection.getShortName(), getProject());
104     assert original != null;
105     return (JavaDocLocalInspection)original.getTool();
106   }
107
108   @Override
109   public void setUp() throws Exception {
110     InspectionProfileImpl.INIT_INSPECTIONS = true;
111     super.setUp();
112   }
113
114   @Override
115   public void tearDown() throws Exception {
116     InspectionProfileImpl.INIT_INSPECTIONS = false;
117     super.tearDown();
118   }
119
120   private final JavaDocLocalInspection myInspection = new JavaDocLocalInspection();
121
122   @NotNull
123   @Override
124   protected LocalInspectionTool[] configureLocalInspectionTools() {
125     return new LocalInspectionTool[] {myInspection};
126   }
127 }