/*
* 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.shared.proxy;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
/**
* Simple unit tests for {@link com.gwtplatform.mvp.shared.proxy.PlaceRequest}, including
* {@link com.gwtplatform.mvp.shared.proxy.PlaceRequest.Builder} tests.
*/
public class PlaceRequestTest {
@Test
public void shouldBuildEmptyRequest() {
// when
PlaceRequest request = new PlaceRequest.Builder().build();
// then
assertNotNull(request);
assertNull(request.getNameToken());
Set<String> emptySet = Collections.emptySet();
assertEquals(request.getParameterNames(), emptySet);
}
@Test
public void shouldBuildRequestWithSeveralParameters() {
// when
PlaceRequest request = new PlaceRequest.Builder().nameToken("nameToken").with("name1", "value1")
.with("name2", "value2").build();
// then
assertNotNull(request);
assertEquals("nameToken", request.getNameToken());
assertEquals("value1", request.getParameter("name1", ""));
assertEquals("value2", request.getParameter("name2", ""));
}
@Test
public void shouldBuildRequestWithParameterMap() {
// given
Map<String, String> existingParameters = new HashMap<>();
existingParameters.put("name1", "value1");
existingParameters.put("name2", "value2");
// when
PlaceRequest request = new PlaceRequest.Builder().nameToken("nameToken").with(existingParameters)
.with("name3", "value3").build();
// then
assertNotNull(request);
assertEquals("nameToken", request.getNameToken());
assertEquals("value1", request.getParameter("name1", ""));
assertEquals("value2", request.getParameter("name2", ""));
assertEquals("value3", request.getParameter("name3", ""));
}
@Test
public void shouldBuildRequestFromExistingRequest() {
// given
PlaceRequest request = new PlaceRequest.Builder().nameToken("nameToken").build();
// when
PlaceRequest copyOfRequest = new PlaceRequest.Builder(request).build();
// then
assertEquals(request, copyOfRequest);
}
@Test
public void testToString() {
// given
PlaceRequest request = new PlaceRequest.Builder()
.nameToken("nameToken")
.with("name1", "value1")
.with("name2", "value2")
.build();
// when
String result = request.toString();
// then
assertNotNull(result);
assertEquals("PlaceRequest(nameToken=nameToken, params={name1=value1, name2=value2})", result);
}
@Test
public void builderFromPlaceRequestShouldNotShareParams() {
// given
PlaceRequest request = new PlaceRequest.Builder()
.nameToken("nameToken")
.with("name1", "value1")
.with("name2", "value2")
.build();
PlaceRequest.Builder copyBuilder = new PlaceRequest.Builder(request);
// when
copyBuilder.with("name3", "value3").build();
// then
assertNull(request.getParameter("name3", null));
}
@Test
public void builderWithoutDoesRemoveParam() {
// given
PlaceRequest request = new PlaceRequest.Builder()
.nameToken("nameToken")
.with("name1", "value1")
.with("name2", "value2")
.build();
PlaceRequest.Builder copyBuilder = new PlaceRequest.Builder(request);
// when
PlaceRequest copy = copyBuilder.without("name2").build();
// then
assertNull(copy.getParameter("name2", null));
}
}