package nl.knaw.huygens.alexandria.nederlab; /* * #%L * alexandria-acceptance-tests * ======= * Copyright (C) 2015 - 2017 Huygens ING (KNAW) * ======= * 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/gpl-3.0.html>. * #L% */ import static java.time.format.DateTimeFormatter.ISO_DATE_TIME; import static java.util.UUID.fromString; import java.time.Instant; import java.util.UUID; import org.concordion.integration.junit4.ConcordionRunner; import org.junit.BeforeClass; import org.junit.runner.RunWith; import nl.knaw.huygens.alexandria.concordion.AlexandriaAcceptanceTest; import nl.knaw.huygens.alexandria.endpoint.annotation.AnnotationsEndpoint; import nl.knaw.huygens.alexandria.endpoint.resource.ResourcesEndpoint; import nl.knaw.huygens.alexandria.endpoint.search.SearchEndpoint; import nl.knaw.huygens.alexandria.model.AlexandriaAnnotationBody; import nl.knaw.huygens.alexandria.model.AlexandriaResource; import nl.knaw.huygens.alexandria.model.TentativeAlexandriaProvenance; @RunWith(ConcordionRunner.class) public class NederlabFixture extends AlexandriaAcceptanceTest { @BeforeClass public static void registerEndpoints() { register(ResourcesEndpoint.class); register(AnnotationsEndpoint.class); register(SearchEndpoint.class); } public AlexandriaResource subResourceExists(String id, String parentId) { UUID resourceId = fromString(id); UUID parentUUID = fromString(parentId); return service().createSubResource(resourceId, parentUUID, aSub(), aProvenance()); } public String resourceHasAnnotation(String id) { return resourceHasAnnotation(id, "type", "value"); } public String resourceHasAnnotation(String resId, String type, String value) { final AlexandriaResource resource = theResource(fromString(resId)); final AlexandriaAnnotationBody annotationBody = anAnnotation(type, value); return hasConfirmedAnnotation(resource, annotationBody).toString(); } public String resourceExistsWithTagForUserAtInstant(String resId, String value, String who, String when) { resourceExists(resId); final AlexandriaResource resource = theResource(fromString(resId)); final Instant whenAsInstant = ISO_DATE_TIME.parse(when, Instant::from); final TentativeAlexandriaProvenance provenance = aProvenance(who, whenAsInstant); final AlexandriaAnnotationBody annotationBody = anAnnotation("Tag", value, provenance); return hasConfirmedAnnotation(resource, annotationBody, provenance).toString(); } public String subResourceExistsWithAnnotation(String id, String parentId, String type, String value) { final AlexandriaResource resource = subResourceExists(id, parentId); return hasConfirmedAnnotation(resource, anAnnotation(type, value)).toString(); } private TentativeAlexandriaProvenance aProvenance(String who, Instant when) { return new TentativeAlexandriaProvenance(who, when, "why"); } }