/*
* Copyright 2015 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.guvnor.m2repo.client.upload;
import javax.enterprise.event.Event;
import org.guvnor.m2repo.client.event.M2RepoSearchEvent;
import org.gwtbootstrap3.client.shared.event.ModalHideEvent;
import org.gwtbootstrap3.client.shared.event.ModalHideHandler;
import org.gwtbootstrap3.client.ui.base.form.AbstractForm;
import org.gwtbootstrap3.client.ui.gwt.FormPanel;
import org.jboss.errai.ioc.client.container.SyncBeanManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.guvnor.m2repo.model.HTMLFileManagerFields.*;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class UploadFormTest {
@Mock
private UploadFormView view;
@Mock
private Event<M2RepoSearchEvent> searchEvent;
@Mock
private SyncBeanManager iocManager;
@Mock
private AbstractForm.SubmitCompleteEvent submitCompleteEvent;
@Mock
private ModalHideEvent hideEvent;
@Captor
private ArgumentCaptor<ModalHideHandler> captor;
private UploadFormPresenter uploadFormPresenter;
@Before
public void before() {
uploadFormPresenter = new UploadFormPresenter( view, searchEvent, iocManager );
verify( view ).addHideHandler( captor.capture() );
}
@Test
public void emptyFilenameTest() {
when( view.getFileName() ).thenReturn( null );
uploadFormPresenter.handleSubmit( new FormPanel.SubmitEvent() );
verify( view ).showSelectFileUploadWarning();
verify( view, never() ).showUploadingBusy();
}
@Test
public void nullFilenameTest() {
when( view.getFileName() ).thenReturn( "" );
uploadFormPresenter.handleSubmit( new FormPanel.SubmitEvent() );
verify( view ).showSelectFileUploadWarning();
verify( view, never() ).showUploadingBusy();
}
@Test
public void unsupportedFilenameTest() {
when( view.getFileName() ).thenReturn( "//!#@%^&*()\\23\\(0" );
uploadFormPresenter.handleSubmit( new FormPanel.SubmitEvent() );
verify( view ).showUnsupportedFileTypeWarning();
verify( view, never() ).showUploadingBusy();
}
@Test
public void correctFilenameTest() {
when( view.getFileName() ).thenReturn( "/home/user/something/pom.xml" );
uploadFormPresenter.handleSubmit( new FormPanel.SubmitEvent() );
verify( view ).showUploadingBusy();
}
@Test
public void uploadOkSubmitHandlerTest() {
when( submitCompleteEvent.getResults() ).thenReturn( UPLOAD_OK );
uploadFormPresenter.handleSubmitComplete( submitCompleteEvent );
verify( view ).hideUploadingBusy();
verify( view ).hideUploadingBusy();
verify( view ).hideGAVInputs();
verify( view ).showUploadedSuccessfullyMessage();
}
@Test
public void uploadMissingPomSubmitHandlerTest() {
when( submitCompleteEvent.getResults() ).thenReturn( UPLOAD_MISSING_POM );
uploadFormPresenter.handleSubmitComplete( submitCompleteEvent );
verify( view ).hideUploadingBusy();
verify( view ).showGAVInputs();
verify( view ).showInvalidJarNoPomWarning();
}
@Test
public void uploadUnableToParsePomSubmitHandlerTest() {
when( submitCompleteEvent.getResults() ).thenReturn( UPLOAD_UNABLE_TO_PARSE_POM );
uploadFormPresenter.handleSubmitComplete( submitCompleteEvent );
verify( view ).hideUploadingBusy();
verify( view ).hide();
verify( view ).showInvalidPomWarning();
}
@Test
public void uploadUnknownErrorTest() {
String errorText = "Some unknown error text.";
when( submitCompleteEvent.getResults() ).thenReturn( errorText );
uploadFormPresenter.handleSubmitComplete( submitCompleteEvent );
verify( view ).hideUploadingBusy();
view.hideGAVInputs();
view.hide();
view.showUploadFailedError( errorText );
}
@Test
public void isViewDestroyedDuringHidingTest() {
ModalHideHandler hideHandler = captor.getValue();
hideHandler.onHide( hideEvent );
verify( iocManager ).destroyBean( uploadFormPresenter );
}
}