Files
openide/java/idea-ui/testSrc/com/intellij/facet/FacetLibrariesValidatorTest.java
Tagir Valeev 9c5d02e246 [java-ui] Remove MockFacetLibrariesValidatorDescription.java (redundant)
GitOrigin-RevId: cdcaf76bdb7aac4b5197ac20101c475f03b9a086
2024-06-20 16:25:34 +00:00

121 lines
4.5 KiB
Java

// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.facet;
import com.intellij.facet.impl.ui.libraries.FacetLibrariesValidatorImpl;
import com.intellij.facet.mock.MockFacet;
import com.intellij.facet.mock.MockFacetEditorContext;
import com.intellij.facet.mock.MockFacetValidatorsManager;
import com.intellij.facet.ui.FacetEditorContext;
import com.intellij.facet.ui.FacetEditorsFactory;
import com.intellij.facet.ui.libraries.FacetLibrariesValidator;
import com.intellij.facet.ui.libraries.FacetLibrariesValidatorDescription;
import com.intellij.facet.ui.libraries.LibraryInfo;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.project.IntelliJProjectConfiguration;
import com.intellij.testFramework.IndexingTestUtil;
import com.intellij.testFramework.PsiTestUtil;
import org.jetbrains.annotations.NonNls;
import java.util.Arrays;
import java.util.List;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
public class FacetLibrariesValidatorTest extends FacetTestCase {
private MockFacetValidatorsManager myValidatorsManager;
private static final LibraryInfo
FAST_UTIL = new LibraryInfo("fastutil.jar", (String)null, null, null, "it.unimi.dsi.fastutil.objects.ObjectOpenHashSet");
private static final LibraryInfo JUNIT = new LibraryInfo("junit.jar", (String)null, null, null, "junit.framework.TestCase");
private VirtualFile myFastUtilJar;
private VirtualFile myJUnitJar;
@NonNls private static final String LIB_NAME = "lib";
private MockFacet myFacet;
private FacetLibrariesValidatorDescription myDescription;
@Override
protected void setUp() throws Exception {
super.setUp();
myValidatorsManager = new MockFacetValidatorsManager();
myFacet = createFacet();
myFastUtilJar = IntelliJProjectConfiguration.getJarFromSingleJarProjectLibrary("fastutil-min");
myJUnitJar = IntelliJProjectConfiguration.getJarFromSingleJarProjectLibrary("JUnit3");
myDescription = new FacetLibrariesValidatorDescription(LIB_NAME);
}
@Override
protected void tearDown() throws Exception {
myValidatorsManager = null;
myFacet = null;
myDescription = null;
super.tearDown();
}
private FacetLibrariesValidatorImpl createValidator(final LibraryInfo... infos) {
final FacetEditorContext editorContext = new MockFacetEditorContext(myFacet);
final FacetEditorsFactory factory = FacetEditorsFactory.getInstance();
FacetLibrariesValidator validator = factory.createLibrariesValidator(infos, myDescription, editorContext, myValidatorsManager);
myValidatorsManager.registerValidator(validator);
myValidatorsManager.validate();
return (FacetLibrariesValidatorImpl)validator;
}
public void testEmptyLibrariesList() {
createValidator();
assertNoErrors();
}
public void testShowError() {
final FacetLibrariesValidator validator = createValidator(FAST_UTIL);
assertError("fastutil.jar");
validator.setRequiredLibraries(LibraryInfo.EMPTY_ARRAY);
assertNoErrors();
validator.setRequiredLibraries(new LibraryInfo[]{JUNIT});
assertError("junit.jar");
}
public void testAddJars() {
final FacetLibrariesValidatorImpl validator = createValidator(FAST_UTIL, JUNIT);
assertError("");
ModuleRootModificationUtil.addModuleLibrary(myModule, myFastUtilJar.getUrl());
IndexingTestUtil.waitUntilIndexesAreReady(myProject);
myValidatorsManager.validate();
assertError("junit");
ModuleRootModificationUtil.addModuleLibrary(myModule, myJUnitJar.getUrl());
IndexingTestUtil.waitUntilIndexesAreReady(myProject);
myValidatorsManager.validate();
validator.onFacetInitialized(createFacet());
final List<VirtualFile> classpath = Arrays.asList(OrderEnumerator.orderEntries(myModule).getClassesRoots());
assertTrue(classpath.contains(myFastUtilJar));
assertTrue(classpath.contains(myJUnitJar));
}
public void testUnresolvedLibrary() {
createValidator(FAST_UTIL);
assertError("fastutil.jar");
}
public void testLibrary() {
PsiTestUtil.addProjectLibrary(myModule, "lib1", myFastUtilJar, myJUnitJar);
createValidator(FAST_UTIL, JUNIT);
assertNoErrors();
}
private void assertError(@NonNls String s) {
assertThat(myValidatorsManager.getErrorMessage()).contains(s);
}
private void assertNoErrors() {
assertSame(null, myValidatorsManager.getErrorMessage());
}
}