net.di2e.ecdr.search.transform.atom.response.AtomResponseTransformerTest.java Source code

Java tutorial

Introduction

Here is the source code for net.di2e.ecdr.search.transform.atom.response.AtomResponseTransformerTest.java

Source

/**
 * Copyright (C) 2014 Cohesive Integrations, LLC (info@cohesiveintegrations.com)
 *
 * 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 net.di2e.ecdr.search.transform.atom.response;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;

import java.util.List;

import net.di2e.ecdr.commons.filter.config.AtomSearchResponseTransformerConfig;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;

import ddf.catalog.data.Result;
import ddf.catalog.operation.QueryRequest;
import ddf.catalog.operation.SourceResponse;

/**
 * Tests that the atom-based search response transformer returns proper atom content.
 */
public class AtomResponseTransformerTest extends net.di2e.ecdr.search.transform.atom.response.AtomTest {

    @Test
    public void testBoxTransform() throws Exception {
        SourceResponse response = getTransformResponse(SIMPLE_BOX);
        validateWKT(BOX_WKT, response);
    }

    @Test
    public void testLineTransform() throws Exception {
        SourceResponse response = getTransformResponse(SIMPLE_LINE);
        validateWKT(LINE_WKT, response);
    }

    @Test
    public void testPointTransform() throws Exception {
        SourceResponse response = getTransformResponse(SIMPLE_POINT);
        validateWKT(POINT_WKT, response);
    }

    @Test
    public void testPolygonTransform() throws Exception {
        SourceResponse response = getTransformResponse(SIMPLE_POLYGON);
        validateWKT(POLYGON_WKT, response);
    }

    @Test
    public void testGMLBoxTransform() throws Exception {
        SourceResponse response = getTransformResponse(GML_BOX);
        validateWKT(BOX_WKT, response);
    }

    @Test
    public void testGMLPointTransform() throws Exception {
        SourceResponse response = getTransformResponse(GML_POINT);
        validateWKT(POINT_WKT, response);
    }

    @Test
    public void testGMLLineTransform() throws Exception {
        SourceResponse response = getTransformResponse(GML_LINE);
        validateWKT(LINE_WKT, response);
    }

    @Test
    public void testGMLPolygonTransform() throws Exception {
        SourceResponse response = getTransformResponse(GML_POLYGON);
        validateWKT(POLYGON_WKT, response);
    }

    @Test
    public void testMultiPointTransform() throws Exception {
        SourceResponse response = getTransformResponse(MULTIPOINT);
        validateWKT(MULTIPOINT_WKT, response);
    }

    @Test
    public void testMultiLineStringTransform() throws Exception {
        SourceResponse response = getTransformResponse(MULTILINESTRING);
        validateWKT(MULTILINESTRING_WKT, response);
    }

    @Test
    public void testMultiPolygonTransform() throws Exception {
        SourceResponse response = getTransformResponse(MULTIPOLYGON);
        validateWKT(MULTIPOLYGON_WKT, response);
    }

    @Test
    public void testMultiBoxTransform() throws Exception {
        SourceResponse response = getTransformResponse(MULTIBOX);
        validateWKT(MULTIBOX_WKT, response);
    }

    @Test
    public void testGeometryCollectionTransform() throws Exception {
        SourceResponse response = getTransformResponse(GEOMETRYCOLLECTION);
        validateWKT(GEOMETRYCOLLECTION_WKT, response);
    }

    @Test
    public void testInvalidEntry() throws Exception {
        AtomSearchResponseTransformerConfig config = mock(AtomSearchResponseTransformerConfig.class);
        QueryRequest request = mock(QueryRequest.class);
        AtomResponseTransformer transformer = new AtomResponseTransformer(config);
        String atomXML = IOUtils.toString(getClass().getResourceAsStream(ATOM_INVALID_FILE));
        SourceResponse response = transformer.processSearchResponse(IOUtils.toInputStream(atomXML), request,
                SITE_NAME);
        assertEquals(0, response.getHits());
        assertEquals(0, response.getResults().size());
    }

    private SourceResponse getTransformResponse(final String LOCATION_XML) throws Exception {
        AtomSearchResponseTransformerConfig config = mock(AtomSearchResponseTransformerConfig.class);
        QueryRequest request = mock(QueryRequest.class);
        AtomResponseTransformer transformer = new AtomResponseTransformer(config);
        String atomXML = IOUtils.toString(getClass().getResourceAsStream(ATOM_TEMPLATE_FILE));
        atomXML = StringUtils.replace(atomXML, LOCATION_MARKER, LOCATION_XML);
        return transformer.processSearchResponse(IOUtils.toInputStream(atomXML), request, SITE_NAME);
    }

    private void validateWKT(String expectedWKT, SourceResponse response) {
        List<Result> results = response.getResults();
        assertEquals(1, results.size());
        Result result = results.iterator().next();
        assertEquals(expectedWKT, result.getMetacard().getLocation());
    }

}