/*
* ModeShape (http://www.modeshape.org)
*
* 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.modeshape.sequencer.odf;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.CREATION_DATE;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.CREATOR;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.DESCRIPTION;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.EDITING_CYCLES;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.EDITING_TIME;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.GENERATOR;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.INITIAL_CREATOR;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.KEYWORDS;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.LANGUAGE;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.MODIFICATION_DATE;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PAGES;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PRINTED_BY;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PRINT_DATE;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.SHEETS;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.SUBJECT;
import static org.modeshape.sequencer.odf.OdfMetadataLexicon.TITLE;
import java.util.Calendar;
import javax.jcr.Node;
import org.junit.Test;
import org.modeshape.jcr.api.JcrConstants;
import org.modeshape.jcr.sequencer.AbstractSequencerTest;
/**
* Unit test for {@link OdfMetadataSequencer}.
*/
public class OdfMetadataSequencerTest extends AbstractSequencerTest {
@Test
public void shouldSequenceTextDocument() throws Exception {
// GIVEN
String filename = "text.odt";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.text"));
assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceTextTemplate() throws Exception {
// GIVEN
String filename = "text.ott";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.text-template"));
assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequencePresentation() throws Exception {
// GIVEN
String filename = "presentation.odp";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.presentation"));
assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequencePresentationTemplate() throws Exception {
// GIVEN
String filename = "presentation.otp";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.presentation-template"));
assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceSpreadsheet() throws Exception {
// GIVEN
String filename = "spreadsheet.ods";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.spreadsheet"));
assertThat(sequencedNode.getProperty(SHEETS).getLong(), is(1L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceSpreadsheetTemplate() throws Exception {
// GIVEN
String filename = "spreadsheet.ots";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.spreadsheet-template"));
assertThat(sequencedNode.getProperty(SHEETS).getLong(), is(1L));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceDrawing() throws Exception {
// GIVEN
String filename = "drawing.odg";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.graphics"));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceDrawingTemplate() throws Exception {
// GIVEN
String filename = "drawing.otg";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.graphics-template"));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceChart() throws Exception {
// GIVEN
String filename = "chart.odc";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.chart"));
assertCommonMetadata(sequencedNode);
}
@Test
public void shouldSequenceChartTemplate() throws Exception {
// GIVEN
String filename = "chart.otc";
// WHEN
createNodeWithContentFromFile(filename, filename);
// THEN
Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename);
assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.chart-template"));
assertCommonMetadata(sequencedNode);
}
private void assertCommonMetadata( Node sequencedNode ) throws Exception {
assertThat(sequencedNode.getProperty(TITLE).getString(), is("Title"));
assertThat(sequencedNode.getProperty(SUBJECT).getString(), is("Subject"));
assertThat(sequencedNode.getProperty(DESCRIPTION).getString(), is("Description"));
assertThat(sequencedNode.getProperty(KEYWORDS).getValues()[0].getString(), is("Keyword"));
assertThat(sequencedNode.getProperty(KEYWORDS).getValues()[1].getString(), is("Second keyword"));
assertThat(sequencedNode.getProperty(GENERATOR).getString(), is("Generator"));
assertThat(sequencedNode.getProperty(CREATOR).getString(), is("Creator"));
assertThat(sequencedNode.getProperty(LANGUAGE).getString(), is("en"));
assertThat(sequencedNode.getProperty(PRINTED_BY).getString(), is("Printed by"));
assertThat(sequencedNode.getProperty(INITIAL_CREATOR).getString(), is("Initial creator"));
assertThat(sequencedNode.getProperty(EDITING_CYCLES).getLong(), is(2L));
assertThat(sequencedNode.getProperty(EDITING_TIME).getLong(), is(666L));
assertThat(sequencedNode.getProperty(CREATION_DATE).getDate().get(Calendar.YEAR), is(2000));
assertThat(sequencedNode.getProperty(MODIFICATION_DATE).getDate().get(Calendar.YEAR), is(2005));
assertThat(sequencedNode.getProperty(PRINT_DATE).getDate().get(Calendar.YEAR), is(2010));
}
}