/*******************************************************************************
* Copyright 2014 Miami-Dade County
*
* 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 org.sharegov.cirm;
import mjson.Json;
import org.junit.Assert;
/**
* Assertions that should hold for various Json representations of a Cirm ServiceRequest (SR).
* TODO extend this
*
* @author Thomas Hilpold
*
*/
public class SRJsonValidator
{
/**
* Asserts that the updateJSON is valid.
* Does not look deeper than properties.
* Does not assert a properties.atAdress as this is optional now.
* Based on DOG_UPDATE.json from 12/12/2012
* @param srUpdateJson
*/
public static void assertValidUpdateSR(Json srUpdateJson)
{
Assert.assertTrue(srUpdateJson.at("boid").asInteger() >= 0);
Assert.assertTrue(srUpdateJson.at("type").asString().startsWith("legacy:"));
Assert.assertTrue(srUpdateJson.at("iri").asString().startsWith("http://www.miamidade.gov/bo/"));
Assert.assertTrue(srUpdateJson.at("properties").isObject());
if (srUpdateJson.at("properties").has("hasGisDataId"))
{
Assert.assertTrue(srUpdateJson.at("properties").at("hasGisDataId").isNumber());
}
if (srUpdateJson.at("properties").has("isCreatedBy"))
{
Assert.assertTrue(srUpdateJson.at("properties").at("isCreatedBy").isString());
}
if (srUpdateJson.at("properties").has("hasYCoordinate"))
{
Assert.assertTrue(srUpdateJson.at("properties").at("hasYCoordinate").isNumber());
Assert.assertTrue(srUpdateJson.at("properties").at("hasXCoordinate").isNumber());
}
// Assert.assertTrue(srUpdateJson.at("properties").at("hasDateCreated").asString().endsWith("-05:00"));
// Assert.assertTrue(srUpdateJson.at("properties").at("hasAttachment").isArray());
// Assert.assertTrue(srUpdateJson.at("properties").at("hasRemovedAttachment").isArray());
// Assert.assertTrue(srUpdateJson.at("properties").at("hasDateLastModified").asString().endsWith("-05:00"));
// Assert.assertTrue(srUpdateJson.at("properties").at("isModifiedBy").isString());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasServiceCaseActor").isArray());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasServiceAnswer").isArray());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasDueDate").asString().endsWith("Z"));
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasIntakeMethod").isObject());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasPriority").isObject());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasStatus").isObject());
// Assert.assertTrue(srUpdateJson.at("properties").at("legacy:hasServiceActivity").isArray());
}
}