Package com.gwtplatform.mvp.client.gwt.mvp

Source Code of com.gwtplatform.mvp.client.gwt.mvp.MvpGwtTestInSuite

/**
* Copyright 2011 ArcBees Inc.
*
* 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 com.gwtplatform.mvp.client.gwt.mvp;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.logical.shared.AttachEvent;
import com.google.gwt.junit.client.GWTTestCase;
import com.gwtplatform.mvp.client.DelayedBindRegistry;
import com.gwtplatform.mvp.client.PopupViewCloseHandler;
import com.gwtplatform.mvp.shared.proxy.PlaceRequest;
import com.gwtplatform.mvp.shared.proxy.PlaceRequest.Builder;

/**
* Integration test for various components of GWTP's MVP module.
*/
public class MvpGwtTestInSuite extends GWTTestCase {
    GinjectorTestUtilGwt ginjector;
    MainPresenterTestUtilGwt presenter;

    @Override
    public String getModuleName() {
        return "com.gwtplatform.mvp.MvpGwtTest";
    }

    @Override
    protected void gwtSetUp() throws Exception {
        super.gwtSetUp();

        InstantiationCounterTestUtilGwt.resetCounter();
        ginjector = GWT.create(GinjectorTestUtilGwt.class);
        DelayedBindRegistry.bind(ginjector);
        presenter = ginjector.getMainPresenter().get();
    }

    /**
     * Verifies that the ginjector is created only once.
     */
    public void testShouldCreateOnlyOneGinjector() {
        ginjector.getPlaceManager().revealCurrentPlace();

        assertEquals(1, InstantiationCounterTestUtilGwt.getCounter());
    }

    public void testPopupViewCloseHandlerNotCalledWhenShown() {
        delayTestFinish(1000);
        runTest(new ScheduledCommand() {
            @Override
            public void execute() {
                PopupPresenterTestUtilGwt popupPresenter = ginjector.getPopupPresenter().get();
                popupPresenter.asWidget().addAttachHandler(new AttachEvent.Handler() {
                    @Override
                    public void onAttachOrDetach(AttachEvent event) {
                        if (event.isAttached()) {
                            finishTest();
                        } else {
                            fail();
                        }
                    }
                });

                ginjector.getPlaceManager().revealDefaultPlace();

                final PopupViewCloseHandler closeHandler = new PopupViewCloseHandler() {
                    @Override
                    public void onClose() {
                        fail();
                    }
                };

                Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                    @Override
                    public void execute() {
                        presenter.showPopup(closeHandler);
                    }
                });
            }
        });
    }

    public void testPopupViewCloseHandlerIsCalledWhenHidden() {
        delayTestFinish(1000);
        runTest(new ScheduledCommand() {
            @Override
            public void execute() {
                PopupPresenterTestUtilGwt popupPresenter = ginjector.getPopupPresenter().get();

                final PopupViewCloseHandler closeHandler = new PopupViewCloseHandler() {
                    @Override
                    public void onClose() {
                        finishTest();
                    }
                };

                popupPresenter.getView().setCloseHandler(closeHandler);
                popupPresenter.getView().hide();
             }
        });
    }

    /**
     * Verify multiple name tokens.
     */
    public void testMultipleTokens() {
        ginjector.getPlaceManager().revealDefaultPlace();

        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
            @Override
            public void execute() {
                assertTrue(ginjector.getMainPresenter().get().isVisible());
                assertFalse(ginjector.getAdminPresenter().get().isVisible());

                revealAdmin();
            }
        });

        delayTestFinish(1000);
    }

    private void revealAdmin() {
        PlaceRequest placeRequest = new Builder().nameToken("admin").build();
        ginjector.getPlaceManager().revealPlace(placeRequest);

        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
            @Override
            public void execute() {
                assertFalse(ginjector.getMainPresenter().get().isVisible());
                assertTrue(ginjector.getAdminPresenter().get().isVisible());

                revealDefaultPlace();
            }
        });
    }

    private void revealDefaultPlace() {
        ginjector.getPlaceManager().revealDefaultPlace();

        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
            @Override
            public void execute() {
                assertTrue(ginjector.getMainPresenter().get().isVisible());
                assertFalse(ginjector.getAdminPresenter().get().isVisible());

                revealSelfService();
            }
        });
    }

    private void revealSelfService() {
        PlaceRequest placeRequest = new Builder().nameToken("selfService").build();
        ginjector.getPlaceManager().revealPlace(placeRequest);

        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
            @Override
            public void execute() {
                assertFalse(ginjector.getMainPresenter().get().isVisible());
                assertTrue(ginjector.getAdminPresenter().get().isVisible());

                finishTest();
            }
        });
    }

    private void runTest(ScheduledCommand test) {
        Scheduler.get().scheduleDeferred(test);
    }
}
TOP

Related Classes of com.gwtplatform.mvp.client.gwt.mvp.MvpGwtTestInSuite

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.