|
3 | 3 | import com.intellij.openapi.actionSystem.AnAction; |
4 | 4 | import com.intellij.openapi.actionSystem.DefaultActionGroup; |
5 | 5 | import com.intellij.openapi.actionSystem.Separator; |
| 6 | +import com.intellij.openapi.application.ApplicationManager; |
| 7 | +import com.intellij.openapi.util.Computable; |
| 8 | +import com.intellij.ui.LayeredIcon; |
| 9 | +import fr.adrienbrault.idea.symfony2plugin.Settings; |
6 | 10 | import fr.adrienbrault.idea.symfony2plugin.profiler.ProfilerIndexInterface; |
7 | 11 | import fr.adrienbrault.idea.symfony2plugin.profiler.collector.DefaultDataCollectorInterface; |
8 | 12 | import fr.adrienbrault.idea.symfony2plugin.profiler.collector.MailCollectorInterface; |
9 | 13 | import fr.adrienbrault.idea.symfony2plugin.profiler.collector.TwigComponentDataCollectorInterface; |
10 | 14 | import fr.adrienbrault.idea.symfony2plugin.profiler.dict.MailMessage; |
11 | 15 | import fr.adrienbrault.idea.symfony2plugin.profiler.dict.ProfilerRequestInterface; |
12 | 16 | import fr.adrienbrault.idea.symfony2plugin.profiler.dict.ProfilerTwigComponent; |
| 17 | +import fr.adrienbrault.idea.symfony2plugin.profiler.widget.action.SymfonyProfilerWidgetActions; |
| 18 | +import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.TwigIncludeStubIndex; |
| 19 | +import fr.adrienbrault.idea.symfony2plugin.templating.path.TwigNamespaceSetting; |
| 20 | +import fr.adrienbrault.idea.symfony2plugin.templating.util.TwigUtil; |
13 | 21 | import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; |
14 | 22 | import org.jetbrains.annotations.NotNull; |
15 | 23 | import org.jetbrains.annotations.Nullable; |
16 | 24 |
|
| 25 | +import javax.swing.Icon; |
17 | 26 | import java.util.ArrayList; |
18 | 27 | import java.util.Collection; |
19 | 28 | import java.util.Collections; |
@@ -80,6 +89,30 @@ public String getUrlForRequest(@NotNull ProfilerRequestInterface request) { |
80 | 89 | assertTrue(actionTexts.indexOf("HighTraffic") < actionTexts.indexOf("LowTraffic")); |
81 | 90 | } |
82 | 91 |
|
| 92 | + public void testTemplateActionUsesResolvedTemplateFileIcon() { |
| 93 | + Settings.getInstance(getProject()).twigNamespaces.clear(); |
| 94 | + Settings.getInstance(getProject()).twigNamespaces.add( |
| 95 | + new TwigNamespaceSetting(TwigUtil.MAIN, "templates", true, TwigUtil.NamespaceType.ADD_PATH, true) |
| 96 | + ); |
| 97 | + |
| 98 | + myFixture.addFileToProject( |
| 99 | + "templates/page.html.twig", |
| 100 | + "{% include 'partial.html.twig' %}" |
| 101 | + ); |
| 102 | + myFixture.addFileToProject( |
| 103 | + "templates/partial.html.twig", |
| 104 | + "<div>Partial</div>" |
| 105 | + ); |
| 106 | + |
| 107 | + assertIndexContains(TwigIncludeStubIndex.KEY, "partial.html.twig"); |
| 108 | + |
| 109 | + Icon icon = ApplicationManager.getApplication().runReadAction((Computable<Icon>) () -> |
| 110 | + SymfonyProfilerWidgetActions.TemplateAction.getTemplateFileIcon(getProject(), "partial.html.twig") |
| 111 | + ); |
| 112 | + |
| 113 | + assertTrue("Profiler template action should use the decorated Twig file icon", icon instanceof LayeredIcon); |
| 114 | + } |
| 115 | + |
83 | 116 | private static class TestProfilerRequest implements ProfilerRequestInterface { |
84 | 117 | private final String hash; |
85 | 118 | private final String url; |
|
0 commit comments