Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
unit test and add cobertura exclusion
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Huang committed Sep 25, 2012
1 parent fc637af commit 495851c
Show file tree
Hide file tree
Showing 3 changed files with 242 additions and 0 deletions.
2 changes: 2 additions & 0 deletions zanata-war/pom.xml
Expand Up @@ -238,6 +238,8 @@
<exclude>**/client/ui/**</exclude>
<exclude>**/client/view/**</exclude>
<exclude>**/*OkapiUtil*</exclude>
<exclude>**/*DataProvider*</exclude>
<exclude>**/*SelectionModel*</exclude>
<!--below are some trivial classes(java bean) at the moment-->
<exclude>**/shared/auth/**</exclude>
<exclude>**/shared/model/**</exclude>
Expand Down
@@ -0,0 +1,132 @@
package org.zanata.webtrans.client.presenter;

import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.webtrans.client.editor.filter.TransFilterDisplay;
import org.zanata.webtrans.client.editor.filter.TransFilterPresenter;
import org.zanata.webtrans.client.events.PageChangeEvent;
import org.zanata.webtrans.client.events.PageCountChangeEvent;
import org.zanata.webtrans.client.ui.HasPager;
import org.zanata.webtrans.client.view.TransUnitNavigationDisplay;
import org.zanata.webtrans.client.view.TransUnitsTableDisplay;

import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;

import net.customware.gwt.presenter.client.EventBus;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
* @author Patrick Huang <a href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Test(groups = "unit-tests")
public class TranslationEditorPresenterTest
{
private TranslationEditorPresenter presenter;
@Mock
private TranslationEditorPresenter.Display display;
@Mock
private EventBus eventBus;
@Mock
private TransUnitNavigationPresenter transUnitNavigationPresenter;
@Mock
private TransFilterPresenter transFilterPresenter;
@Mock
private TransUnitsTablePresenter transUnitsTablePresenter;
@Mock
private TransFilterDisplay transFilterDisplay;
@Mock
private TransUnitNavigationDisplay transUnitNavigationDisplay;
@Mock
private TransUnitsTableDisplay transUnitsTableDisplay;
@Mock
private HasPager pageNavigation;

@BeforeMethod
public void setUp() throws Exception
{
MockitoAnnotations.initMocks(this);
presenter = new TranslationEditorPresenter(display, eventBus, transUnitNavigationPresenter, transFilterPresenter, transUnitsTablePresenter);

when(display.getPageNavigation()).thenReturn(pageNavigation);
}

@Test
@SuppressWarnings("unchecked")
public void onBind()
{
when(transFilterPresenter.getDisplay()).thenReturn(transFilterDisplay);
when(transUnitNavigationPresenter.getDisplay()).thenReturn(transUnitNavigationDisplay);
when(transUnitsTablePresenter.getDisplay()).thenReturn(transUnitsTableDisplay);

presenter.onBind();

verify(transFilterPresenter).bind();
verify(transFilterDisplay).asWidget();
verify(display).setFilterView(transFilterDisplay.asWidget());

verify(transUnitsTablePresenter).bind();
verify(transUnitsTableDisplay).asWidget();
verify(display).setEditorView(transUnitsTableDisplay.asWidget());

verify(transUnitNavigationPresenter).bind();
verify(transUnitNavigationDisplay).asWidget();
verify(display).setTransUnitNavigation(transUnitNavigationDisplay.asWidget());

verify(eventBus).addHandler(PageChangeEvent.TYPE, presenter);
verify(eventBus).addHandler(PageChangeEvent.TYPE, presenter);

// test page navigation value change handler
ArgumentCaptor<ValueChangeHandler> pageValueChangeHandlerCaptor = ArgumentCaptor.forClass(ValueChangeHandler.class);
verify(pageNavigation).addValueChangeHandler(pageValueChangeHandlerCaptor.capture());
ValueChangeHandler valueChangeHandler = pageValueChangeHandlerCaptor.getValue();
valueChangeHandler.onValueChange(createMockEventWithValue(1));
verify(transUnitsTablePresenter).goToPage(1);
}

private static ValueChangeEvent<Integer> createMockEventWithValue(int value)
{
@SuppressWarnings("unchecked")
ValueChangeEvent<Integer> valueChangeEvent = Mockito.mock(ValueChangeEvent.class);
when(valueChangeEvent.getValue()).thenReturn(value);
return valueChangeEvent;
}

@Test
public void testOnPageChange() throws Exception
{
PageChangeEvent event = new PageChangeEvent(2);
presenter.onPageChange(event);

verify(pageNavigation).setValue(event.getPageNumber());
}

@Test
public void testOnPageCountChange() throws Exception
{
presenter.onPageCountChange(new PageCountChangeEvent(99));

verify(pageNavigation).setPageCount(99);
}

@Test
public void testIsTransFilterFocused() throws Exception
{
presenter.isTransFilterFocused();

verify(transFilterPresenter).isFocused();
}

@Test
public void testOpenEditorOnSelectedRow() throws Exception
{
presenter.openEditorOnSelectedRow();

verify(transUnitsTablePresenter).startEditing();
}
}
@@ -0,0 +1,108 @@
package org.zanata.webtrans.client.service;

import org.hamcrest.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.model.TestFixture;
import org.zanata.webtrans.client.events.TransUnitEditEvent;
import org.zanata.webtrans.client.ui.HasManageUserPanel;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.model.Person;
import org.zanata.webtrans.shared.model.PersonId;
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.UserPanelSessionItem;
import org.zanata.webtrans.shared.rpc.HasTransUnitEditData;

import net.customware.gwt.presenter.client.EventBus;
import static org.hamcrest.MatcherAssert.*;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
* @author Patrick Huang <a href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Test(groups = "unit-tests")
public class UserSessionServiceTest
{
private UserSessionService service;
@Mock
private EventBus eventBus;
@Mock
private DistinctColor distinctColor;
@Mock
private HasManageUserPanel panel;
@Mock
private HasTransUnitEditData hasTransUnitData;

@BeforeMethod
public void setUp() throws Exception
{
MockitoAnnotations.initMocks(this);
service = new UserSessionService(eventBus, distinctColor);

verify(eventBus).addHandler(TransUnitEditEvent.getType(), service);
}

private static Person person()
{
return new Person(new PersonId("pid"), "name", null);
}

private static EditorClientId editorClientId()
{
return new EditorClientId("session", 1);
}

@Test
public void canAddUser()
{
EditorClientId editorClientId = editorClientId();
UserPanelSessionItem sessionItem = new UserPanelSessionItem(panel, person());

service.addUser(editorClientId, sessionItem);

assertThat(service.getUserSessionMap(), Matchers.hasEntry(editorClientId, sessionItem));
}

@Test
public void onTransUnitEditEvent()
{
// Given:
EditorClientId editorClientId = editorClientId();
UserPanelSessionItem sessionItem = new UserPanelSessionItem(panel, person());
TransUnit transUnit = TestFixture.makeTransUnit(2);
service.addUser(editorClientId, sessionItem);
when(hasTransUnitData.getEditorClientId()).thenReturn(editorClientId);
when(hasTransUnitData.getSelectedTransUnit()).thenReturn(transUnit);

// When:
service.onTransUnitEdit(new TransUnitEditEvent(hasTransUnitData));

// Then:
assertThat(service.getUserPanel(editorClientId).getSelectedTransUnit(), Matchers.sameInstance(transUnit));
assertThat(service.getUserSessionMap().get(editorClientId).getSelectedTransUnit(), Matchers.sameInstance(transUnit));
}

@Test
public void canRemoveUser()
{
EditorClientId editorClientId = editorClientId();
UserPanelSessionItem sessionItem = new UserPanelSessionItem(panel, person());
service.addUser(editorClientId, sessionItem);
service.removeUser(editorClientId);

assertThat(service.getUserSessionMap().size(), Matchers.is(0));
verify(distinctColor).releaseColor(editorClientId);
}

@Test
public void canGetColor()
{
EditorClientId editorClientId = editorClientId();
service.getColor(editorClientId);
verify(distinctColor).getOrCreateColor(editorClientId);
}

}

0 comments on commit 495851c

Please sign in to comment.