/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community 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://opensource.org/licenses/ecl2.txt * * 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.opencastproject.index.service.impl.series; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.opencastproject.index.service.impl.index.series.Series; import org.opencastproject.util.DateTimeSupport; import org.apache.commons.io.IOUtils; import org.codehaus.jettison.json.JSONException; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.bind.JAXBException; import javax.xml.stream.XMLStreamException; public class SeriesTest { private static final Logger logger = LoggerFactory.getLogger(SeriesTest.class); private static final String ACCESS_POLICY_KEY = "access_policy"; private static final String CONTRIBUTORS_JSON_KEY = "contributors"; private static final String CONTRIBUTOR_JSON_KEY = "contributor"; private static final String CREATED_DATE_TIME = "createdDateTime"; private static final String CREATOR_JSON_KEY = "creator"; private static final String DESCRIPTION_JSON_KEY = "description"; private static final String IDENTIFIER_JSON_KEY = "identifier"; private static final String LANGUAGE_JSON_KEY = "language"; private static final String LICENSE_JSON_KEY = "license"; private static final String OPT_OUT_KEY = "opt_out"; private static final String ORGANIZATION_JSON_KEY = "organization"; private static final String ORGANIZERS_JSON_KEY = "organizers"; private static final String ORGANIZER_JSON_KEY = "organizer"; private static final String SERIES_JSON_KEY = "series"; private static final String SUBJECT_JSON_KEY = "subject"; private static final String TITLE_JSON_KEY = "title"; private String id = "10.0000-1"; private String title = "Land and Vegetation: Key players on the Climate Scene"; private String description = "This is the description for this series."; private String subject = "This is the subject"; private String organization = "Organization"; private String language = "Klingon"; private String creator = "Creator Name"; private String license = "Creative Commons 2.0"; private String accessPolicy = "ROLE_ADMIN"; private boolean optOut = true; private Date createdDateTime; private List<String> organizers = new ArrayList<String>(); private String organizer1 = "organizer-one"; private String organizer2 = "organizer-two"; private String organizer3 = "organizer-three"; private List<String> contributors = new ArrayList<String>(); private String contributor1 = "contributor-one"; private String contributor2 = "contributor-two"; private String contributor3 = "contributor-three"; private String seriesJson; private String seriesXml; @Before public void setUp() throws IOException, IllegalStateException, java.text.ParseException { createdDateTime = new Date(DateTimeSupport.fromUTC("2011-07-16T20:39:05Z")); // Setup presenter collection organizers.add(organizer1); organizers.add(organizer2); organizers.add(organizer3); // Setup contributors contributors.add(contributor1); contributors.add(contributor2); contributors.add(contributor3); // Setup results seriesJson = IOUtils.toString(getClass().getResource("/adminui_series_metadata.json")); seriesXml = IOUtils.toString(getClass().getResource("/adminui_series_metadata.xml")); } @Ignore @Test public void testValueOf() throws ParseException, IOException, JSONException, XMLStreamException, JAXBException { Series series = Series.valueOf(IOUtils.toInputStream(seriesXml)); assertEquals(id, series.getIdentifier()); assertEquals(title, series.getTitle()); assertEquals(description, series.getDescription()); assertEquals(subject, series.getSubject()); assertEquals(organization, series.getOrganization()); assertEquals(language, series.getLanguage()); assertEquals(license, series.getLicense()); assertEquals(accessPolicy, series.getAccessPolicy()); assertEquals(optOut, series.isOptedOut()); assertEquals(DateTimeSupport.toUTC(createdDateTime.getTime()), DateTimeSupport.toUTC(series.getCreatedDateTime().getTime())); assertEquals(organizer1, series.getOrganizers().get(0)); assertEquals(organizer2, series.getOrganizers().get(1)); assertEquals(organizer3, series.getOrganizers().get(2)); assertEquals(contributor1, series.getContributors().get(0)); assertEquals(contributor2, series.getContributors().get(1)); assertEquals(contributor3, series.getContributors().get(2)); } @Ignore @Test public void testValueOfJson() throws ParseException, IOException, JSONException, XMLStreamException, JAXBException { Series series = Series.valueOfJson(IOUtils.toInputStream(seriesJson)); assertEquals(id, series.getIdentifier()); assertEquals(title, series.getTitle()); assertEquals(organizer1, series.getOrganizers().get(0)); assertEquals(organizer2, series.getOrganizers().get(1)); assertEquals(organizer3, series.getOrganizers().get(2)); assertEquals(contributor1, series.getContributors().get(0)); assertEquals(contributor2, series.getContributors().get(1)); assertEquals(contributor3, series.getContributors().get(2)); } @Test public void testToJson() throws ParseException { // Initialize series Series series = new Series(id, organization); series.setTitle(title); series.setDescription(description); series.setSubject(subject); series.setLanguage(language); series.setCreator(creator); series.setLicense(license); series.setAccessPolicy(accessPolicy); series.setCreatedDateTime(createdDateTime); series.setOrganizers(organizers); series.setContributors(contributors); series.setOptOut(optOut); logger.info(series.toJSON()); // Check that generated JSON has proper values JSONObject parse = (JSONObject) new JSONParser().parse(series.toJSON()); if (parse.get(SERIES_JSON_KEY) == null || !(parse.get(SERIES_JSON_KEY) instanceof JSONObject)) { fail("There must be an series object returned."); } JSONObject seriesJsonObject = (JSONObject) parse.get(SERIES_JSON_KEY); assertEquals(id, seriesJsonObject.get(IDENTIFIER_JSON_KEY)); assertEquals(title, seriesJsonObject.get(TITLE_JSON_KEY)); assertEquals(description, seriesJsonObject.get(DESCRIPTION_JSON_KEY)); assertEquals(subject, seriesJsonObject.get(SUBJECT_JSON_KEY)); assertEquals(organization, seriesJsonObject.get(ORGANIZATION_JSON_KEY)); assertEquals(language, seriesJsonObject.get(LANGUAGE_JSON_KEY)); assertEquals(creator, seriesJsonObject.get(CREATOR_JSON_KEY)); assertEquals(license, seriesJsonObject.get(LICENSE_JSON_KEY)); assertEquals(accessPolicy, seriesJsonObject.get(ACCESS_POLICY_KEY)); assertEquals(optOut, seriesJsonObject.get(OPT_OUT_KEY)); assertEquals(DateTimeSupport.toUTC(createdDateTime.getTime()), seriesJsonObject.get(CREATED_DATE_TIME)); JSONObject organizersJsonObject = (JSONObject) seriesJsonObject.get(ORGANIZERS_JSON_KEY); if (organizersJsonObject == null || !(organizersJsonObject.get(ORGANIZER_JSON_KEY) instanceof JSONArray)) { fail("There should be an array of organizers returned."); } JSONArray organizersArray = (JSONArray) organizersJsonObject.get(ORGANIZER_JSON_KEY); // Ordering not important, just a convenient shorthand. assertEquals(organizer1, organizersArray.get(0)); assertEquals(organizer2, organizersArray.get(1)); assertEquals(organizer3, organizersArray.get(2)); JSONObject contributorsJsonObject = (JSONObject) seriesJsonObject.get(CONTRIBUTORS_JSON_KEY); if (contributorsJsonObject == null || !(contributorsJsonObject.get(CONTRIBUTOR_JSON_KEY) instanceof JSONArray)) { fail("There should be an array of contributors returned."); } JSONArray contributorsArray = (JSONArray) contributorsJsonObject.get(CONTRIBUTOR_JSON_KEY); // Ordering not important, just a convenient shorthand. assertEquals(contributor1, contributorsArray.get(0)); assertEquals(contributor2, contributorsArray.get(1)); assertEquals(contributor3, contributorsArray.get(2)); } }