/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Emil Simeonov - initial API and implementation.
* Dimitar Donchev - initial API and implementation.
* Dimitar Tenev - initial API and implementation.
* Nevena Manova - initial API and implementation.
* Georgi Konstantinov - initial API and implementation.
*******************************************************************************/
package org.eclipse.wst.sse.sieditor.test.fwk.mvp.ui;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.eclipse.wst.sse.sieditor.fwk.mvp.ui.DefaultPresenter;
import org.eclipse.wst.sse.sieditor.fwk.mvp.ui.IView;
import org.eclipse.wst.sse.sieditor.fwk.mvp.ui.IViewListener;
import org.eclipse.wst.sse.sieditor.test.fwk.mvp.testsupport.Argument;
import org.eclipse.wst.sse.sieditor.test.fwk.mvp.testsupport.Arguments;
import org.eclipse.wst.sse.sieditor.test.fwk.mvp.testsupport.ui.AbstractPresenterTest;
import org.junit.Before;
import org.junit.Test;
/**
*
*/
public class DefaultPresenterTest extends AbstractPresenterTest {
private final class MockDefaultPresenter<T extends IView> extends
DefaultPresenter<IView> {
private boolean isHandleViewCreatedCalled;
private boolean isHandleViewDisposeCalled;
public MockDefaultPresenter(final IView view) {
super(view);
}
@Override
protected void handleViewCreated(final IView view) {
super.handleViewCreated(view);
isHandleViewCreatedCalled = true;
}
@Override
protected void handleViewDispose(final IView view) {
isHandleViewDisposeCalled = true;
super.handleViewDispose(view);
}
}
private MockDefaultPresenter<IView> mockDefaultPresenter;
private Argument<IViewListener> removeViewListenerArgument;
private IView view;
@Before
public void setUp() {
view = createMock(IView.class);
removeViewListenerArgument = new Argument<IViewListener>();
setUpViewExpectations(view);
}
@Test
public void testAttachViewListeners() {
replay(view);
mockDefaultPresenter = new MockDefaultPresenter<IView>(view);
verify(view);
}
@Test
public void testHandleViewCreated() {
replay(view);
mockDefaultPresenter = new MockDefaultPresenter<IView>(view);
fireViewCreated(view);
assertTrue(mockDefaultPresenter.isHandleViewCreatedCalled);
verify(view);
}
@Test
public void testHandleViewDispose() {
expect(
view.removeViewListener(Arguments.any(removeViewListenerArgument)))
.andReturn(true);
replay(view);
mockDefaultPresenter = new MockDefaultPresenter<IView>(view);
// addViewListenerArgument.getValue().viewDispose(view);
fireViewDisposed(view);
assertTrue(mockDefaultPresenter.isHandleViewDisposeCalled);
assertSame(viewListener.getValue(), removeViewListenerArgument
.getValue());
verify(view);
}
}