/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.screens.projecteditor.client.forms.dependencies;
import java.util.HashSet;
import org.guvnor.common.services.project.model.Dependencies;
import org.guvnor.common.services.project.model.Dependency;
import org.guvnor.common.services.project.model.POM;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.services.shared.dependencies.EnhancedDependencies;
import org.kie.workbench.common.services.shared.dependencies.EnhancedDependency;
import org.kie.workbench.common.services.shared.dependencies.NormalEnhancedDependency;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.uberfire.client.callbacks.Callback;
import static org.junit.Assert.*;
import static org.kie.workbench.common.screens.projecteditor.client.forms.dependencies.Util.makeDependency;
import static org.mockito.Mockito.*;
@RunWith( MockitoJUnitRunner.class )
public class EnhancedDependenciesManager_onEchancedDependenciesLoadedTest {
@Mock
private DependencyLoader dependencyLoader;
@InjectMocks
private EnhancedDependenciesManager enhancedDependenciesManager;
private Dependencies originalSetOfDependencies;
private EnhancedDependencies shownDependencies;
private Dependency junit;
@Before
public void setUp() throws Exception {
shownDependencies = null;
originalSetOfDependencies = new Dependencies();
junit = makeDependency( "org.junit", "junit", "1.0" );
originalSetOfDependencies.add( junit );
originalSetOfDependencies.add( makeDependency( "org.drools", "drools-core", "4.0" ) );
final POM pom = new POM();
pom.setDependencies( originalSetOfDependencies );
enhancedDependenciesManager.init( pom,
new Callback<EnhancedDependencies>() {
@Override
public void callback( final EnhancedDependencies result ) {
shownDependencies = result;
}
} );
}
@Test
public void testShowEmpty() throws Exception {
originalSetOfDependencies.clear();
enhancedDependenciesManager.onEnhancedDependenciesUpdated( new EnhancedDependencies() );
assertNotNull( shownDependencies );
}
@Test
public void testAdd() throws Exception {
final Dependency dependency = makeDependency( "artifactId", "groupId", "1.0" );
enhancedDependenciesManager.addNew( dependency );
final EnhancedDependencies loadedEnhancedDependencies = new EnhancedDependencies();
loadedEnhancedDependencies.add( new NormalEnhancedDependency( dependency,
new HashSet<String>() ) );
enhancedDependenciesManager.onEnhancedDependenciesUpdated( loadedEnhancedDependencies );
assertEquals( 3, originalSetOfDependencies.size() );
assertTrue( originalSetOfDependencies.contains( dependency ) );
assertEquals( 1, shownDependencies.size() );
assertTrue( shownDependencies.asList().get( 0 ).getDependency().isGAVEqual( dependency ) );
}
@Test
public void testEditingEnhancedUpdatesOriginal() throws Exception {
final EnhancedDependencies loadedEnhancedDependencies = new EnhancedDependencies();
loadedEnhancedDependencies.add( new NormalEnhancedDependency( makeDependency( "org.junit", "junit", "1.0" ),
new HashSet<String>() ) );
enhancedDependenciesManager.onEnhancedDependenciesUpdated( loadedEnhancedDependencies );
final EnhancedDependency enhancedDependency = shownDependencies.asList().get( 0 );
enhancedDependency.getDependency().setArtifactId( "newId" );
assertEquals( "newId", junit.getArtifactId() );
}
@Test
public void testDelete() throws Exception {
enhancedDependenciesManager.delete( new NormalEnhancedDependency( makeDependency( "org.junit", "junit", "1.0" ),
new HashSet<String>() ) );
verify( dependencyLoader ).load();
// Queue is empty so loader returns with nothing.
enhancedDependenciesManager.onEnhancedDependenciesUpdated( new EnhancedDependencies() );
assertTrue( shownDependencies.isEmpty() );
assertFalse( originalSetOfDependencies.contains( junit ) );
}
}