/*
* 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.forms.crud.client.component;
import com.google.gwtmockito.GwtMock;
import junit.framework.TestCase;
import org.jboss.errai.ui.client.local.spi.TranslationService;
import org.junit.Before;
import org.kie.workbench.common.forms.crud.client.component.formDisplay.FormDisplayer;
import org.kie.workbench.common.forms.crud.client.component.formDisplay.FormDisplayer.FormDisplayerCallback;
import org.kie.workbench.common.forms.crud.client.component.formDisplay.IsFormView;
import org.kie.workbench.common.forms.crud.client.component.formDisplay.embedded.EmbeddedFormDisplayer;
import org.kie.workbench.common.forms.crud.client.component.formDisplay.modal.ModalFormDisplayer;
import org.kie.workbench.common.forms.crud.client.component.mock.CrudComponentMock;
import org.kie.workbench.common.forms.crud.client.resources.i18n.CrudComponentConstants;
import org.mockito.Mock;
import org.mockito.Mockito;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
public abstract class AbstractCrudComponentTest<MODEL, FORM_MODEL> extends TestCase {
@Mock
protected CrudComponent.CrudComponentView<MODEL, FORM_MODEL> view;
@Mock
protected TranslationService translationService;
@GwtMock
protected EmbeddedFormDisplayer embeddedFormDisplayer;
@GwtMock
protected ModalFormDisplayer modalFormDisplayer;
@Mock
private IsFormView<FORM_MODEL> formView;
@Mock
private FormDisplayerCallback callback;
@SuppressWarnings("unchecked")
protected CrudActionsHelper<MODEL> helper = Mockito.mock(CrudActionsHelper.class);
protected CrudComponentMock<MODEL, FORM_MODEL> crudComponent;
protected static final String NEW_INSTANCE_TITLE = "New Instance Title";
protected static final String EDIT_INSTANCE_TITLE = "Edit Instance Title";
@Before
public void init() {
when(translationService.getTranslation(CrudComponentConstants.CrudComponentViewImplNewInstanceTitle)).thenReturn(NEW_INSTANCE_TITLE);
when(translationService.getTranslation(CrudComponentConstants.CrudComponentViewImplEditInstanceTitle)).thenReturn(EDIT_INSTANCE_TITLE);
when(embeddedFormDisplayer.isEmbeddable()).thenReturn(true);
crudComponent = new CrudComponentMock<>(view,
embeddedFormDisplayer,
modalFormDisplayer,
translationService);
}
protected void initTest() {
verify(view).setPresenter(crudComponent);
crudComponent.init(getActionsHelper());
verify(view).initTableView(helper.getGridColumns(),
helper.getPageSize());
crudComponent.getCurrentPage();
verify(view).getCurrentPage();
}
protected void runFormTest() {
crudComponent.displayForm(formView,
callback);
if (getActionsHelper().showEmbeddedForms()) {
verify(view).addDisplayer(embeddedFormDisplayer);
verify(embeddedFormDisplayer).display(eq(NEW_INSTANCE_TITLE),
eq(getFormView()),
any(FormDisplayer.FormDisplayerCallback.class));
} else {
verify(modalFormDisplayer).display(eq(NEW_INSTANCE_TITLE),
eq(getFormView()),
any(FormDisplayer.FormDisplayerCallback.class));
}
crudComponent.restoreTable();
if (getActionsHelper().showEmbeddedForms()) {
verify(view).removeDisplayer(embeddedFormDisplayer);
}
}
protected CrudActionsHelper<MODEL> getActionsHelper() {
return helper;
}
protected IsFormView<FORM_MODEL> getFormView() {
return formView;
}
}