Merge pull request #25 from atusa17/PAN-52-fix
PAN-52 Fixed issue with the Theorems API
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
spring.mvc.view.prefix:/WEB-INF/jsp/
|
||||
spring.mvc.view.suffix:.jsp
|
||||
spring.mvc.view.suffix:.jsp
|
||||
server.port=8090
|
||||
@@ -26,7 +26,8 @@ version int default 1
|
||||
create table theorems (
|
||||
id int not null auto_increment primary key unique,
|
||||
name varchar(512) not null,
|
||||
theorem_type enum ('THEOREM', 'PROPOSITION', 'LEMMA', 'COROLLARY') not null,
|
||||
theorem varchar(1024) not null,
|
||||
theorem_type varchar(20) not null,
|
||||
branch varchar(512) not null,
|
||||
referenced_definitions json,
|
||||
referenced_theorems json,
|
||||
@@ -37,9 +38,9 @@ CREATE TABLE proofs
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
theorem_name VARCHAR(512) NOT NULL,
|
||||
proof VARCHAR(4096) NOT NULL,
|
||||
branch VARCHAR(512) NOT NULL,
|
||||
theorem INT NOT NULL,
|
||||
FOREIGN KEY fk_theorem (theorem) REFERENCES theorems (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
referenced_definitions JSON,
|
||||
referenced_theorems JSON,
|
||||
date_added DATE,
|
||||
|
||||
+6
@@ -33,6 +33,8 @@ public class ProofsIntegrationTest {
|
||||
|
||||
assertEquals("Test proof", savedProof.getTheoremName());
|
||||
assertEquals("Test branch", savedProof.getBranch());
|
||||
assertEquals("test", savedProof.getProof());
|
||||
assertEquals(Integer.valueOf(1), savedProof.getTheorem());
|
||||
assertNotNull(savedProof.getDateCreated());
|
||||
assertNotNull(savedProof.getLastUpdated());
|
||||
assertEquals(2, savedProof.getReferencedTheorems().size());
|
||||
@@ -50,6 +52,8 @@ public class ProofsIntegrationTest {
|
||||
assertEquals(Integer.valueOf(0), updatedProof.getVersion());
|
||||
assertEquals("Test proof", updatedProof.getTheoremName());
|
||||
assertEquals("Test Update", updatedProof.getBranch());
|
||||
assertEquals("test", updatedProof.getProof());
|
||||
assertEquals(Integer.valueOf(1), savedProof.getTheorem());
|
||||
assertNotNull(updatedProof.getLastUpdated());
|
||||
assertNotNull(updatedProof.getDateCreated());
|
||||
assertNotEquals(updatedProof.getDateCreated().toInstant(), updatedProof.getLastUpdated().toInstant());
|
||||
@@ -77,6 +81,8 @@ public class ProofsIntegrationTest {
|
||||
|
||||
final Proof proof = new Proof();
|
||||
proof.setTheoremName("Test proof");
|
||||
proof.setProof("test");
|
||||
proof.setTheorem(1);
|
||||
proof.setBranch("Test branch");
|
||||
proof.setDateCreated(new Date());
|
||||
proof.setReferencedTheorems(referencedTheoremsList);
|
||||
|
||||
+3
@@ -32,6 +32,7 @@ public class TheoremsIntegrationTest {
|
||||
|
||||
assertEquals("Test theorem", savedTheorem.getName());
|
||||
assertEquals("Test branch", savedTheorem.getBranch());
|
||||
assertEquals("test", savedTheorem.getTheorem());
|
||||
assertTrue(savedTheorem.getProvenStatus());
|
||||
assertEquals(2, savedTheorem.getReferencedTheorems().size());
|
||||
assertEquals(2, savedTheorem.getReferencedDefinitions().size());
|
||||
@@ -48,6 +49,7 @@ public class TheoremsIntegrationTest {
|
||||
assertEquals(Integer.valueOf(0), updatedTheorem.getVersion());
|
||||
assertEquals("Test theorem", updatedTheorem.getName());
|
||||
assertEquals("Test Update", updatedTheorem.getBranch());
|
||||
assertEquals("test", updatedTheorem.getTheorem());
|
||||
assertTrue(updatedTheorem.getProvenStatus());
|
||||
assertEquals(2, updatedTheorem.getReferencedTheorems().size());
|
||||
assertEquals(2, updatedTheorem.getReferencedDefinitions().size());
|
||||
@@ -73,6 +75,7 @@ public class TheoremsIntegrationTest {
|
||||
|
||||
final Theorem theorem = new Theorem();
|
||||
theorem.setName("Test theorem");
|
||||
theorem.setTheorem("test");
|
||||
theorem.setBranch("Test branch");
|
||||
theorem.setProvenStatus(true);
|
||||
theorem.setTheoremType(TheoremType.THEOREM);
|
||||
|
||||
+12
-2
@@ -75,13 +75,18 @@ public class ProofController {
|
||||
|
||||
@GetMapping("/branch")
|
||||
public @ResponseBody
|
||||
ResponseEntity<List<Proof>> getAllProofsByBranch(@RequestParam("branch") final String branch) {
|
||||
ResponseEntity<List<Proof>> getAllProofsByBranch(@RequestParam("branch") String branch) {
|
||||
LOG.info("Received request to query for proofs related to the {} branch of mathematics", branch);
|
||||
if (branch == null) {
|
||||
LOG.error("ERROR: branch was null");
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
if (branch.contains("_") || branch.contains("-")) {
|
||||
branch = branch.replace("_"," ");
|
||||
branch = branch.replace("-", " ");
|
||||
}
|
||||
|
||||
LOG.debug("Querying for proofs with branch {}", branch);
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
@@ -105,13 +110,18 @@ public class ProofController {
|
||||
|
||||
@GetMapping("/theorem_name")
|
||||
public @ResponseBody
|
||||
ResponseEntity<List<Proof>> getAllProofsByTheoremName(@PathVariable("theorem_name") final String theoremName) {
|
||||
ResponseEntity<List<Proof>> getAllProofsByTheoremName(@RequestParam("theorem_name") String theoremName) {
|
||||
LOG.info("Received request to query for proofs of the theorem {}", theoremName);
|
||||
if (theoremName == null) {
|
||||
LOG.error("ERROR: theorem name was null");
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
if (theoremName.contains("_") || theoremName.contains("-")) {
|
||||
theoremName = theoremName.replace("_"," ");
|
||||
theoremName = theoremName.replace("-", " ");
|
||||
}
|
||||
|
||||
LOG.debug("Querying for proofs of the theorem {}", theoremName);
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
|
||||
+20
-8
@@ -45,13 +45,18 @@ public class TheoremController {
|
||||
|
||||
@GetMapping("/branch")
|
||||
public @ResponseBody
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByBranch(@RequestParam("branch") final String branch) {
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByBranch(@RequestParam("branch") String branch) {
|
||||
LOG.info("Received request to query for theorems related to the {} branch of mathematics", branch);
|
||||
if (branch == null) {
|
||||
LOG.error("ERROR: branch was null");
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
if (branch.contains("_") || branch.contains("-")) {
|
||||
branch = branch.replace("_", " ");
|
||||
branch = branch.replace("-", " ");
|
||||
}
|
||||
|
||||
LOG.debug("Querying for theorems with branch {}", branch);
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
@@ -75,19 +80,21 @@ public class TheoremController {
|
||||
|
||||
@GetMapping("/proven_status")
|
||||
public @ResponseBody
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByProvenStatus(@PathVariable("proven_status") final Boolean provenStatus) {
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByProvenStatus(@RequestParam("proven_status") final String provenStatus) {
|
||||
LOG.info("Received request to query for theorems whose proven status is {}", provenStatus);
|
||||
if (provenStatus == null) {
|
||||
LOG.error("ERROR: status was null");
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
LOG.debug("Querying for theorems with proven status {}", provenStatus);
|
||||
final Boolean isProven = Boolean.parseBoolean(provenStatus);
|
||||
|
||||
LOG.debug("Querying for theorems with proven status {}", isProven);
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
stopWatch.start();
|
||||
|
||||
final List<Theorem> listOfTheorems = theoremRepository.findByProvenStatus(provenStatus);
|
||||
final List<Theorem> listOfTheorems = theoremRepository.findByProvenStatus(isProven);
|
||||
|
||||
stopWatch.stop();
|
||||
|
||||
@@ -95,23 +102,28 @@ public class TheoremController {
|
||||
LOG.info("Returning list of all theorems with size {}", listOfTheorems.size());
|
||||
|
||||
if (listOfTheorems.isEmpty()) {
|
||||
LOG.warn("No theorems were found for proven status {}", provenStatus);
|
||||
LOG.warn("No theorems were found for proven status {}", isProven);
|
||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||
}
|
||||
|
||||
LOG.info("Returning list of theorems with proven status {}", provenStatus);
|
||||
LOG.info("Returning list of theorems with proven status {}", isProven);
|
||||
return new ResponseEntity<>(listOfTheorems, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/name")
|
||||
public @ResponseBody
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByName(@PathVariable("name") final String name) {
|
||||
ResponseEntity<List<Theorem>> getAllTheoremsByName(@RequestParam("name") String name) {
|
||||
LOG.info("Received request to query for theorems whose name is {}", name);
|
||||
if (name == null) {
|
||||
LOG.error("ERROR: name was null");
|
||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
if (name.contains("_") || name.contains("-")) {
|
||||
name = name.replace("_", " ");
|
||||
name = name.replace("-", " ");
|
||||
}
|
||||
|
||||
LOG.debug("Querying for theorems with name {}", name);
|
||||
|
||||
final StopWatch stopWatch = new StopWatch();
|
||||
@@ -135,7 +147,7 @@ public class TheoremController {
|
||||
|
||||
@GetMapping("/id")
|
||||
public @ResponseBody
|
||||
ResponseEntity<Theorem> getTheoremById(@PathVariable("id") final Integer id) {
|
||||
ResponseEntity<Theorem> getTheoremById(@RequestParam("id") final Integer id) {
|
||||
LOG.info("Received request to query for theorem with id {}", id);
|
||||
if (id == null) {
|
||||
LOG.error("ERROR: ID was null");
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@@ -22,6 +23,11 @@ public class Proof extends BaseDto implements Serializable {
|
||||
@Size(min = 1, max = 512, message = "The name must be at least 1 character and at most 512 characters")
|
||||
@Column(name = "theorem_name")
|
||||
private String theoremName;
|
||||
@NotNull(groups = Insert.class)
|
||||
@Size(min = 1, max = 4096, message = "The proof must be at least 1 character and at most 4096 characters")
|
||||
private String proof;
|
||||
@NotNull(groups = Insert.class)
|
||||
private Integer theorem;
|
||||
@NotBlank(groups = Insert.class)
|
||||
@Size(min = 1, max = 512, message = "The branch must be at least 1 character and at most 512 characters")
|
||||
private String branch;
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.List;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Theorem extends BaseDto implements Serializable {
|
||||
@NotBlank(groups = Insert.class) @Size(min = 1, max = 512, message = "theorem name must be between 1 and 512 characters") private String name;
|
||||
@NotNull(groups = Insert.class) @Size(min = 1, max = 1024, message = "theorem must be between 1 and 1024 characters") private String theorem;
|
||||
@NotNull(groups = Insert.class) @Column(name = "theorem_type") private TheoremType theoremType;
|
||||
@NotNull(groups = Insert.class, message = "a branch of mathematics that this theorem is associated with must be specified") private String branch;
|
||||
@Type(type = "json") @Column(name = "referenced_definitions", columnDefinition = "jsonb") private List<String> referencedDefinitions;
|
||||
|
||||
+7
-5
@@ -53,7 +53,7 @@ public class ProofControllerTest {
|
||||
|
||||
when(proofRepository.findByBranch(anyString())).thenReturn(listOfProofs);
|
||||
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByBranch("test");
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByBranch("Test_branch");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
|
||||
@@ -77,7 +77,7 @@ public class ProofControllerTest {
|
||||
public void testGetAllProofsByBranch_noProofsFound() {
|
||||
when(proofRepository.findByBranch(anyString())).thenReturn(Collections.emptyList());
|
||||
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByBranch("test nonexistent branch");
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByBranch("test-nonexistent-branch");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
@@ -93,7 +93,7 @@ public class ProofControllerTest {
|
||||
|
||||
when(proofRepository.findByTheoremName(anyString())).thenReturn(listOfProofs);
|
||||
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByTheoremName("test");
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByTheoremName("Test_proof");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
|
||||
@@ -104,7 +104,7 @@ public class ProofControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllProfsByTheoremName_nullTheoremName() {
|
||||
public void testGetAllProofsByTheoremName_nullTheoremName() {
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByTheoremName(null);
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
@@ -117,7 +117,7 @@ public class ProofControllerTest {
|
||||
public void testGetAllProofsByTheoremName_noProofsFound() {
|
||||
when(proofRepository.findByTheoremName(anyString())).thenReturn(Collections.emptyList());
|
||||
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByTheoremName("test nonexistent branch");
|
||||
final ResponseEntity<List<Proof>> responseEntity = proofController.getAllProofsByTheoremName("test-nonexistent-proof");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
@@ -298,7 +298,9 @@ public class ProofControllerTest {
|
||||
|
||||
final Proof proof = new Proof();
|
||||
proof.setTheoremName("Test proof");
|
||||
proof.setTheorem(1);
|
||||
proof.setBranch("Test branch");
|
||||
proof.setProof("test proof");
|
||||
proof.setDateCreated(new Date());
|
||||
proof.setReferencedTheorems(referencedTheoremsList);
|
||||
proof.setReferencedDefinitions(referencedDefinitionsList);
|
||||
|
||||
+16
-6
@@ -95,7 +95,7 @@ public class TheoremControllerTest {
|
||||
|
||||
when(theoremRepository.findByBranch(anyString())).thenReturn(listOfTheorems);
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByBranch("test");
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByBranch("test-branch");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
|
||||
@@ -119,7 +119,7 @@ public class TheoremControllerTest {
|
||||
public void testGetAllTheoremsByBranch_noTheoremsFound() {
|
||||
when(theoremRepository.findByBranch(anyString())).thenReturn(Collections.emptyList());
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByBranch("test nonexistent branch");
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByBranch("test_nonexistent_branch");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
@@ -135,7 +135,7 @@ public class TheoremControllerTest {
|
||||
|
||||
when(theoremRepository.findByProvenStatus(anyBoolean())).thenReturn(listOfTheorems);
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByProvenStatus(true);
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByProvenStatus("true");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
|
||||
@@ -155,11 +155,20 @@ public class TheoremControllerTest {
|
||||
verifyZeroInteractions(theoremRepository);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllTheoremsByProvenStatus_invalidProvenStatus() {
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByProvenStatus("test");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllTheoremsByProvenStatus_noTheoremsFound() {
|
||||
when(theoremRepository.findByProvenStatus(anyBoolean())).thenReturn(Collections.emptyList());
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByProvenStatus(false);
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByProvenStatus("false");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
@@ -175,7 +184,7 @@ public class TheoremControllerTest {
|
||||
|
||||
when(theoremRepository.findByName(anyString())).thenReturn(listOfTheorems);
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByName("Test Theorem");
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByName("Test_Theorem");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
|
||||
@@ -199,7 +208,7 @@ public class TheoremControllerTest {
|
||||
public void testGetAllTheoremsByName_noNameFound() {
|
||||
when(theoremRepository.findByName(anyString())).thenReturn(Collections.emptyList());
|
||||
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByName("No name");
|
||||
final ResponseEntity<List<Theorem>> responseEntity = theoremController.getAllTheoremsByName("No-name");
|
||||
|
||||
assertNotNull(responseEntity);
|
||||
assertFalse(responseEntity.hasBody());
|
||||
@@ -343,6 +352,7 @@ public class TheoremControllerTest {
|
||||
|
||||
final Theorem theorem = new Theorem();
|
||||
theorem.setName("Test theorem");
|
||||
theorem.setTheorem("test theorem thing here");
|
||||
theorem.setBranch("Test branch");
|
||||
theorem.setProvenStatus(true);
|
||||
theorem.setTheoremType(TheoremType.THEOREM);
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
spring.mvc.view.prefix:/WEB-INF/jsp/
|
||||
spring.mvc.view.suffix:.jsp
|
||||
server.port=8090
|
||||
spring.mvc.view.suffix:.jsp
|
||||
Reference in New Issue
Block a user