001/* 002 * ModeShape (http://www.modeshape.org) 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.modeshape.sequencer.odf; 017 018import static org.hamcrest.core.Is.is; 019import static org.junit.Assert.assertThat; 020import static org.modeshape.sequencer.odf.OdfMetadataLexicon.CREATION_DATE; 021import static org.modeshape.sequencer.odf.OdfMetadataLexicon.CREATOR; 022import static org.modeshape.sequencer.odf.OdfMetadataLexicon.DESCRIPTION; 023import static org.modeshape.sequencer.odf.OdfMetadataLexicon.EDITING_CYCLES; 024import static org.modeshape.sequencer.odf.OdfMetadataLexicon.EDITING_TIME; 025import static org.modeshape.sequencer.odf.OdfMetadataLexicon.GENERATOR; 026import static org.modeshape.sequencer.odf.OdfMetadataLexicon.INITIAL_CREATOR; 027import static org.modeshape.sequencer.odf.OdfMetadataLexicon.KEYWORDS; 028import static org.modeshape.sequencer.odf.OdfMetadataLexicon.LANGUAGE; 029import static org.modeshape.sequencer.odf.OdfMetadataLexicon.MODIFICATION_DATE; 030import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PAGES; 031import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PRINTED_BY; 032import static org.modeshape.sequencer.odf.OdfMetadataLexicon.PRINT_DATE; 033import static org.modeshape.sequencer.odf.OdfMetadataLexicon.SHEETS; 034import static org.modeshape.sequencer.odf.OdfMetadataLexicon.SUBJECT; 035import static org.modeshape.sequencer.odf.OdfMetadataLexicon.TITLE; 036 037import java.util.Calendar; 038 039import javax.jcr.Node; 040 041import org.junit.Test; 042import org.modeshape.jcr.api.JcrConstants; 043import org.modeshape.jcr.sequencer.AbstractSequencerTest; 044 045/** 046 * Unit test for {@link OdfMetadataSequencer}. 047 */ 048public class OdfMetadataSequencerTest extends AbstractSequencerTest { 049 050 @Test 051 public void shouldSequenceTextDocument() throws Exception { 052 // GIVEN 053 String filename = "text.odt"; 054 055 // WHEN 056 createNodeWithContentFromFile(filename, filename); 057 058 // THEN 059 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 060 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.text")); 061 assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L)); 062 063 assertCommonMetadata(sequencedNode); 064 } 065 066 @Test 067 public void shouldSequenceTextTemplate() throws Exception { 068 // GIVEN 069 String filename = "text.ott"; 070 071 // WHEN 072 createNodeWithContentFromFile(filename, filename); 073 074 // THEN 075 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 076 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.text-template")); 077 assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L)); 078 079 assertCommonMetadata(sequencedNode); 080 } 081 082 @Test 083 public void shouldSequencePresentation() throws Exception { 084 // GIVEN 085 String filename = "presentation.odp"; 086 087 // WHEN 088 createNodeWithContentFromFile(filename, filename); 089 090 // THEN 091 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 092 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.presentation")); 093 assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L)); 094 095 assertCommonMetadata(sequencedNode); 096 } 097 098 @Test 099 public void shouldSequencePresentationTemplate() throws Exception { 100 // GIVEN 101 String filename = "presentation.otp"; 102 103 // WHEN 104 createNodeWithContentFromFile(filename, filename); 105 106 // THEN 107 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 108 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.presentation-template")); 109 assertThat(sequencedNode.getProperty(PAGES).getLong(), is(2L)); 110 111 assertCommonMetadata(sequencedNode); 112 } 113 114 @Test 115 public void shouldSequenceSpreadsheet() throws Exception { 116 // GIVEN 117 String filename = "spreadsheet.ods"; 118 119 // WHEN 120 createNodeWithContentFromFile(filename, filename); 121 122 // THEN 123 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 124 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.spreadsheet")); 125 assertThat(sequencedNode.getProperty(SHEETS).getLong(), is(1L)); 126 127 assertCommonMetadata(sequencedNode); 128 } 129 130 @Test 131 public void shouldSequenceSpreadsheetTemplate() throws Exception { 132 // GIVEN 133 String filename = "spreadsheet.ots"; 134 135 // WHEN 136 createNodeWithContentFromFile(filename, filename); 137 138 // THEN 139 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 140 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.spreadsheet-template")); 141 assertThat(sequencedNode.getProperty(SHEETS).getLong(), is(1L)); 142 143 assertCommonMetadata(sequencedNode); 144 } 145 146 @Test 147 public void shouldSequenceDrawing() throws Exception { 148 // GIVEN 149 String filename = "drawing.odg"; 150 151 // WHEN 152 createNodeWithContentFromFile(filename, filename); 153 154 // THEN 155 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 156 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.graphics")); 157 158 assertCommonMetadata(sequencedNode); 159 } 160 161 @Test 162 public void shouldSequenceDrawingTemplate() throws Exception { 163 // GIVEN 164 String filename = "drawing.otg"; 165 166 // WHEN 167 createNodeWithContentFromFile(filename, filename); 168 169 // THEN 170 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 171 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.graphics-template")); 172 173 assertCommonMetadata(sequencedNode); 174 } 175 176 @Test 177 public void shouldSequenceChart() throws Exception { 178 // GIVEN 179 String filename = "chart.odc"; 180 181 // WHEN 182 createNodeWithContentFromFile(filename, filename); 183 184 // THEN 185 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 186 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.chart")); 187 188 assertCommonMetadata(sequencedNode); 189 } 190 191 @Test 192 public void shouldSequenceChartTemplate() throws Exception { 193 // GIVEN 194 String filename = "chart.otc"; 195 196 // WHEN 197 createNodeWithContentFromFile(filename, filename); 198 199 // THEN 200 Node sequencedNode = getOutputNode(rootNode, "sequenced/odf/" + filename); 201 assertThat(sequencedNode.getProperty(JcrConstants.JCR_MIME_TYPE).getString(), is("application/vnd.oasis.opendocument.chart-template")); 202 203 assertCommonMetadata(sequencedNode); 204 } 205 206 private void assertCommonMetadata( Node sequencedNode ) throws Exception { 207 assertThat(sequencedNode.getProperty(TITLE).getString(), is("Title")); 208 assertThat(sequencedNode.getProperty(SUBJECT).getString(), is("Subject")); 209 assertThat(sequencedNode.getProperty(DESCRIPTION).getString(), is("Description")); 210 assertThat(sequencedNode.getProperty(KEYWORDS).getValues()[0].getString(), is("Keyword")); 211 assertThat(sequencedNode.getProperty(KEYWORDS).getValues()[1].getString(), is("Second keyword")); 212 assertThat(sequencedNode.getProperty(GENERATOR).getString(), is("Generator")); 213 assertThat(sequencedNode.getProperty(CREATOR).getString(), is("Creator")); 214 assertThat(sequencedNode.getProperty(LANGUAGE).getString(), is("en")); 215 assertThat(sequencedNode.getProperty(PRINTED_BY).getString(), is("Printed by")); 216 assertThat(sequencedNode.getProperty(INITIAL_CREATOR).getString(), is("Initial creator")); 217 assertThat(sequencedNode.getProperty(EDITING_CYCLES).getLong(), is(2L)); 218 assertThat(sequencedNode.getProperty(EDITING_TIME).getLong(), is(666L)); 219 assertThat(sequencedNode.getProperty(CREATION_DATE).getDate().get(Calendar.YEAR), is(2000)); 220 assertThat(sequencedNode.getProperty(MODIFICATION_DATE).getDate().get(Calendar.YEAR), is(2005)); 221 assertThat(sequencedNode.getProperty(PRINT_DATE).getDate().get(Calendar.YEAR), is(2010)); 222 223 } 224}