Package com.google.testing.testify.risk.frontend.client.view.impl

Source Code of com.google.testing.testify.risk.frontend.client.view.impl.ProjectSettingsViewImplTest

// Copyright 2010 Google Inc. All Rights Reseved.
//
// 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.google.testing.testify.risk.frontend.client.view.impl;

import com.google.gwt.user.client.ui.RootPanel;
import com.google.testing.testify.risk.frontend.client.TaClientTest;
import com.google.testing.testify.risk.frontend.client.view.ProjectSettingsView;
import com.google.testing.testify.risk.frontend.model.Project;
import com.google.testing.testify.risk.frontend.shared.rpc.ProjectRpcAsync;
import com.google.testing.testify.risk.frontend.shared.rpc.UserRpc.ProjectAccess;

import junit.framework.Assert;

import java.util.List;

/**
* Unit tests the ProjectSettingsViewImpl class.
*
* @author chrsmith@google.com (Chris Smith)
*/
public class ProjectSettingsViewImplTest extends TaClientTest {

  /**
   * Mock of the Presenter interface. Since this unit test touches UI it must run as a GWTTestcase,
   * and therefore cannot use EasyMock.
   */
  private class MockPresenter implements ProjectSettingsView.Presenter {

    public String lastProjectName;
    public String lastProjectDescription;
    public boolean lastPublicState;

    @Override
    public void onUpdateProjectInfoClicked(
            String projectName, String projectDescription,
            List<String> owners, List<String> editors, List<String> viewers,
            boolean isPublic) {
      lastProjectName = projectName;
      lastProjectDescription = projectDescription;
      lastPublicState = isPublic;
    }

    @Override
    public long getProjectId() {
      return 0;
    }

    @Override
    public void removeProject() {}

    @Override
    public ProjectRpcAsync getProjectService() {
      return null;
    }
  }

  // Verify that the UI is updated after setProjectSettings has been called.
  public void testProjectInformationIsDisplayedAfterBeingSet() {
    ProjectSettingsViewImpl view = new ProjectSettingsViewImpl();

    Assert.assertEquals("", view.projectName.getText());
    Assert.assertEquals("", view.projectDescription.getText());

    Project projectInformation = new Project();
    projectInformation.setProjectId(100L);
    projectInformation.setName("name");
    projectInformation.setDescription("desc");
    view.setProjectSettings(projectInformation);

    Assert.assertEquals("name", view.projectName.getText());
    Assert.assertEquals("desc", view.projectDescription.getText());
  }

  // Verify that the View's Presenter is notified when the update button is clicked.
  public void testPresenterNotifiedOnSave() {
    MockPresenter mockPresenter = new MockPresenter();

    Project project = new Project();
    project.addProjectOwner("test@example.com");

    ProjectSettingsViewImpl projectSettings = new ProjectSettingsViewImpl();
    projectSettings.setProjectSettings(project);
    projectSettings.setPresenter(mockPresenter);
    projectSettings.enableProjectEditing(ProjectAccess.OWNER_ACCESS);
    projectSettings.projectName.setText("name");
    projectSettings.projectDescription.setText("description");
    projectSettings.projectIsPublicCheckBox.setValue(true);

    // In order for events to fire you need to add the widget to the root panel.
    RootPanel.get().clear();
    RootPanel.get().add(projectSettings);
    projectSettings.updateProjectInfoButton.click();

    Assert.assertEquals("name", mockPresenter.lastProjectName);
    Assert.assertEquals("description", mockPresenter.lastProjectDescription);
    Assert.assertEquals(true, mockPresenter.lastPublicState);
  }
}
TOP

Related Classes of com.google.testing.testify.risk.frontend.client.view.impl.ProjectSettingsViewImplTest

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.
ww.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');