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

Commit

Permalink
work in progress: fixing test
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-sl-eng committed Jun 6, 2012
1 parent 7ab4dfb commit 5677884
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 49 deletions.
Expand Up @@ -20,8 +20,6 @@
*/
package org.zanata.webtrans.client.presenter;

import java.util.Date;

import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;
Expand All @@ -34,9 +32,6 @@
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.Timer;
import com.google.inject.Inject;

/**
Expand Down Expand Up @@ -67,7 +62,7 @@ public interface Display extends WidgetDisplay

void hide(boolean autoClosed);

void appendMessage(Severity severity, String message, String time);
void appendMessage(Severity severity, String message);

void setMessagesToKeep(int count);

Expand All @@ -78,29 +73,21 @@ public interface Display extends WidgetDisplay
int getMessageCount();

void setPopupTopRightCorner();

void show(int delayMillisToClose);
}

private HasNotificationLabel listener;

private static final int MESSAGE_TO_KEEP = 6;

private final Timer hidePopupTimer = new Timer()
{
@Override
public void run()
{
display.hide(true);
}
};

@Override
protected void onBind()
{
display.setModal(false);
display.setAutoHideEnabled(true);
display.setAnimationEnabled(true);
display.hide(true);
hidePopupTimer.cancel();
display.setMessagesToKeep(MESSAGE_TO_KEEP);
display.setPopupTopRightCorner();

Expand All @@ -110,7 +97,6 @@ protected void onBind()
public void onClick(ClickEvent event)
{
display.hide(true);
hidePopupTimer.cancel();
}
}));

Expand All @@ -121,7 +107,6 @@ public void onClick(ClickEvent event)
{
display.clearMessages();
display.hide(true);
hidePopupTimer.cancel();
listener.setNotificationLabel(display.getMessageCount(), Severity.Info);
}
}));
Expand All @@ -131,7 +116,7 @@ public void onClick(ClickEvent event)
@Override
public void onNotification(NotificationEvent event)
{
appendNotification(event.getSeverity(), event.getMessage(), DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_SHORT).format(new Date()));
appendNotification(event.getSeverity(), event.getMessage());
Log.info("Notification:" + event.getMessage());
listener.setNotificationLabel(display.getMessageCount(), event.getSeverity());
}
Expand All @@ -146,19 +131,17 @@ public void setNotificationListener(HasNotificationLabel listener)

private void showNotification()
{
hidePopupTimer.cancel();
display.show();
hidePopupTimer.schedule(2500);
display.show(2500);
}

public void showNotificationWithNoTimer()
{
display.show();
}

private void appendNotification(Severity severity, String msg, String time)
private void appendNotification(Severity severity, String msg)
{
display.appendMessage(severity, msg, time);
display.appendMessage(severity, msg);
if (severity == Severity.Error)
{
showNotificationWithNoTimer();
Expand Down
Expand Up @@ -20,15 +20,20 @@
*/
package org.zanata.webtrans.client.view;

import java.util.Date;

import org.zanata.webtrans.client.events.NotificationEvent.Severity;
import org.zanata.webtrans.client.presenter.NotificationPresenter;
import org.zanata.webtrans.client.resources.Resources;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
Expand Down Expand Up @@ -64,6 +69,15 @@ interface Styles extends CssResource
String timeLabel();
}

private final Timer hidePopupTimer = new Timer()
{
@Override
public void run()
{
hide(true);
}
};

@UiField
VerticalPanel messagePanel;

Expand Down Expand Up @@ -126,7 +140,7 @@ public int getWidth()
}

@Override
public void appendMessage(Severity severity, String msg, String time)
public void appendMessage(Severity severity, String msg)
{
HorizontalPanel panel = new HorizontalPanel();
Image severityImg;
Expand All @@ -145,7 +159,7 @@ else if (severity == Severity.Warning)
}
severityImg.addStyleName(style.image());

Label timeLabel = new Label("[" + time + "]");
Label timeLabel = new Label("[" + DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_SHORT).format(new Date()) + "]");
Label msgLabel = new Label(msg);

timeLabel.setStyleName(style.timeLabel());
Expand Down Expand Up @@ -181,4 +195,19 @@ public void setPopupTopRightCorner()
{
super.setPopupPosition(Window.getClientWidth() - (getWidth() + 5), 38);
}

@Override
public void hide(boolean autoClosed)
{
hidePopupTimer.cancel();
super.hide(autoClosed);
}

@Override
public void show(int delayMillisToClose)
{
hidePopupTimer.cancel();
super.show();
hidePopupTimer.schedule(delayMillisToClose);
}
}
Expand Up @@ -10,8 +10,6 @@
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import net.customware.gwt.presenter.client.EventBus;

import org.easymock.Capture;
Expand All @@ -37,6 +35,8 @@ public class NotificationPresenterTest
HasClickHandlers mockDismiss;
HasClickHandlers mockClear;

HasNotificationLabel mockListener;

Display mockDisplay;
EventBus mockEventBus;

Expand All @@ -53,7 +53,7 @@ public void createMocks()
mockClear = createMock(HasClickHandlers.class);
mockDisplay = createMock(NotificationPresenter.Display.class);
mockEventBus = createMock(EventBus.class);
// mockWindow = createMock(Window.class);
mockListener = createMock(HasNotificationLabel.class);

capturedDismissClickHandler = new Capture<ClickHandler>();
capturedClearClickHandler = new Capture<ClickHandler>();
Expand All @@ -73,26 +73,36 @@ void beforeMethod()

public void testOnBind()
{
mockListener.setNotificationLabel(0, Severity.Info);
expectLastCall().once();

replayAllMocks();
notificationPresenter.bind();
notificationPresenter.setNotificationListener(mockListener);
verifyAllMocks();
}

public void testErrorNotificationShows()
{
String testMessage = "error testing";

mockDisplay.appendMessage(Severity.Error, testMessage, "");
expectLastCall().once();

mockDisplay.setPopupTopRightCorner();
mockDisplay.appendMessage(Severity.Error, testMessage);
expectLastCall().once();

mockDisplay.show();
expectLastCall().once();


expect(mockDisplay.getMessageCount()).andReturn(1);

mockListener.setNotificationLabel(0, Severity.Info);
expectLastCall().once();

mockListener.setNotificationLabel(1, Severity.Error);
expectLastCall().once();

replayAllMocks();
notificationPresenter.bind();
notificationPresenter.setNotificationListener(mockListener);
NotificationEvent notification = new NotificationEvent(Severity.Error, testMessage);
capturedNotificationEventHandler.getValue().onNotification(notification);

Expand All @@ -105,20 +115,31 @@ public void testErrorMessageCount()

for (String msg : testMessages)
{
mockDisplay.appendMessage(Severity.Error, msg, "");
mockDisplay.appendMessage(Severity.Error, msg);
expectLastCall().once();
}

mockDisplay.setPopupTopRightCorner();
expectLastCall().times(testMessages.length);

mockDisplay.show();
expectLastCall().times(testMessages.length);
expectLastCall().anyTimes();

expect(mockDisplay.getMessageCount()).andReturn(testMessages.length);
for (int count = 0;count<testMessages.length;count++)
{
expect(mockDisplay.getMessageCount()).andReturn(count);
}


for (int count = 0;count<testMessages.length;count++)
{
mockListener.setNotificationLabel(count, Severity.Error);
expectLastCall().once();
}

mockListener.setNotificationLabel(0, Severity.Info);
expectLastCall().once();

replayAllMocks();
notificationPresenter.bind();
notificationPresenter.setNotificationListener(mockListener);
for (String msg : testMessages)
{
NotificationEvent notification = new NotificationEvent(Severity.Error, msg);
Expand All @@ -134,20 +155,42 @@ public void testErrorMessageCountExceedMax()

for (String msg : testMessages)
{
mockDisplay.appendMessage(Severity.Error, msg, "");
mockDisplay.appendMessage(Severity.Error, msg);
expectLastCall().once();
}

for (int count = 0;count<=MSG_TO_KEEP;count++)
{
// expect(mockDisplay.getMessageCount()).andReturn(count);
}

mockDisplay.setPopupTopRightCorner();
expectLastCall().times(testMessages.length);

expect(mockDisplay.getMessageCount()).andReturn(0);
expect(mockDisplay.getMessageCount()).andReturn(1);
expect(mockDisplay.getMessageCount()).andReturn(2);
expect(mockDisplay.getMessageCount()).andReturn(3);
expect(mockDisplay.getMessageCount()).andReturn(4);
expect(mockDisplay.getMessageCount()).andReturn(5);
expect(mockDisplay.getMessageCount()).andReturn(6);
expect(mockDisplay.getMessageCount()).andReturn(7);

for(int count = 0;count <= MSG_TO_KEEP;count++)
{
mockListener.setNotificationLabel(count, Severity.Error);
expectLastCall().once();
}

mockDisplay.show();
expectLastCall().times(testMessages.length);

expect(mockDisplay.getMessageCount()).andReturn(MSG_TO_KEEP);


mockListener.setNotificationLabel(0, Severity.Info);
expectLastCall().once();

replayAllMocks();
notificationPresenter.bind();
notificationPresenter.setNotificationListener(mockListener);

for (String msg : testMessages)
{
NotificationEvent notification = new NotificationEvent(Severity.Error, msg);
Expand Down Expand Up @@ -191,7 +234,7 @@ private <H extends EventHandler> void expectEventHandlerRegistration(Type<H> exp

private void expectPresenterSetupActions()
{
mockDisplay.setModal(true);
mockDisplay.setModal(false);
expectLastCall().once();
mockDisplay.setAutoHideEnabled(true);
expectLastCall().once();
Expand All @@ -201,6 +244,8 @@ private void expectPresenterSetupActions()
expectLastCall().once();
mockDisplay.setMessagesToKeep(MSG_TO_KEEP);
expectLastCall().once();
mockDisplay.setPopupTopRightCorner();
expectLastCall().once();
}

private void setupMockGetterReturnValues()
Expand All @@ -219,16 +264,16 @@ private void resetAllCaptures()

private void resetAllMocks()
{
reset(mockDisplay, mockEventBus, mockDismiss, mockClear);
reset(mockDisplay, mockEventBus, mockDismiss, mockClear, mockListener);
}

private void replayAllMocks()
{
replay(mockDisplay, mockEventBus, mockDismiss, mockClear);
replay(mockDisplay, mockEventBus, mockDismiss, mockClear, mockListener);
}

private void verifyAllMocks()
{
verify(mockDisplay, mockEventBus, mockDismiss, mockClear);
verify(mockDisplay, mockEventBus, mockDismiss, mockClear, mockListener);
}
}

0 comments on commit 5677884

Please sign in to comment.