package org.nextprot.api.web.ttl.integration; import static org.junit.Assert.assertTrue; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.PrintWriter; import java.io.Writer; import org.apache.jena.riot.RDFDataMgr; import org.apache.velocity.Template; import org.junit.Test; import org.nextprot.api.web.NXVelocityContext; import org.nextprot.api.web.dbunit.base.mvc.WebIntegrationBaseTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.view.velocity.VelocityConfig; public class EntryTTLValidationIntegrationTest extends WebIntegrationBaseTest { @Autowired VelocityConfig velocityConfig; @Test public void shouldBeAValidTurtleAndContainNoDollar() throws Exception { String fileName = "test.ttl"; String ttlData = this.mockMvc.perform(get("/entry/NX_P06213.ttl")).andReturn().getResponse().getContentAsString(); PrintWriter writer = new PrintWriter(fileName, "UTF-8"); addTurtlePrefixes(writer, velocityConfig); writer.write(ttlData); writer.close(); RDFDataMgr.loadModel(fileName); assertTrue(checkNoDollarInFile(fileName)); new File(fileName).delete(); } private boolean checkNoDollarInFile(String fname) throws Exception { BufferedReader reader = new BufferedReader(new FileReader(new File(fname))); String line = null; int lineNo = 0; boolean ok = true; while ((line = reader.readLine()) != null) { lineNo++; if (line.contains("$")) { ok = false; System.out.println("Error - '$' found at line " + String.valueOf(lineNo) + line); } } reader.close(); return ok; } static void addTurtlePrefixes(Writer writer, VelocityConfig config) { Template headerTemplate = config.getVelocityEngine().getTemplate("turtle/prefix.ttl.vm"); headerTemplate.merge(new NXVelocityContext(), writer); } }