/* * Copyright (C) 2012 Jan Pokorsky * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.common.fedora.relation; import cz.cas.lib.proarc.common.CustomTemporaryFolder; import cz.cas.lib.proarc.common.fedora.LocalStorage; import cz.cas.lib.proarc.common.fedora.LocalStorage.LocalObject; import java.io.File; import java.net.URL; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.hamcrest.core.Is; import static org.junit.Assert.*; import org.junit.Rule; import org.junit.Test; /** * * @author Jan Pokorsky */ public class RelationEditorTest { @Rule public CustomTemporaryFolder tmp = new CustomTemporaryFolder(); @Test public void testRdfParse() { URL resource = RelationEditorTest.class.getResource("rels-ext.xml"); String about="info:fedora/demo:999"; assertNotNull(resource); Rdf unmarshal = Relations.unmarshal(resource, Rdf.class); RdfDescription description = unmarshal.getDescription(); assertNotNull(description); assertEquals(about, description.getAbout().getResource()); assertNotNull(description.getModel()); assertEquals("fedora-system:ContentModel-3.0", description.getModel().getResourcePid()); assertEquals("device:scanner", description.getDevice().getResourcePid()); assertEquals("ABA00726009905207199800001.tif", description.getImportFile()); assertNotNull(description.getMemberRelations()); assertEquals(3, description.getMemberRelations().size()); assertEquals("test:member1", description.getMemberRelations().get(0).getResourcePid()); assertEquals("test:member2", description.getMemberRelations().get(1).getResourcePid()); assertEquals("test:member3", description.getMemberRelations().get(2).getResourcePid()); assertNotNull(description.getRelations()); assertEquals(3, description.getRelations().size()); String toXml = Relations.toXml(unmarshal, true); System.out.println(toXml); } @Test public void testReadWrite() throws Exception { LocalStorage storage = new LocalStorage(); File foxml = tmp.newFile(); LocalObject lobject = storage.create(foxml); RelationEditor instance = new RelationEditor(lobject); String model = "mode:page"; List<String> members = Arrays.asList("test:member1", "test:member2"); Collection<String> memberships = Arrays.asList("test:group1", "test:group2"); Collection<String> owners = Arrays.asList("group:group1", "group:group2"); instance.setModel(model); String device = "device:scanner"; instance.setDevice(device); String filename = "file.name"; instance.setImportFile(filename); instance.setMembers(members); instance.setMembership(memberships); instance.setOwners(owners); instance.write(0, null); lobject.flush(); lobject = storage.load(lobject.getPid(), foxml); instance = new RelationEditor(lobject); assertEquals(model, instance.getModel()); assertEquals(device, instance.getDevice()); assertEquals(filename, instance.getImportFile()); assertThat(instance.getMembers(), Is.is(members)); assertThat(instance.getMembership(), Is.is(memberships)); assertThat(instance.getOwners(), Is.is(owners)); long timestamp = instance.getLastModified(); assertTrue(timestamp > 0); // update lobject = storage.load(lobject.getPid(), foxml); instance = new RelationEditor(lobject); model = "model:update"; device = "device:update"; members = Arrays.asList("test:member1", "test:member3"); memberships = Arrays.asList("test:group3", "test:group1"); instance.setModel(model); instance.setDevice(device); instance.setMembers(members); instance.setMembership(memberships); instance.write(timestamp, null); lobject.flush(); lobject = storage.load(lobject.getPid(), foxml); instance = new RelationEditor(lobject); assertEquals(model, instance.getModel()); assertEquals(device, instance.getDevice()); assertThat(instance.getMembers(), Is.is(members)); assertThat(instance.getMembership(), Is.is(memberships)); assertTrue(timestamp < instance.getLastModified()); } }