// Copyright 2012 Google Inc. All Rights Reserved.
//
// 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.collide.client.testing;
import com.google.collide.client.AppContext;
import com.google.collide.client.TestHelper;
import com.google.collide.client.util.Elements;
import com.google.collide.dto.ProjectInfo;
import com.google.collide.dto.client.DtoClientImpls.ProjectInfoImpl;
import com.google.collide.json.client.JsoArray;
import com.google.collide.json.client.JsoStringMap;
import elemental.html.DivElement;
/**
* A base class for tests exploiting Collide's Place infrastructure.
*/
public abstract class PlaceGwtTestCase extends CommunicationGwtTestCase {
private static final String PROJECT_ID = "projectid";
protected static final String WS_ID = "1234";
private boolean initialized = false;
/**
* This gwtSetUp builds on the super class's, by setting the expectations
* needed to get the places installed, then installing the places, and thus
* draining those expectations. We do assert that the drainage is complete
* here.
*/
@Override
public void gwtSetUp() throws Exception {
super.gwtSetUp();
if (!initialized) {
initialized = true;
// some of the place handlers assume there's an element with the GWT_ROOT
// id... which is true in the app, but not in tests. Make one:
if (Elements.getElementById(AppContext.GWT_ROOT) == null) {
DivElement gwt_root = Elements.createDivElement();
gwt_root.setId(AppContext.GWT_ROOT);
Elements.getBody().appendChild(gwt_root);
}
}
// expectations for setupPlaces()...
MockFrontendApi frontend = context.getFrontendApi();
JsoArray<ProjectInfo> projects = JsoArray.create();
projects.add(
ProjectInfoImpl.make().setId(PROJECT_ID).setName("projectname").setSummary("summary"));
JsoStringMap<String> templates = JsoStringMap.create(); // no templates
// and do the setupPlaces, which will also drain those expectations. Unlike
// EasyMock, we don't have any record/replay modality to mess with... so the
// user's test expectations can be "recorded" even after this.
TestHelper.setupPlaces(context);
context.assertIsDrained();
}
}