/** * Copyright 2015 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.arcbees.gaestudio.client.formatters; import java.util.ArrayList; import javax.inject.Inject; import org.jukito.JukitoRunner; import org.junit.Test; import org.junit.runner.RunWith; import com.arcbees.gaestudio.shared.QueryFilterOperator; import com.arcbees.gaestudio.shared.dto.query.QueryDto; import com.arcbees.gaestudio.shared.dto.query.QueryFilterDto; import com.arcbees.gaestudio.shared.dto.query.QueryOrderDto; import com.arcbees.gaestudio.shared.dto.query.QueryRecordDto; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @RunWith(JukitoRunner.class) public class ObjectifyRecordFormatterTest { public static final QueryFilterOperator ANY_OPERATOR = QueryFilterOperator.GREATER_THAN; @Inject ObjectifyRecordFormatter formatter; @Test public void formatRecord_filterValueContainsUnicodeReplacementCharacter_replacementCharacterIsEscaped() { // given QueryRecordDto queryRecordDto = getQueryRecordDto(); QueryFilterDto queryFilterDto = getQueryFilterDto("theValue" + '\ufffd'); queryRecordDto.getQuery().getFilters().add(queryFilterDto); // when String formatted = formatter.formatRecord(queryRecordDto); // then assertNotEquals("Formatted query still contains unicode character", "query().filter(\"null >\", theValue�)", formatted); assertEquals("Formatted query does not contain escaped unicode character", "query().filter(\"null >\", theValue\\ufffd)", formatted); } private QueryRecordDto getQueryRecordDto() { QueryRecordDto queryRecordDto = new QueryRecordDto(); QueryDto queryDto = new QueryDto(); queryDto.setFilters(new ArrayList<QueryFilterDto>()); queryDto.setOrders(new ArrayList<QueryOrderDto>()); queryRecordDto.setQuery(queryDto); return queryRecordDto; } private QueryFilterDto getQueryFilterDto(String value) { QueryFilterDto queryFilterDto = new QueryFilterDto(); queryFilterDto.setOperator(ANY_OPERATOR); queryFilterDto.setValue(value); return queryFilterDto; } }