package org.realityforge.gwt.sample.contacts.client.activity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import java.util.ArrayList;
import java.util.List;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.realityforge.gwt.sample.contacts.client.data_type.ContactDetailsDTO;
import org.realityforge.gwt.sample.contacts.client.data_type.ContactDetailsDTOFactory;
import org.realityforge.gwt.sample.contacts.client.service.ContactsAsyncCallback;
import org.realityforge.gwt.sample.contacts.client.service.ContactsAsyncErrorCallback;
import org.realityforge.gwt.sample.contacts.client.service.ContactsService;
import org.realityforge.gwt.sample.contacts.client.view.ListContactsView;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
import static org.testng.Assert.*;
@SuppressWarnings("unchecked")
public class ExampleJRETest
{
private ListContactsActivity _listContactsActivity;
private ContactsService _mockRpcService;
private EventBus _mockEventBus;
private ListContactsView _mockViewList;
private List<ContactDetailsDTO> _contactDetails;
@BeforeMethod
public void setUp()
{
_mockRpcService = mock( ContactsService.class );
_mockEventBus = new SimpleEventBus();
_mockViewList = mock( ListContactsView.class );
_listContactsActivity = new ListContactsActivity( _mockRpcService, _mockEventBus, _mockViewList );
}
@Test
public void testDeleteButton()
{
_contactDetails = new ArrayList<ContactDetailsDTO>();
_contactDetails.add( newContactDetails( "0", "type1", "1_contact" ) );
_contactDetails.add( newContactDetails( "1", "type2", "2_contact" ) );
_listContactsActivity.setContactDetails( _contactDetails );
doAnswer( new Answer<Void>()
{
@Override
public Void answer( final InvocationOnMock invocation )
throws Throwable
{
final ContactsAsyncCallback callback = (ContactsAsyncCallback) invocation.getArguments()[ 1 ];
callback.onSuccess( null );
return null;
}
} ).when( _mockRpcService ).deleteContacts( anyList(),
any( ContactsAsyncCallback.class ),
any( ContactsAsyncErrorCallback.class ) );
doAnswer( new Answer<Void>()
{
@Override
public Void answer( final InvocationOnMock invocation )
throws Throwable
{
final ArrayList<ContactDetailsDTO> results = new ArrayList<ContactDetailsDTO>();
results.add( newContactDetails( "0", "type1", "1_contact" ) );
final ContactsAsyncCallback callback = (ContactsAsyncCallback) invocation.getArguments()[ 0 ];
callback.onSuccess( results );
return null;
}
} ).
when( _mockRpcService ).
getContactDetails( any( ContactsAsyncCallback.class ), any( ContactsAsyncErrorCallback.class ) );
_listContactsActivity.onDeleteButtonClicked();
verify( _mockRpcService );
assertEquals( 1, _listContactsActivity.getContactDetails().size() );
}
private ContactDetailsDTO newContactDetails( final String id, final String type, final String displayName )
{
return ContactDetailsDTOFactory.create( id, type, displayName );
}
}