From affb7c8dbbc7f27ea7abb436395d281eadb3563f Mon Sep 17 00:00:00 2001 From: alistairdeane <ad02184@surrey.ac.uk> Date: Sun, 12 May 2024 16:14:44 +0100 Subject: [PATCH] finished --- README.md | 100 ++---- pom.xml | 90 ++++++ src/main/java/com/flickfinder/AppConfig.java | 69 +++++ src/main/java/com/flickfinder/Main.java | 34 +++ .../controller/MovieController.java | 120 ++++++++ .../controller/PersonController.java | 69 +++++ .../java/com/flickfinder/dao/MovieDAO.java | 120 ++++++++ .../java/com/flickfinder/dao/PersonDAO.java | 76 +++++ .../java/com/flickfinder/model/Movie.java | 83 +++++ .../com/flickfinder/model/MovieRating.java | 26 ++ .../java/com/flickfinder/model/Person.java | 53 ++++ .../java/com/flickfinder/util/Database.java | 111 +++++++ src/main/resources/movies.db | 0 src/main/resources/public/index.html | 74 +++++ .../com/flickfinder/IntegrationTests.java | 174 +++++++++++ .../controller/MovieControllerTest.java | 124 ++++++++ .../controller/PersonControllerTest.java | 72 +++++ .../com/flickfinder/dao/MovieDAOTest.java | 107 +++++++ .../com/flickfinder/dao/PersonDAOTest.java | 74 +++++ .../java/com/flickfinder/model/MovieTest.java | 51 ++++ .../com/flickfinder/model/PersonTest.java | 37 +++ .../java/com/flickfinder/util/Seeder.java | 172 +++++++++++ target/COM1028-ad02184-1.0-SNAPSHOT.jar | Bin 0 -> 16030 bytes target/classes/META-INF/MANIFEST.MF | 4 + .../COM1028-ad02184/pom.properties | 7 + .../com.flickfinder/COM1028-ad02184/pom.xml | 90 ++++++ .../classes/com/flickfinder/AppConfig.class | Bin 0 -> 3211 bytes target/classes/com/flickfinder/Main.class | Bin 0 -> 822 bytes .../controller/MovieController.class | Bin 0 -> 2738 bytes .../controller/PersonController.class | Bin 0 -> 2458 bytes .../com/flickfinder/dao/MovieDAO.class | Bin 0 -> 4523 bytes .../com/flickfinder/dao/PersonDAO.class | Bin 0 -> 3606 bytes .../classes/com/flickfinder/model/Movie.class | Bin 0 -> 1561 bytes .../com/flickfinder/model/MovieRating.class | Bin 0 -> 1051 bytes .../com/flickfinder/model/Person.class | Bin 0 -> 1597 bytes .../com/flickfinder/util/Database.class | Bin 0 -> 1444 bytes target/classes/movies.db | 0 target/classes/public/index.html | 74 +++++ target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 10 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 8 + .../TEST-com.flickfinder.IntegrationTests.xml | 287 ++++++++++++++++++ ...kfinder.controller.MovieControllerTest.xml | 219 +++++++++++++ ...finder.controller.PersonControllerTest.xml | 225 ++++++++++++++ .../TEST-com.flickfinder.dao.MovieDAOTest.xml | 65 ++++ ...TEST-com.flickfinder.dao.PersonDAOTest.xml | 65 ++++ .../TEST-com.flickfinder.model.MovieTest.xml | 64 ++++ .../TEST-com.flickfinder.model.PersonTest.xml | 64 ++++ .../com.flickfinder.IntegrationTests.txt | 4 + ...kfinder.controller.MovieControllerTest.txt | 4 + ...finder.controller.PersonControllerTest.txt | 4 + .../com.flickfinder.dao.MovieDAOTest.txt | 4 + .../com.flickfinder.dao.PersonDAOTest.txt | 4 + .../com.flickfinder.model.MovieTest.txt | 4 + .../com.flickfinder.model.PersonTest.txt | 4 + .../com/flickfinder/IntegrationTests.class | Bin 0 -> 6458 bytes .../controller/MovieControllerTest.class | Bin 0 -> 2738 bytes .../controller/PersonControllerTest.class | Bin 0 -> 2758 bytes .../com/flickfinder/dao/MovieDAOTest.class | Bin 0 -> 2426 bytes .../com/flickfinder/dao/PersonDAOTest.class | Bin 0 -> 2429 bytes .../com/flickfinder/model/MovieTest.class | Bin 0 -> 1270 bytes .../com/flickfinder/model/PersonTest.class | Bin 0 -> 1286 bytes .../com/flickfinder/util/Seeder.class | Bin 0 -> 4690 bytes 65 files changed, 2979 insertions(+), 70 deletions(-) create mode 100644 pom.xml create mode 100644 src/main/java/com/flickfinder/AppConfig.java create mode 100644 src/main/java/com/flickfinder/Main.java create mode 100644 src/main/java/com/flickfinder/controller/MovieController.java create mode 100644 src/main/java/com/flickfinder/controller/PersonController.java create mode 100644 src/main/java/com/flickfinder/dao/MovieDAO.java create mode 100644 src/main/java/com/flickfinder/dao/PersonDAO.java create mode 100644 src/main/java/com/flickfinder/model/Movie.java create mode 100644 src/main/java/com/flickfinder/model/MovieRating.java create mode 100644 src/main/java/com/flickfinder/model/Person.java create mode 100644 src/main/java/com/flickfinder/util/Database.java create mode 100644 src/main/resources/movies.db create mode 100644 src/main/resources/public/index.html create mode 100644 src/test/java/com/flickfinder/IntegrationTests.java create mode 100644 src/test/java/com/flickfinder/controller/MovieControllerTest.java create mode 100644 src/test/java/com/flickfinder/controller/PersonControllerTest.java create mode 100644 src/test/java/com/flickfinder/dao/MovieDAOTest.java create mode 100644 src/test/java/com/flickfinder/dao/PersonDAOTest.java create mode 100644 src/test/java/com/flickfinder/model/MovieTest.java create mode 100644 src/test/java/com/flickfinder/model/PersonTest.java create mode 100644 src/test/java/com/flickfinder/util/Seeder.java create mode 100644 target/COM1028-ad02184-1.0-SNAPSHOT.jar create mode 100644 target/classes/META-INF/MANIFEST.MF create mode 100644 target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.properties create mode 100644 target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.xml create mode 100644 target/classes/com/flickfinder/AppConfig.class create mode 100644 target/classes/com/flickfinder/Main.class create mode 100644 target/classes/com/flickfinder/controller/MovieController.class create mode 100644 target/classes/com/flickfinder/controller/PersonController.class create mode 100644 target/classes/com/flickfinder/dao/MovieDAO.class create mode 100644 target/classes/com/flickfinder/dao/PersonDAO.class create mode 100644 target/classes/com/flickfinder/model/Movie.class create mode 100644 target/classes/com/flickfinder/model/MovieRating.class create mode 100644 target/classes/com/flickfinder/model/Person.class create mode 100644 target/classes/com/flickfinder/util/Database.class create mode 100644 target/classes/movies.db create mode 100644 target/classes/public/index.html create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/surefire-reports/TEST-com.flickfinder.IntegrationTests.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.controller.MovieControllerTest.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.controller.PersonControllerTest.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.dao.MovieDAOTest.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.dao.PersonDAOTest.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.model.MovieTest.xml create mode 100644 target/surefire-reports/TEST-com.flickfinder.model.PersonTest.xml create mode 100644 target/surefire-reports/com.flickfinder.IntegrationTests.txt create mode 100644 target/surefire-reports/com.flickfinder.controller.MovieControllerTest.txt create mode 100644 target/surefire-reports/com.flickfinder.controller.PersonControllerTest.txt create mode 100644 target/surefire-reports/com.flickfinder.dao.MovieDAOTest.txt create mode 100644 target/surefire-reports/com.flickfinder.dao.PersonDAOTest.txt create mode 100644 target/surefire-reports/com.flickfinder.model.MovieTest.txt create mode 100644 target/surefire-reports/com.flickfinder.model.PersonTest.txt create mode 100644 target/test-classes/com/flickfinder/IntegrationTests.class create mode 100644 target/test-classes/com/flickfinder/controller/MovieControllerTest.class create mode 100644 target/test-classes/com/flickfinder/controller/PersonControllerTest.class create mode 100644 target/test-classes/com/flickfinder/dao/MovieDAOTest.class create mode 100644 target/test-classes/com/flickfinder/dao/PersonDAOTest.class create mode 100644 target/test-classes/com/flickfinder/model/MovieTest.class create mode 100644 target/test-classes/com/flickfinder/model/PersonTest.class create mode 100644 target/test-classes/com/flickfinder/util/Seeder.class diff --git a/README.md b/README.md index 2051d35..3c0f2e1 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,53 @@ -# Fortommy +## COM1028 Software Engineering - FlickFinder +This is the starting project for the COM1028 Software Engineering module. This project is a simple application that provides a RESTful API for accessing a movie database. The database is a simple SQLite database that contains information about movies, people, and their relationships. +## Dependencies -## Getting started +Overall, we have the following dependencies in our project: -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +- [sqllite-jdbc](https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc) - SQLite JDBC Driver +- [javalin](https://javalin.io/) - A simple web framework for Java +- [junit](https://junit.org/junit5/) - JUnit for unit testing +- [mockito](https://site.mockito.org/) - Mockito for mocking objects in unit tests +- [rest-assured](https://rest-assured.io/) - Testing and validating our APIs -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! +These dependencies are managed by Maven, and you can find them in the [pom.xml](pom.xml) file. -## Add your files +## Database -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +### Development Database -``` -cd existing_repo -git remote add origin https://gitlab.surrey.ac.uk/ad02184/fortommy.git -git branch -M main -git push -uf origin main -``` +The database is a simple SQLite database that contains information about movies, people, and their relationships. The database is structured as follows: -## Integrate with your tools + -- [ ] [Set up project integrations](https://gitlab.surrey.ac.uk/ad02184/fortommy/-/settings/integrations) +You've been given the IMDB movies database to work with. It is a simple database and you will only need to interact with it in a read only manner; you will not be adding data or modifying the database. -## Collaborate with your team +You can find the database in the [src/main/resources](src/main/resources) folder. The database is called `movies.db`. You should not modify this database in any way. However, it won't be there until you run the project for the first time. I am using the com.googlecode.maven-download-plugin to pull the database in from a remote location. This is defined in the [pom.xml](pom.xml) file. It should be pulled when you run the project for the first time. -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) +### Testing Database -## Test and Deploy +Although the development database is simple, it has a lot of data. This can make testing difficult. For testing we use a in-memory database. This database is created and populated with data before each test and destroyed after each test. This code can be found in [src/test/java/com/flickfinder/util/Seeder.java](src/test/java/com/flickfinder/util/Seeder.java). -Use the built-in continuous integration in GitLab. +## Getting Started -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) +1. Clone the repository: `git clone <repository address>` +2. Open the project in your favourite IDE (IntelliJ, Eclipse, etc.). While you can use any IDE, these instructions will assume you are using Eclipse. The project is a Maven project; as such, the process should be similar in other IDEs. +3. In Eclipse, got to File -> Open Projects from File System... and select the root directory of the project. -*** + -# Editing this README +4. In the package explorer, right click on the project and select Run As -> Maven Install. This will download all the dependencies and build the project, including the database. -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. + -## Suggestions for a good README +5. If all has gone well, you should see a message in the console saying "BUILD SUCCESS". If you see this, you are ready to run the project. Ignore, any warnings or errors about JRE System Library. -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + -## Name -Choose a self-explaining name for your project. +6. To run the project, right click on the project in the package explorer and locate `src/main/java/com/flickfinder/Main.java`, right click on this file and select Run As -> Java Application. -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. +7. You'll see a warning in the console: "SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". This is not a problem and can be ignored. -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +8. Open a browser. Ideally one with JSON rendering capabilities (e.g.Firefox or Chrome with a JSON extension). In the address bar, type `http://localhost:8000`. If all has gone well, you should see the API documentation. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8e36542 --- /dev/null +++ b/pom.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.flickfinder</groupId> + <artifactId>COM1028-ad02184</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>17</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + </properties> + + <dependencies> + <!-- sql light drivers --> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>3.45.1.0</version> + </dependency> + + <!-- javalin for the api --> + + <dependency> + <groupId>io.javalin</groupId> + <artifactId>javalin</artifactId> + <version>6.0.0</version> + </dependency> + + <!-- this is a dependancy for javalin --> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>2.16.1</version> + </dependency> + + <!-- j unit --> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.8.2</version> + <scope>test</scope> + </dependency> + + <!-- mockito --> + + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>5.10.0</version> + </dependency> + + <!-- rest assured --> + <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <version>5.4.0</version> + <scope>test</scope> + </dependency> + + </dependencies> + <build> + <plugins> + <plugin> + <groupId>com.googlecode.maven-download-plugin</groupId> + <artifactId>download-maven-plugin</artifactId> + <version>1.6.0</version> + <executions> + <execution> + <id>download-file</id> + <phase>generate-resources</phase> + <goals> + <goal>wget</goal> + </goals> + <configuration> + <url> + https://csee.pages.surrey.ac.uk/com1028/res/movies.db</url> + <outputDirectory>${project.basedir}/src/main/resources</outputDirectory> + <outputFileName>movies.db</outputFileName> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> diff --git a/src/main/java/com/flickfinder/AppConfig.java b/src/main/java/com/flickfinder/AppConfig.java new file mode 100644 index 0000000..49f0fc8 --- /dev/null +++ b/src/main/java/com/flickfinder/AppConfig.java @@ -0,0 +1,69 @@ +package com.flickfinder; + +import com.flickfinder.controller.MovieController; +import com.flickfinder.controller.PersonController; +import com.flickfinder.dao.MovieDAO; +import com.flickfinder.dao.PersonDAO; + +import io.javalin.Javalin; +import io.javalin.http.staticfiles.Location; + +/** + * This class is used to configure the Javalin web server. + * It sets up the routes and the static files location. + * As you implement the remaining functionality, you will need to update this + * class. + * + */ + +public class AppConfig { + + /** + * Sets up the routes and the static files location. + * As you can see, the routes are currently incomplete. Depending on how far you + * get in the assessment, you will update some or all of the routes in this + * method. + * + * @param port The port that the server should run on. + * @return The Javalin object that represents the running server. + */ + public static Javalin startServer(int port) { + Javalin app = Javalin.create(config -> { + config.staticFiles.add("/public", Location.CLASSPATH); + }).start(port); + + // Set up controllers + MovieDAO movieDao = new MovieDAO(); + MovieController movieController = new MovieController(movieDao); + + PersonDAO personDao = new PersonDAO(); + PersonController personController = new PersonController(personDao); + + // Uncomment the following lines as you progress through the assessment. + // PersonController personController = new PersonController(); + // PersonDAO personDao = new PersonDAO(); + // PersonController personController = new PersonController(personDao); + + /** + * Below are the routes for the application. + * You will need uncomment these as you progress through the assessment. + * Do not: + * - change the strings and methods passed to the get() method. + * - change the order of the routes. Order matters in Javalin, as the routes are + * pattern matched in the order they are defined. + * Only uncomment the routes for the functionality you have implemented. + */ + app.get("/movies/ratings/{year}", movieController::getRatingsByYear); + app.get("/movies", movieController::getAllMovies); + app.get("/movies/{id}", movieController::getMovieById); + app.get("/movies/{id}/stars", movieController::getPeopleByMovieId); + + app.get("/people", personController::getAllPeople); + app.get("/people/{id}", personController::getPersonById); + app.get("/people/{id}/movies", personController::getMoviesStarringPerson); + + return app; + + } + +} \ No newline at end of file diff --git a/src/main/java/com/flickfinder/Main.java b/src/main/java/com/flickfinder/Main.java new file mode 100644 index 0000000..9fb2e0f --- /dev/null +++ b/src/main/java/com/flickfinder/Main.java @@ -0,0 +1,34 @@ +package com.flickfinder; + +import com.flickfinder.util.Database; + +/** + * Entry point of the application. + * + */ + +public class Main { + /** + * The port that the server should run on. + */ + static int port = 8000; + + /** + * Set up a Javalin server and the database. + * + * @param args The command line arguments. + */ + public static void main(String[] args) { + + // This gives us a path to the database file, which is in the resources folder. + final String dbPath = "src/main/resources/movies.db"; + /** + * This sets up the database connection and starts the server. + * In this case, we are using a connection string to connect to the database. + * For testing, we are using an in-memory database. + */ + Database.getInstance("jdbc:sqlite:" + dbPath); + // start the server + AppConfig.startServer(port); + } +} \ No newline at end of file diff --git a/src/main/java/com/flickfinder/controller/MovieController.java b/src/main/java/com/flickfinder/controller/MovieController.java new file mode 100644 index 0000000..91d6895 --- /dev/null +++ b/src/main/java/com/flickfinder/controller/MovieController.java @@ -0,0 +1,120 @@ +package com.flickfinder.controller; + +import java.sql.SQLException; +import java.util.List; + +import com.flickfinder.dao.MovieDAO; +import com.flickfinder.model.Movie; + +import io.javalin.http.Context; + +/** + * The controller for the movie endpoints. + * + * The controller acts as an intermediary between the HTTP routes and the DAO. + * + * As you can see each method in the controller class is responsible for + * handling a specific HTTP request. + * + * Methods a Javalin Context object as a parameter and uses it to send a + * response back to the client. + * We also handle business logic in the controller, such as validating input and + * handling errors. + * + * Notice that the methods don't return anything. Instead, they use the Javalin + * Context object to send a response back to the client. + */ + +public class MovieController { + + /** + * The movie data access object. + */ + + private final MovieDAO movieDAO; + + /** + * Constructs a MovieController object and initializes the movieDAO. + */ + public MovieController(MovieDAO movieDAO) { + this.movieDAO = movieDAO; + } + + /** + * Returns a list of all movies in the database. + * + * @param ctx the Javalin context + */ + public void getAllMovies(Context ctx) { + String limitparam = ctx.queryParam("limit"); + try { + ctx.json(movieDAO.getAllMovies(limitparam)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); if(limitparam == null) { + limitparam = "50"; + } + e.printStackTrace(); + } + } + + /** + * Returns the movie with the specified id. + * + * @param ctx the Javalin context + */ + public void getMovieById(Context ctx) { + + int id = Integer.parseInt(ctx.pathParam("id")); + try { + Movie movie = movieDAO.getMovieById(id); + if (movie == null) { + ctx.status(404); + ctx.result("Movie not found"); + return; + } + ctx.json(movieDAO.getMovieById(id)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } + public void getRatingsByYear(Context ctx) { + + int year = Integer.parseInt(ctx.pathParam("year")); + String limitparam = ctx.queryParam("limit"); + String voteparam = ctx.queryParam("votes"); + if(limitparam == null) { + limitparam = "50"; + } + if (voteparam == null){ + voteparam = "0"; + } + try { + List<Movie> movie = movieDAO.getRatingsByYear(year, limitparam, voteparam); + if (movie == null) { + ctx.status(404); + ctx.result("Movie not found"); + return; + } + ctx.json(movieDAO.getRatingsByYear(year, limitparam, voteparam)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } + + public void getPeopleByMovieId(Context ctx) { + int id = Integer.parseInt(ctx.pathParam("id")); + try { + ctx.json(movieDAO.getPeopleByMovieId(id)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/flickfinder/controller/PersonController.java b/src/main/java/com/flickfinder/controller/PersonController.java new file mode 100644 index 0000000..8c10377 --- /dev/null +++ b/src/main/java/com/flickfinder/controller/PersonController.java @@ -0,0 +1,69 @@ +package com.flickfinder.controller; + +import java.sql.SQLException; +import java.util.List; + +import com.flickfinder.dao.PersonDAO; +import com.flickfinder.model.Movie; +import com.flickfinder.model.Person; + +import io.javalin.http.Context; + +public class PersonController { + private final PersonDAO personDAO; + // to complete the must-have requirements you need to add the following methods: + // getAllPeople + // getPersonById + // you will add further methods for the more advanced tasks; however, ensure your have completed + // the must have requirements before you start these. + public PersonController(PersonDAO personDAO) { + this.personDAO = personDAO; + } + + public void getAllPeople(Context ctx) { + String limitparam = ctx.queryParam("limit"); + try { + ctx.json(personDAO.getAllPeople(limitparam)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } + + public void getPersonById(Context ctx) { + int id = Integer.parseInt(ctx.pathParam("id")); + try { + Person person = personDAO.getPersonById(id); + System.out.println(person); + if (person == null){ + ctx.status(404); + ctx.result("Person not found"); + return; + } + ctx.json(personDAO.getPersonById(id)); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } + + public void getMoviesStarringPerson(Context ctx) { + + int id = Integer.parseInt(ctx.pathParam("id")); + try { + List<Movie> movie = personDAO.getMoviesStarringPerson(id); + if (movie == null) { + ctx.status(404); + ctx.result("Movie not found"); + return; + } + ctx.json(movie); + } catch (SQLException e) { + ctx.status(500); + ctx.result("Database error"); + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/flickfinder/dao/MovieDAO.java b/src/main/java/com/flickfinder/dao/MovieDAO.java new file mode 100644 index 0000000..53b2f9b --- /dev/null +++ b/src/main/java/com/flickfinder/dao/MovieDAO.java @@ -0,0 +1,120 @@ +package com.flickfinder.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import com.flickfinder.model.Movie; +import com.flickfinder.model.MovieRating; +import com.flickfinder.model.Person; +import com.flickfinder.util.Database; + +/** + * The Data Access Object for the Movie table. + * + * This class is responsible for getting data from the Movies table in the + * database. + * + */ +public class MovieDAO { + + /** + * The connection to the database. + */ + private final Connection connection; + + /** + * Constructs a SQLiteMovieDAO object and gets the database connection. + * + */ + public MovieDAO() { + Database database = Database.getInstance(); + connection = database.getConnection(); + } + + /** + * Returns a list of all movies in the database. + * + * @return a list of all movies in the database + * @throws SQLException if a database error occurs + */ + + public List<Movie> getAllMovies(String params) throws SQLException { + List<Movie> movies = new ArrayList<>(); + + Statement statement = connection.createStatement(); + String temp = params; + // I've set the limit to 10 for development purposes - you should do the same. + if (temp == null) { + temp = "50"; + } + ResultSet rs = statement.executeQuery("select * from movies LIMIT " + temp); + + while (rs.next()) { + movies.add(new Movie(rs.getInt("id"), rs.getString("title"), rs.getInt("year"))); + } + + return movies; + } + + public List<Movie> getAllMovies() throws SQLException { + return getAllMovies(null); + } + + /** + * Returns the movie with the specified id. + * + * @param id the id of the movie + * @return the movie with the specified id + * @throws SQLException if a database error occurs + */ + public Movie getMovieById(int id) throws SQLException { + + String statement = "select * from movies where id = ?"; + PreparedStatement ps = connection.prepareStatement(statement); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + + if (rs.next()) { + + return new Movie(rs.getInt("id"), rs.getString("title"), rs.getInt("year")); + } + + // return null if the id does not return a movie. + + return null; + + } + + public List<Movie> getRatingsByYear(int year, String Limitparam, String Votesparam) throws SQLException { + // Is this finished? + List<Movie> movies = new ArrayList<>(); + //String statement = "select * from movies where year = ? order by (select rating from ratings where movie_id = (select id from movies where year = ?)) asc"; + String statement = "select * from movies inner join ratings on movies.id = ratings.movie_id where movies.year = ? AND ratings.votes > " + Votesparam + " ORDER BY ratings.rating DESC LIMIT " + Limitparam; + PreparedStatement ps = connection.prepareStatement(statement); + ps.setInt(1, year); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + movies.add(new MovieRating(rs.getInt("id"), rs.getString("title"), rs.getInt("year"), rs.getDouble("rating"),rs.getInt("votes"))); + } + + return movies; + } + + public List<Person> getPeopleByMovieId(int id) throws SQLException{ + List<Person> people = new ArrayList<>(); + String statement = "SELECT * FROM people INNER JOIN stars ON people.id = stars.person_id WHERE stars.movie_id = ?"; + PreparedStatement ps = connection.prepareStatement(statement); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + people.add(new Person(rs.getInt("id"), rs.getString("name"), rs.getString("birth"))); + } + return people; + } +} diff --git a/src/main/java/com/flickfinder/dao/PersonDAO.java b/src/main/java/com/flickfinder/dao/PersonDAO.java new file mode 100644 index 0000000..7a3ef7e --- /dev/null +++ b/src/main/java/com/flickfinder/dao/PersonDAO.java @@ -0,0 +1,76 @@ +package com.flickfinder.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import com.flickfinder.util.Database; +import com.flickfinder.model.Movie; +import com.flickfinder.model.Person; +/** + * TODO: Implement this class + * + */ +public class PersonDAO { + private final Connection connection; + // for the must have requirements, you will need to implement the following + // methods: + // - getAllPeople() + // - getPersonById(int id) + // you will add further methods for the more advanced tasks; however, ensure your have completed + // the must have requirements before you start these. + public PersonDAO() { + Database database = Database.getInstance(); + connection = database.getConnection(); + } + + public List<Person> getAllPeople(String params) throws SQLException { + String temp = params; + if (temp == null) { + temp = "50"; + } + List<Person> people = new ArrayList<>(); + Statement statement = connection.createStatement(); + ResultSet rs = statement.executeQuery("select * from people LIMIT "+ temp); + while (rs.next()) { + people.add(new Person(rs.getInt("id"), rs.getString("name"), rs.getString("birth"))); + } + return people; + } + + public List<Person> getAllPeople() throws SQLException { + return this.getAllPeople(null); + } + + + public Person getPersonById(int id) throws SQLException{ + String statement = "select * from people where id = ?"; + PreparedStatement ps = connection.prepareStatement(statement); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + return new Person(rs.getInt("id"), rs.getString("name"), rs.getString("birth")); + } + return null; + } + + public List<Movie> getMoviesStarringPerson(int id) throws SQLException { + // Is this finished? + List<Movie> movies = new ArrayList<>(); + //String statement = "select * from movies where id = (select movie_id from stars where person_id = ?)"; + String statement = "select * from movies inner join stars on movies.id = stars.movie_id where stars.person_id = ?"; + PreparedStatement ps = connection.prepareStatement(statement); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + movies.add(new Movie(rs.getInt("id"), rs.getString("title"), rs.getInt("year"))); + } + + return movies; + } +} diff --git a/src/main/java/com/flickfinder/model/Movie.java b/src/main/java/com/flickfinder/model/Movie.java new file mode 100644 index 0000000..58d4fcd --- /dev/null +++ b/src/main/java/com/flickfinder/model/Movie.java @@ -0,0 +1,83 @@ +package com.flickfinder.model; + +/** + * Represents a movie with its unique identifier, title, and release year. + */ +public class Movie { + + private int id; + private String title; + private int year; + /** + * Constructs a Movie object with the specified id, title, and year. + * + * @param id the unique identifier of the movie + * @param title the title of the movie + * @param year the release year of the movie + */ + public Movie(int id, String title, int year) { + this.id = id; + this.title = title; + this.year = year; + } + + /** + * Returns the unique identifier of the movie. + * + * @return the id of the movie + */ + public int getId() { + return id; + } + + /** + * Sets the unique identifier of the movie. + * + * @param id the id to set + */ + public void setId(int id) { + this.id = id; + } + + /** + * Returns the title of the movie. + * + * @return the title of the movie + */ + public String getTitle() { + return title; + } + + /** + * Sets the title of the movie. + * + * @param title the title to set + */ + public void setTitle(String title) { + this.title = title; + } + + /** + * Returns the release year of the movie. + * + * @return the release year of the movie + */ + public int getYear() { + return year; + } + + /** + * Sets the release year of the movie. + * + * @param year the release year to set + */ + public void setYear(int year) { + this.year = year; + } + + @Override + public String toString() { + return "Movie [id=" + id + ", title=" + title + ", year=" + year+ "]"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/flickfinder/model/MovieRating.java b/src/main/java/com/flickfinder/model/MovieRating.java new file mode 100644 index 0000000..a2f9644 --- /dev/null +++ b/src/main/java/com/flickfinder/model/MovieRating.java @@ -0,0 +1,26 @@ +package com.flickfinder.model; + +public class MovieRating extends Movie{ + double rating; + int votes; + public MovieRating(int id, String title, int year, double rating, int votes) { + super(id, title, year); + this.rating = rating; + this.votes = votes; + } + public Double getRating() { + return this.rating; + } + + public void setRating(double rating) { + this.rating = rating; + } + + public Integer getVotes() { + return this.votes; + } + + public void setVotes(int votes) { + this.votes = votes; + } +} diff --git a/src/main/java/com/flickfinder/model/Person.java b/src/main/java/com/flickfinder/model/Person.java new file mode 100644 index 0000000..2032267 --- /dev/null +++ b/src/main/java/com/flickfinder/model/Person.java @@ -0,0 +1,53 @@ +package com.flickfinder.model; + +/** + * A person in the movie database. + * + * @TODO: Implement this class + */ +public class Person { + + // - Add your code here: use the MovieDAO.java as an example + // - Check the ERD and database schema in the docs folder + // (./docs/database_schema.md) to ensure each column in the People table + // has an attribute in the model. (DELETE THIS COMMENT WHEN DONE) + private int id; + private String name; + private String DOB; + + public Person(int id, String name, String DOB) { + this.id = id; + this.name = name; + this.DOB = DOB; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDOB() { + return DOB; + } + + public void setDOB(String dOB) { + DOB = dOB; + } + + @Override + public String toString() { + return "Person [id=" + id + ", name=" + name + ", DOB=" + DOB + "]"; + } + +} diff --git a/src/main/java/com/flickfinder/util/Database.java b/src/main/java/com/flickfinder/util/Database.java new file mode 100644 index 0000000..e7a6e35 --- /dev/null +++ b/src/main/java/com/flickfinder/util/Database.java @@ -0,0 +1,111 @@ +package com.flickfinder.util; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * A class to handle the database connection. + * You should not need to modify this class. + * + */ + +public class Database { + + /** + * The instance of the database. + */ + private static Database instance; + + /** + * The connection to the database. + * This is optional as we can also + * pass in a connection to the database. + */ + Connection connection; + + private Database(String path) { + try { + this.connection = DriverManager.getConnection(path); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * This allows use to pass in an existing database connection. + * This is useful for testing. + * + * @param connection + */ + + private Database(Connection connection) { + this.connection = connection; + } + + /** + * Returns the instance of the database. + * We pass in the path to the database. + * This is the path to the database file. + * + * @param path + * @return + */ + public static Database getInstance(String path) { + if (instance == null) { + instance = new Database(path); + } + return instance; + } + + /** + * Returns the instance of the database. However, this methods allows us + * to pass in the connection to an instance of an in-memory database. + * We use this for testing. Notice how we are using the same method name, overloading the above + * method. + * + * @param conn + * @return + */ + public static Database getInstance(Connection conn) { + + instance = new Database(conn); + + return instance; + + } + + /** + * Returns the instance of the database. + * notice how this method is static and does not take any parameters. + * This is because if we have already set the instance of the database, we + * can just return the instance. There is no need to pass in the path or connection to the database. + * + * + * @return + */ + + public static Database getInstance() { + + /** + * If the instance is null, we throw an IllegalStateException. + * This is because we need to set the instance of the database before we can use it. + * As we are using a singleton pattern, we only have to do this once. + */ + if (instance == null) { + throw new IllegalStateException("Database instance not set"); + } + return instance; + } + + /** + * Returns the connection to the database. + * + * @return + */ + + public Connection getConnection() { + return this.connection; + } + +} diff --git a/src/main/resources/movies.db b/src/main/resources/movies.db new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/public/index.html b/src/main/resources/public/index.html new file mode 100644 index 0000000..c968e8a --- /dev/null +++ b/src/main/resources/public/index.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>API Documentation</title> + <style> + body { + font-family: Arial, sans-serif; + margin: 20px; + } + + .route { + margin-bottom: 10px; + } + + .route h3 { + margin: 0; + color: #333; + } + + .route p { + margin: 5px 0; + color: #666; + } + </style> +</head> + +<body> + <h1>API Documentation</h1> + + <div class="route"> + <h3><a href="/movies"> GET /movies </a></h3> + <p>Returns all movies.</p> + </div> + + <div class="route"> + <h3><a href="/movies/63018"> GET /movies/{id} </a></h3> + <p>Returns a movie by its ID.</p> + </div> + <div class="route"> + <h3><a href="/movies/407887/stars"> GET /movies/{id}/stars </a></h3> + <p>Returns all stars of a movie</p> + </div> + <div class="route"> + + <h3><a href="/movies/ratings/1999"> GET /movies/ratings/{year} </a></h3> + <p>Retrieves a list of movies ordered by rating in descending order, for a given year</p> + + </div> + + <div class="route"> + <h3> <a href="/people">GET /people </a></h3> + <p>Returns a list of people</p> + </div> + + <div class="route"> + <h3><a href="/people/138"> GET /people/{id} </a></h3> + <p>Returns a person by their ID.</p> + </div> + + <div class="route"> + <h3><a href="/people/138/movies">GET /people/{id}/movies </a></h3> + <p>Returns all movies of a person</p> + </div> + + + + + +</body> + +</html> \ No newline at end of file diff --git a/src/test/java/com/flickfinder/IntegrationTests.java b/src/test/java/com/flickfinder/IntegrationTests.java new file mode 100644 index 0000000..b123f06 --- /dev/null +++ b/src/test/java/com/flickfinder/IntegrationTests.java @@ -0,0 +1,174 @@ +package com.flickfinder; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasItems; + +import org.hamcrest.collection.HasItemInArray; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.flickfinder.util.Database; +import com.flickfinder.util.Seeder; + +import io.javalin.Javalin; + +/** + * These are our integration tests. + * We are testing the application as a whole, including the database. + */ +class IntegrationTests { + + /** + * The Javalin app.* + */ + Javalin app; + + /** + * The seeder object. + */ + Seeder seeder; + + /** + * The port number. Try and use a different port number from your main + * application. + */ + int port = 6000; + + /** + * The base URL for our test application. + */ + String baseURL = "http://localhost:" + port; + + /** + * Bootstraps the application before each test. + */ + @BeforeEach + void setUp() { + var url = "jdbc:sqlite::memory:"; + seeder = new Seeder(url); + Database.getInstance(seeder.getConnection()); + app = AppConfig.startServer(port); + } + + /** + * Test that the application retrieves a list of all movies. + * Notice how we are checking the actual content of the list. + * At this higher level, we are not concerned with the implementation details. + */ + + @Test + void retrieves_a_list_of_all_movies() { + given().when().get(baseURL + "/movies").then().assertThat().statusCode(200). // Assuming a successful + // response returns HTTP + // 200 + body("id", hasItems(1, 2, 3, 4, 5)) + .body("title", hasItems("The Shawshank Redemption", "The Godfather", + "The Godfather: Part II", "The Dark Knight", "12 Angry Men")) + .body("year", hasItems(1994, 1972, 1974, 2008, 1957)); + } + + @Test + void retrieves_a_single_movie_by_id() { + + given().when().get(baseURL + "/movies/1").then().assertThat().statusCode(200). // Assuming a successful + // response returns HTTP + // 200 + body("id", equalTo(1)) + .body("title", equalTo("The Shawshank Redemption")) + .body("year", equalTo(1994)); + } + + @Test + void retrieves_movies_by_person_id() { + + given().when().get(baseURL + "/people/4/movies").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems(2,3)) + .body("title", hasItems("The Godfather", "The Godfather: Part II")) + .body("year", hasItems(1972, 1974)); + } + + @Test + void retrieves_movies_by_year_sorted() { + given().when().get(baseURL + "/movies/ratings/2008").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems(4)) + .body("title", hasItems("The Dark Knight")) + .body("year", hasItems(2008)); + } + + @Test + void retrieves_stars_by_movieid() { + + given().when().get(baseURL + "/movies/1/stars").then().assertThat().statusCode(200). // Assuming a successful + // response returns HTTP + // 200 + body("id", hasItems(1, 2)) + .body("name", hasItems("Tim Robbins", "Morgan Freeman")) + .body("dob", hasItems("1958-10-16", "1937-06-01")); + } + + @Test + void retrieves_a_list_of_all_people() { + given().when().get(baseURL + "/people").then().assertThat().statusCode(200). // Assuming a successful + // response returns HTTP + // 200 + body("id", hasItems(1, 2, 3, 4, 5)) + .body("name", hasItems("Tim Robbins", "Morgan Freeman", + "Christopher Nolan", "Al Pacino", "Henry Fonda")) + .body("dob", hasItems("1958-10-16", "1937-06-01", "1970-07-30", "1940-04-25", "1905-05-16")); + } + + @Test + void retrieves_a_single_person_by_id() { + + given().when().get(baseURL + "/people/1").then().assertThat().statusCode(200). // Assuming a successful + body("id", equalTo(1)) + .body("name", equalTo("Tim Robbins")) + .body("dob", equalTo("1958-10-16")); + } + @Test + void listofmovieswithlimit(){ + given().when().get(baseURL + "/movies?limit=2").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems(1, 2)) + .body("title", hasItems("The Shawshank Redemption", "The Godfather")) + .body("year", hasItems(1994, 1972)); + } + + @Test + void listofallpeoplewithlimit(){ + given().when().get(baseURL + "/people?limit=2").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems(1, 2)) + .body("name", hasItems("Tim Robbins", "Morgan Freeman")) + .body("dob", hasItems("1958-10-16", "1937-06-01")); + } + + @Test + void yearwithlimit(){ + given().when().get(baseURL + "/movies/ratings/1972?limit=1").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems(2)) + .body("title", hasItems("The Godfather")) + .body("year", hasItems(1972)); + } + + + //Should be empty + @Test + void yearwithvote(){ + given().when().get(baseURL + "/movies/ratings/1994?votes=2200001").then().assertThat().statusCode(200). // Assuming a successful + body("id", hasItems()) + .body("title", hasItems()) + .body("year", hasItems()); + } + + /** + * Tears down the application after each test. + * We want to make sure that each test runs in isolation. + */ + @AfterEach + void tearDown() { + seeder.closeConnection(); + app.stop(); + } + +} diff --git a/src/test/java/com/flickfinder/controller/MovieControllerTest.java b/src/test/java/com/flickfinder/controller/MovieControllerTest.java new file mode 100644 index 0000000..cef1d9b --- /dev/null +++ b/src/test/java/com/flickfinder/controller/MovieControllerTest.java @@ -0,0 +1,124 @@ +package com.flickfinder.controller; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.sql.SQLException; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.flickfinder.dao.MovieDAO; + +import io.javalin.http.Context; + +/** + * Test for the Movie Controller. + */ + +class MovieControllerTest { + + /** + * + * The context object, later we will mock it. + */ + private Context ctx; + + /** + * The movie data access object. + */ + private MovieDAO movieDAO; + + /** + * The movie controller. + */ + + private MovieController movieController; + + @BeforeEach + void setUp() { + // We create a mock of the MovieDAO class. + movieDAO = mock(MovieDAO.class); + // We create a mock of the Context class. + ctx = mock(Context.class); + + // We create an instance of the MovieController class and pass the mock object + movieController = new MovieController(movieDAO); + } + + /** + * Tests the getAllMovies method. + * We expect to get a list of all movies in the database. + */ + + @Test + void testGetAllMovies() { + movieController.getAllMovies(ctx); + try { + verify(movieDAO).getAllMovies(null); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * Test that the controller returns a 500 status code when a database error + * occurs + * + * @throws SQLException + */ + @Test + void testThrows500ExceptionWhenGetAllDatabaseError() throws SQLException { + when(movieDAO.getAllMovies(null)).thenThrow(new SQLException()); + movieController.getAllMovies(ctx); + verify(ctx).status(500); + } + + /** + * Tests the getMovieById method. + * We expect to get the movie with the specified id. + */ + + @Test + void testGetMovieById() { + when(ctx.pathParam("id")).thenReturn("1"); + movieController.getMovieById(ctx); + try { + verify(movieDAO).getMovieById(1); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * Test a 500 status code is returned when a database error occurs. + * + * @throws SQLException + */ + + @Test + void testThrows500ExceptionWhenGetByIdDatabaseError() throws SQLException { + when(ctx.pathParam("id")).thenReturn("1"); + when(movieDAO.getMovieById(1)).thenThrow(new SQLException()); + movieController.getMovieById(ctx); + verify(ctx).status(500); + } + + /** + * Test that the controller returns a 404 status code when a movie is not found + * or + * database error. + * + * @throws SQLException + */ + + @Test + void testThrows404ExceptionWhenNoMovieFound() throws SQLException { + when(ctx.pathParam("id")).thenReturn("1"); + when(movieDAO.getMovieById(1)).thenReturn(null); + movieController.getMovieById(ctx); + verify(ctx).status(404); + } + +} \ No newline at end of file diff --git a/src/test/java/com/flickfinder/controller/PersonControllerTest.java b/src/test/java/com/flickfinder/controller/PersonControllerTest.java new file mode 100644 index 0000000..23ac57e --- /dev/null +++ b/src/test/java/com/flickfinder/controller/PersonControllerTest.java @@ -0,0 +1,72 @@ +package com.flickfinder.controller; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.sql.SQLException; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.flickfinder.dao.PersonDAO; + +import io.javalin.http.Context; + +class PersonControllerTest { + private Context ctx; + private PersonDAO personDAO; + private PersonController personController; + + @BeforeEach + void setUp() { + personDAO = mock(PersonDAO.class); + ctx = mock(Context.class); + personController = new PersonController(personDAO); + } + + @Test + void testGetAllPeople() { + personController.getAllPeople(ctx); + try { + verify(personDAO).getAllPeople(null); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Test + void testThrows500ExceptionWhenGetAllDatabaseError() throws SQLException { + when(personDAO.getAllPeople(null)).thenThrow(new SQLException()); + personController.getAllPeople(ctx); + verify(ctx).status(500); + } + + @Test + void testGetMovieById() { + when(ctx.pathParam("id")).thenReturn("1"); + personController.getPersonById(ctx); + try { + verify(personDAO).getPersonById(1); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Test + void testThrows500ExceptionWhenGetByIdDatabaseError() throws SQLException { + when(ctx.pathParam("id")).thenReturn("1"); + when(personDAO.getPersonById(1)).thenThrow(new SQLException()); + personController.getPersonById(ctx); + verify(ctx).status(500); + } + + @Test + void testThrows404ExceptionWhenNoPersonFound() throws SQLException { + when(ctx.pathParam("id")).thenReturn("3"); + when(personDAO.getPersonById(3)).thenReturn(null); + personController.getPersonById(ctx); + verify(ctx).status(404); + } + +} \ No newline at end of file diff --git a/src/test/java/com/flickfinder/dao/MovieDAOTest.java b/src/test/java/com/flickfinder/dao/MovieDAOTest.java new file mode 100644 index 0000000..d4e72d6 --- /dev/null +++ b/src/test/java/com/flickfinder/dao/MovieDAOTest.java @@ -0,0 +1,107 @@ +package com.flickfinder.dao; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.sql.SQLException; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.flickfinder.model.Movie; +import com.flickfinder.util.Database; +import com.flickfinder.util.Seeder; + +/** + * Test for the Movie Data Access Object. + * This uses an in-memory database for testing purposes. + */ + +class MovieDAOTest { + + /** + * The movie data access object. + */ + + private MovieDAO movieDAO; + + /** + * Seeder + */ + + Seeder seeder; + + /** + * Sets up the database connection and creates the tables. + * We are using an in-memory database for testing purposes. + * This gets passed to the Database class to get a connection to the database. + * As it's a singleton class, the entire application will use the same + * connection. + */ + @BeforeEach + void setUp() { + var url = "jdbc:sqlite::memory:"; + seeder = new Seeder(url); + Database.getInstance(seeder.getConnection()); + movieDAO = new MovieDAO(); + + } + + /** + * Tests the getAllMovies method. + * We expect to get a list of all movies in the database. + * We have seeded the database with 5 movies, so we expect to get 5 movies back. + * At this point, we avoid checking the actual content of the list. + */ + @Test + void testGetAllMovies() { + try { + List<Movie> movies = movieDAO.getAllMovies(); + assertEquals(5, movies.size()); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + } + + /** + * Tests the getMovieById method. + * We expect to get the movie with the specified id. + */ + @Test + void testGetMovieById() { + Movie movie; + try { + movie = movieDAO.getMovieById(1); + assertEquals("The Shawshank Redemption", movie.getTitle()); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + } + + /** + * Tests the getMovieById method with an invalid id. Null should be returned. + */ + @Test + void testGetMovieByIdInvalidId() { + // write an assertThrows for a SQLException + + try { + Movie movie = movieDAO.getMovieById(1000); + assertEquals(null, movie); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + + } + + @AfterEach + void tearDown() { + seeder.closeConnection(); + } + +} \ No newline at end of file diff --git a/src/test/java/com/flickfinder/dao/PersonDAOTest.java b/src/test/java/com/flickfinder/dao/PersonDAOTest.java new file mode 100644 index 0000000..578e514 --- /dev/null +++ b/src/test/java/com/flickfinder/dao/PersonDAOTest.java @@ -0,0 +1,74 @@ +package com.flickfinder.dao; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.sql.SQLException; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.flickfinder.model.Movie; +import com.flickfinder.model.Person; +import com.flickfinder.util.Database; +import com.flickfinder.util.Seeder; + +/** + * TODO: Implement this class + */ +class PersonDAOTest { + private PersonDAO personDAO; + Seeder seeder; + + @BeforeEach + void setUp() { + var url = "jdbc:sqlite::memory:"; + seeder = new Seeder(url); + Database.getInstance(seeder.getConnection()); + personDAO = new PersonDAO(); + } + + @Test + void testGetAllPeople() { + try { + List<Person> people = personDAO.getAllPeople(); + assertEquals(5, people.size()); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + } + + @Test + void testGetPersonById() { + Person person; + try { + person = personDAO.getPersonById(2); + assertEquals("Morgan Freeman", person.getName()); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + } + + @Test + void testGetPersonByIdInvalidId() { + // write an assertThrows for a SQLException + + try { + Person person = personDAO.getPersonById(10000); + assertEquals(null, person); + } catch (SQLException e) { + fail("SQLException thrown"); + e.printStackTrace(); + } + + } + + @AfterEach + void tearDown() { + seeder.closeConnection(); + } +} \ No newline at end of file diff --git a/src/test/java/com/flickfinder/model/MovieTest.java b/src/test/java/com/flickfinder/model/MovieTest.java new file mode 100644 index 0000000..6ae72b8 --- /dev/null +++ b/src/test/java/com/flickfinder/model/MovieTest.java @@ -0,0 +1,51 @@ +package com.flickfinder.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +/** + * Test for the Movie Model. + * + * + */ +public class MovieTest { + + /** + * The movie object to be tested. + */ + private Movie movie; + + /** + * Set up the movie object before each test. + * + */ + @BeforeEach + public void setUp() { + movie = new Movie(1, "The Matrix", 1999); + } + + /** + * Test the movie object is created with the correct values. + */ + @Test + public void testMovieCreated() { + assertEquals(1, movie.getId()); + assertEquals("The Matrix", movie.getTitle()); + assertEquals(1999, movie.getYear()); + } + + /** + * Test the movie object is created with the correct values. + */ + @Test + public void testMovieSetters() { + movie.setId(2); + movie.setTitle("The Matrix Reloaded"); + movie.setYear(2003); + assertEquals(2, movie.getId()); + assertEquals("The Matrix Reloaded", movie.getTitle()); + assertEquals(2003, movie.getYear()); + } +} diff --git a/src/test/java/com/flickfinder/model/PersonTest.java b/src/test/java/com/flickfinder/model/PersonTest.java new file mode 100644 index 0000000..15b9d2b --- /dev/null +++ b/src/test/java/com/flickfinder/model/PersonTest.java @@ -0,0 +1,37 @@ +package com.flickfinder.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +/** + * + * TODO: Implement this class + * + */ + +class PersonTest { + private Person person; + + @BeforeEach + public void setUp() { + person = new Person(1, "Ali", "2005"); + } + + @Test + public void testPersonCreated() { + assertEquals(1, person.getId()); + assertEquals("Ali", person.getName()); + assertEquals("2005", person.getDOB()); + } + + @Test + public void testPersonSetters() { + person.setId(3); + person.setName("Stair"); + person.setDOB("2007"); + assertEquals(3, person.getId()); + assertEquals("Stair", person.getName()); + assertEquals("2007", person.getDOB()); + } +} \ No newline at end of file diff --git a/src/test/java/com/flickfinder/util/Seeder.java b/src/test/java/com/flickfinder/util/Seeder.java new file mode 100644 index 0000000..6925d49 --- /dev/null +++ b/src/test/java/com/flickfinder/util/Seeder.java @@ -0,0 +1,172 @@ +package com.flickfinder.util; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +/** + * A class to seed an in-memory database with tables and data for testing + * purposes. + * Notice how we work with a limited number of movies, people, stars, directors, + * and ratings. + * This is so we can rationalise about the responses we expect from the + * database. + * + * You should not need to modify this file. + * + */ +public class Seeder { + + /** + * The connection to the database. + * + */ + Connection conn; + + /** + * The URL of the database. + */ + String url; + + /** + * Constructs a Seeder object and initializes the connection to the database. + * You may want to add further records to support your testing; however, this + * is optional. + * + * @param url + */ + public Seeder(String url) { + this.url = url; + try { + this.conn = DriverManager.getConnection(url); + createTables(); + } catch (SQLException e) { + e.printStackTrace(); + } + + } + + /** + * Creates the tables and inserts data into the database. + */ + public void createTables() { + try { + + Statement stmt = conn.createStatement(); + stmt.execute("DROP TABLE IF EXISTS stars"); + stmt.execute("DROP TABLE IF EXISTS directors"); + stmt.execute("DROP TABLE IF EXISTS people"); + stmt.execute("DROP TABLE IF EXISTS movies"); + stmt.execute("DROP TABLE IF EXISTS ratings"); + + String createMoviesTable = "CREATE TABLE movies (" + + " id INTEGER," + + " title TEXT NOT NULL," + + " year NUMERIC," + + " PRIMARY KEY(id)" + + ");"; + + String createStarsTable = "CREATE TABLE stars (" + + " movie_id INTEGER NOT NULL," + + " person_id INTEGER NOT NULL," + + " FOREIGN KEY(movie_id) REFERENCES movies(id)," + + " FOREIGN KEY(person_id) REFERENCES people(id)" + + ");"; + + String createDirectorsTable = "CREATE TABLE directors (" + + " movie_id INTEGER NOT NULL," + + " person_id INTEGER NOT NULL," + + " FOREIGN KEY(movie_id) REFERENCES movies(id)," + + " FOREIGN KEY(person_id) REFERENCES people(id)" + + ");"; + + String createRatingsTable = "CREATE TABLE ratings (" + + " movie_id INTEGER NOT NULL," + + " rating REAL NOT NULL," + + " votes INTEGER NOT NULL," + + " FOREIGN KEY(movie_id) REFERENCES movies(id)" + + ");"; + + String createPeopleTable = "CREATE TABLE people (" + + " id INTEGER," + + " name TEXT NOT NULL," + + " birth NUMERIC," + + " PRIMARY KEY(id)" + + ");"; + + stmt.execute(createPeopleTable); + stmt.execute(createMoviesTable); + stmt.execute(createRatingsTable); + stmt.execute(createDirectorsTable); + stmt.execute(createStarsTable); + // Inserting into movies + stmt.execute("INSERT INTO movies (id, title, year) VALUES(1, 'The Shawshank Redemption', 1994)"); + stmt.execute("INSERT INTO movies (id, title, year) VALUES(2, 'The Godfather', 1972)"); + stmt.execute("INSERT INTO movies (id, title, year) VALUES(3, 'The Godfather: Part II', 1974)"); + stmt.execute("INSERT INTO movies (id, title, year) VALUES(4, 'The Dark Knight', 2008)"); + stmt.execute("INSERT INTO movies (id, title, year) VALUES(5, '12 Angry Men', 1957)"); + + // Inserting into people + stmt.execute("INSERT INTO people (id, name, birth) VALUES(1, 'Tim Robbins', '1958-10-16')"); + stmt.execute("INSERT INTO people (id, name, birth) VALUES(2, 'Morgan Freeman', '1937-06-01')"); + stmt.execute("INSERT INTO people (id, name, birth) VALUES(3, 'Christopher Nolan', '1970-07-30')"); + stmt.execute("INSERT INTO people (id, name, birth) VALUES(4, 'Al Pacino', '1940-04-25')"); + stmt.execute("INSERT INTO people (id, name, birth) VALUES(5, 'Henry Fonda', '1905-05-16')"); + + // Inserting into stars + stmt.execute("INSERT INTO stars (movie_id, person_id) VALUES(1, 1)"); + stmt.execute("INSERT INTO stars (movie_id, person_id) VALUES(1, 2)"); + stmt.execute("INSERT INTO stars (movie_id, person_id) VALUES(2, 4)"); + stmt.execute("INSERT INTO stars (movie_id, person_id) VALUES(3, 4)"); + stmt.execute("INSERT INTO stars (movie_id, person_id) VALUES(5, 5)"); + + // Inserting into directors + stmt.execute("INSERT INTO directors (movie_id, person_id) VALUES(1, 3)"); + stmt.execute("INSERT INTO directors (movie_id, person_id) VALUES(2, 3)"); + stmt.execute("INSERT INTO directors (movie_id, person_id) VALUES(3, 3)"); + stmt.execute("INSERT INTO directors (movie_id, person_id) VALUES(4, 3)"); + stmt.execute("INSERT INTO directors (movie_id, person_id) VALUES(5, 3)"); + + // Inserting into ratings + stmt.execute("INSERT INTO ratings (movie_id, rating, votes) VALUES (1, 9.3, 2200000)"); + stmt.execute("INSERT INTO ratings (movie_id, rating, votes) VALUES (2, 9.2, 1500000)"); + stmt.execute("INSERT INTO ratings (movie_id, rating, votes) VALUES (3, 9.0, 1000000)"); + stmt.execute("INSERT INTO ratings (movie_id, rating, votes) VALUES (4, 8.8, 2000000)"); + stmt.execute("INSERT INTO ratings (movie_id, rating, votes) VALUES (5, 8.9, 500000)"); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * Returns the connection to the database. + * + * @return the connection to the database + */ + public Connection getConnection() { + return this.conn; + } + + /** + * Closes the connection to the database. + */ + public void closeConnection() { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * Returns the URL of the database. + * + * @return the URL of the database + */ + public String getUrl() { + return url; + } + +} \ No newline at end of file diff --git a/target/COM1028-ad02184-1.0-SNAPSHOT.jar b/target/COM1028-ad02184-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..a471048808ff4d7c2ec96a3fa6bd88914b0c57f5 GIT binary patch literal 16030 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%0D`=}MA74-3<ziJKSQPVB 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 XCkguE@UN$CEP#X;f4qF<^#c4KhI3rW literal 0 HcmV?d00001 diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..9bdf3b1 --- /dev/null +++ b/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Build-Jdk-Spec: 21 +Created-By: Maven Integration for Eclipse + diff --git a/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.properties b/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.properties new file mode 100644 index 0000000..f4ff6dc --- /dev/null +++ b/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Sun May 12 15:39:59 BST 2024 +artifactId=COM1028-ad02184 +groupId=com.flickfinder +m2e.projectLocation=/Users/alistairdeane/Desktop/com1028ad02184 +m2e.projectName=COM1028-ad02184 +version=1.0-SNAPSHOT diff --git a/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.xml b/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.xml new file mode 100644 index 0000000..8e36542 --- /dev/null +++ b/target/classes/META-INF/maven/com.flickfinder/COM1028-ad02184/pom.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.flickfinder</groupId> + <artifactId>COM1028-ad02184</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>17</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + </properties> + + <dependencies> + <!-- sql light drivers --> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>3.45.1.0</version> + </dependency> + + <!-- javalin for the api --> + + <dependency> + <groupId>io.javalin</groupId> + <artifactId>javalin</artifactId> + <version>6.0.0</version> + </dependency> + + <!-- this is a dependancy for javalin --> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>2.16.1</version> + </dependency> + + <!-- j unit --> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.8.2</version> + <scope>test</scope> + </dependency> + + <!-- mockito --> + + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>5.10.0</version> + </dependency> + + <!-- rest assured --> + <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <version>5.4.0</version> + <scope>test</scope> + </dependency> + + </dependencies> + <build> + <plugins> + <plugin> + <groupId>com.googlecode.maven-download-plugin</groupId> + <artifactId>download-maven-plugin</artifactId> + <version>1.6.0</version> + <executions> + <execution> + <id>download-file</id> + <phase>generate-resources</phase> + <goals> + <goal>wget</goal> + </goals> + <configuration> + <url> + https://csee.pages.surrey.ac.uk/com1028/res/movies.db</url> + <outputDirectory>${project.basedir}/src/main/resources</outputDirectory> + <outputFileName>movies.db</outputFileName> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> diff --git a/target/classes/com/flickfinder/AppConfig.class b/target/classes/com/flickfinder/AppConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..23c02c49587715e5240e4c0c2c9a38c89a95dc19 GIT binary patch literal 3211 zcma)8`BxKH6#gD0Oo)SGTybI1r~%YzwTlwP22eo*QbMtGACd`-OlHQJ36)yA@2z&< zH@mmLbrp}C(?6i6e^XEIn<WecXisux-rW6u_rCkyU;o_t6Tor&6h{qe1w=$dQOD4D zL7tH%P1Yx+a}yVoyu(m;Ox0DVo1r$<K9(S@n237Bi6Q6nib)bJsrIa^S9VlQDwg%U zqZ+!@Yv^{lq*&=VL^KFkD`FiQ84{`?adA!6r8C}}jO8swb`*xgsa0*YXREbc2MG}y zu#q8ZJF-PVZAlF*D=T0#!;ZXBl8Ty|pDwC;L9wKQY)FH~jH>iy&c(5bL(;_1u~aN? z=#FJ*8fm!Fl%oF~$5w3TAnssjOJ$cThV7@@#{@Jp>|9Q0Sg~wFcca+JqiAF3Tq+le z!V?dN(Td$Xj3mRZ<-@3Wpg3aK%dlB0@yu<>k{wl_w57|lifmnpBZYPW9U?lhpJDw% zg}u(O8P;0L#j<KCLxw(7)-;B_e(^#Ll=gcgOiF;^pa==KQQ@a#y`WLyPgjQ<N^}X_ zWHr<WQ;uUw{jMFa+YX61j60}hClzXiv*D<6jzvkPS5#kQ*fPov)p~?pq?9q$bPRVf z2tHy7+B^qiILaUf7+zKjR}!e@<YUz8VY0+K(@r45nJ2gvQ!z|UNl>{m9E~1^{#8L( zTJ2R(h@p>1<#~|2sOpf3;WWdBFu9V7fJ{Bk;H-eGh(Qd|z79c5r6{VC!G5KNqc4Uv zl#-+7PpO(h?XV{ds;`h+5b%@;!C^P|@&xU_dW;|^U{u6?7-L9=Ji0~o>=(IxDQo1( znV~b(_hvJ>+;C>JpIR>LbVVH+5%*(Uzyl&4#6t|bLylI8l-frw6d2O~r+t<S)ZOTh zFf=XQz!}pF5RCL11#13vSyfkt%B2a#8kHybc1ZAawK3UJ`L|DuI8!PCy}fF_R4k^w zqF7E&v1SyDAz~VQ9I^qPj%hM%3<KuRU($-XL!eJK7@DihFB)GItt(3@_`{E3f0YWM zy27X=XZ5Bx=D4?(Dpl@nVM@`V<VlD99jH<Y`K#I{l(Z(7CJJ(r$`nA8q~ViHg~1>b zRXt8M<cE{r?`{7n&JfQTWh<}nJwX$)Qka8$eo`(yhT+(bC7XkaGi4O)M$9s73b&Xy zUdi#gI$Vz9VLU0~BCJOKf11v&MKQY_&yi6sIb0=*XZca|oQUVSa3c-C5pS&b%#PDo zCxI8az)K=t<^m!KWHikkuQoAX<;>SaydE%JPS5N>ftXi0^O}e^IWs|;!|nj<nRSI+ zk+<V$#XBP24fM&lCq?@2bLIykKIF^>SD&ADzV(ke_Y)DHa_$!5dO_u=WPD_MRV7S5 zkK+q`Dd4(@ukbaUbMDFHo-e9CV@xYj)-5&xEEnaxV_1anno{`d?=arJl2;G!6tR<8 z!<a6cY40xL+71qmDsP_R=&Y%P#TQv!mFc-$T{nD)`j&fTP0Oi{Lfc6k&~?S?)nwaN zYyscVC|)7T#pwz7fp+`qqSXB!7HFeZtfBiK=y;=h7V7BvD1AxvX7rAB%z^zviyAye zPtFG2$z*zpo&YA0r>}Yxu#qUF%udpASVy!!Zb1NUV$HT2Sf8E8rtvv!8Jx$~@%?ky zHZ+f&L}=-X%%gR@DKdv$UD3|Oo&)1IvG4pX8~|?M_Vb;II|Ity0p&<Q=?W<6fO0&b zbT>tPL-z!v-U{htKsr?+_4}lsDR3{@F07?>3#HbE1|;bQxd+YIN52#f;RyP06l3VZ z6w-Kt?%h|>jq5mp-;i+u>h?f@f+E>zz>k<DSsDx^rQ!m4X{KE>4UMqhhifQ7C*Tgz zCO2Rr+8E~(!h@7N@cNLIj^8nmIQJ{=y@B%!b>TODpp|OU7OG7HY&b-(MVX#8n8D-p z9zhJB5$zHMeZ^fpg=g@Tzj~pvdZn^@qq2IdvU;zw`iNHFkli>1_$|JtG@Jef!k>wb literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/Main.class b/target/classes/com/flickfinder/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..14b3f0597eb1fbee5641b3751b6fdf5780b7b296 GIT binary patch literal 822 zcmaJ<O>fgc5Ph4ZabirHq$O>kpM2FRQun~EDF{@A6l9<%C_QjmJDYTaV~6!7{|h)! zao`8=qY$%6q>47e(t37w-kW_hv%mlR`~~0{o;b)ctVQXN_hJ=&?y00JHGeBq;-J7# z8HkDCu}J#-eK?SjVJM7JO@_4?N+(gQ5@nt<<o!m6Vy9_Wmcek#!xD-ND}hSnyYVoT z`lASA$xsW@NW>kXmG$R`#gl0o7kN}XETcrJ%!SGr>cJvyO^OdmBgOqs!Ij3g(JJXT z8=VsB3|pCwxP@^ovvjN@nekydQ8GK~h9zt;_=9d39cN!+W#sYy&@S#`%fUT{?dy8R zM#cP<Fd`J0^stQ`D!(sHE6I#VA}aZ*zd+)Ry8g-2bg_r~4)z%~uV46bG&)U_p6Yve zfQNJ$-J?xg>WS10>wc>dsFd5L&~W&hnYA4gx=$TlUC=OwVmCY!=EBbBMmrhY_OyMk zm7QSOzK$b{!aj{UPY;Qnf}J<*^0aek5sbV8vi5VTyDz@O{Yu*$Jo*=>fo0sDp4bF5 z^f`%>wX~(fA6U6gai<h-20#@x0+z9gwK@3%*&Ll!Yj=X$`Xx5czrnr4?)g=s8VUs1 hAgMb<-9v@SusZ59A|Bx}d3jQF0H4w^G|124@Gm-*whsUR literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/controller/MovieController.class b/target/classes/com/flickfinder/controller/MovieController.class new file mode 100644 index 0000000000000000000000000000000000000000..afc97ac83283529b7be2229b94cfa61016a0d7d7 GIT binary patch literal 2738 zcmaJ@*-{%v6g{oQBk*`ZW-$f>-mpN(@=k*A0>;>~g}?@59A_KE00Se9JQ`8fQ(oeH zLH;4nR3#*&DtUEPUh*?}N;xK{TMLUUs;FUlxwp?b_w*h8_3`&V0o;Mz3?KX&0y=^? zB5-oe*f8R@kz0vRFRqyxPvFR?m9xCN0{+Ord=o-w($K8qD0G3rjFXKo+g4_M*~%@M zZam}UJlC;pzD_wCmieGI76@hK%*5EVKu_vm;F95#Be<Rj;kZE1wz8IY6erQ5A*|yR zS_L{RCoUn{RxZBkdHJ|Jz<f)X&2NgPTbeOkBP-A!N$nDu^;|2rk{GC;YDPOcG@RDa zi8BJ-hk+8%S4?lrwiT~}z{SRA6g|t1r>ugPknp>8oJEg7V6EWf1Y&#R$|4h616~OY zeFANYOyP|kpM92k_%>taJ<G|-+~;*%z(p3R;2B<#sJbJ`#>qnH7dSp)c*depF#Al` zbzGSxqGJGq%;K7bqD?XPVXW!b2xACC0=`>Uo6(CaI^xnuC-M~CoAr#$`kZTI%n+_| zkF_L^yP@NzEM`;Q@K#mDnsFP$8a~tUIYtCpc8ix}c~?xA?#UZ&!Q_x~>{YOeE-8yS zs?*c7sw|bN(|9SlB+w^CIau7Rvt-(3&(U!A30Xz-<s7eX*(v6hLKtV!N~Yn4FhM_V zIG$MuVNyVlYC9h5Na6|a3=ey5c=T9dy!49O1%@NZdbicjR4ln`7nwGtV+v`3Fw@SM zPTn@hOA47}a!N8$>g)yyoQu@4+jpM^=1JrM`I2PH%9-h6cF}a_j76I>;gpjx?0Lhr z<hU{!@K!ClX{au5;|rdU=4<F<2|@6*jxzd#US_aA<GmH=Y?y&pTy+HcKwj~1y_^Ea zl;Ng~yrQAu>wO)qY!y~AD;tr(**bQ6Jwd!l4H<#1L!86>_2p=iPN~3b->+^dUsX7M zAa3+fFn8GqEZ*JyrKcpbPSMSnla{PxtFp;%%e^9Z;~ZPIkIkNv$)?S>Am4+S=5vOl zNv_KE=D}Yf2BW_~+vLcHXM7%qpU=w(Ac7|Li02%&mv>_pa~v^FWu;ndqAw~r|7Ki( zYl&$1*fvi1FclsA8QRbm+P2Z<!^@v=J{@fl|7_zNN73-5ZCvKd(0d#SN2g+2h;1@e z6HcRxO~tRk^m7bc<MRgRN4Rnm-MEE*Hjf(^=9A3>2?cVH$9JO#^LVK!Bx-OISimcl z`#QeBYm)hrS$p8$VM2ZhLmEzM_zFTp?+2XW^Iv8V>?;*=;%J53LNt7J8`pjK4Y%${ zdfi({q+{>VL1sTzncXWh+f)L`9aRCkJ|#ezxsPQU!aXvNVO0GuD{vdfh;@RilW4;u z3jUbwKgqpMxHHAQ&$xRE_mSqzG&#?Z|8u3tO_sckrThlp690X4)U;WsX|qt#MrW>T zFe=(mmj4i=9*a9@sY=9pQ<@G6ldK8zgZvFafbXK=v6?Vd2c)Cn2g(W~0ZPOwr#l1h zp@kog1eA8M&cGHPjRZS`hYDEUR@LzANbnOb>I^FX`1mE7!x~k5ffe;XpnR0(PYG~N zrvh!%r<bfR&=dW1LzHfaQ=?I;G)4uUVv#vA+-<5HYgmTOw+*b~J6QN0>q_0n&=?bC z<Pt@&=}+mrpcJE~?z@`0C5$U|+mKft^b^A}Pk2q&E;B}_tmSMg%pv_5Merj(-ZUov zLLYER!|D!N5iA?FvY=|x$>6DKP4Gv>tiyZFTJ_@7s*Z<vksniDj2<E^d+<El36SG# zp7TYnyy2S5=1{<Oc)W!hwHw&G$7RDc9foT<MEAI?6}}yL4J(9d_FCg<KCJ%_@9JJG literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/controller/PersonController.class b/target/classes/com/flickfinder/controller/PersonController.class new file mode 100644 index 0000000000000000000000000000000000000000..5ac9e82e51964d320af548337121a8d64147a759 GIT binary patch literal 2458 zcma)7TT|Oc6#mvgWIKXzi6IGuTN45pqa-*KFpzLfY0a%r(mNHl0D){dvYdhc(f`nA zIxQ`oPG39I-_zHYek<94P0eIHBWriho;}}XkN*1iw?6<(Asa>jH417~)Zvyu<AMH8 z*DO7|r>*WB7%5la)})y=-D!cE{(-F!f(R)HtGEqSAeyo>+OB1$4tLFL+Hka#opl}C zviQ1YIC(oecQGLl%6U`sGphn!$;z#1-7fB7Kq80+fjY~~nC@*fqDeusiWb}zXfth1 zR%w}8ZQpfsnmocdVx{4?1;aUB(;Yn{(AS^5#IoT!W_B+zaD6I_R<tR&r{X>y2t2&8 zDgkxRaAz!Q&9HNpA@HdBAqCg8w4|AL6SDpe6%WxVP<ud51Y%eB`9!n0D!>v7x&<O0 zn*3W!+gML79Hoq$YuZ_vyH~{rctoM{uI?7{0v-KJ)sqF$C(tmjyZVlvH@XeSu^pME zU&R0hnZ+^k1&eH!)p$W*wHm|d!jOuXG|`<L*>*QvJ$1P0=qV!zO(0;V<uT7xJeMkl za=N?kNfkyMFBFWb_z+_PO_!=IQP(}g5eVjVCvR{_8m=-|s%lB9IH4keNr8Gw<a=-S zcquK=BiX2wHDjj@t7x}G2-A3};FXFQ%$D7OjpMv)&`dRUL7wf~hZL;&03AcmB*K`- zf`UaAukn#Ui&uYnjDX@%Vo~}s043?Sg7}yR`(<}$ZMS>ZE@aaZR#L?>R%m;|TDISr zMxMkv($0P~Pm}<?Q!hOi#2R(*;xE$)^!8t4qWszoY|*20B!|0`X4Y6KWOfW^Q{Rzp zZ%*1N-P+O}Q;v(1weG%2&&94KzM&N)q(`gTUDhCYT$>N7((>F~lX8y)?pMvgR^W9G z+D5j5=Ihs<Hu3zqtmix&3cf2B-fI}V4SvfK=)8un%tEYqNdb%QxXEekXc;LXkE#?* zptYRc<6Mbhts-`^N-3V&iD|ZrL*DRmLy(aTyWpgZMN=vn@x61|oQGvNdf43q{4S6( z+28qA%lA60^Z6-9i(HlK;lW=Z2BSYiIpHXP4L%!C!)FV3+(ifxY;x4<N8>YWam0OI zR&vE=`=*%lckZj@T0GiZe}+2&EJp`_f--c9$QjxLc=H3=SE5bg?=$pp6m5Qdh9`W9 zog#X|93k98JDX39S4A%ofHNUH;IoS>?dagIkL_1OCq~fiRW`^oJJ5#D@r74+{G!G< zzQk8v-YCAtH$?C)GZM);Q}Ig~RM4nk8$v->8{-lsB%-y5WINhCe1@k1{ECq&iKXKd z<10U6iY3p*{zMzmd|yJd<fA$9K+C}Q03Dz-BNU^Hopa9n_rXt41n^s+;xPs2Bfuww z+mAtZ_7Ohg7-IZ0?ufBh4O3Q)V4o7;bB~lbrH*i3#}1*qzCzFT1wGqEdQ{S_AyuS@ z%>08mDM_EBsl*a>E^@Sdg`<F{_WJ*D^vOykIjbddV(-by5XQ(#3@^O@TF(-rs3$9< zWMz!##%a9?a+Dw!lZ>2Z>>O8Ka^)4@W{|`z*4Wdffqh20v5P%2GJb`T^$SMUFBn-U lGP2K|Dy<PA`@1l?Q(DO5C`L*S&Uq1vPP*jCVn_g){{W2jIN$&P literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/dao/MovieDAO.class b/target/classes/com/flickfinder/dao/MovieDAO.class new file mode 100644 index 0000000000000000000000000000000000000000..4a9c7138885030f8e00ed578790209b993d38976 GIT binary patch literal 4523 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 X>vx3j*XsEjNNGg*{x<%KcaiuXcSDBp literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/dao/PersonDAO.class b/target/classes/com/flickfinder/dao/PersonDAO.class new file mode 100644 index 0000000000000000000000000000000000000000..f277800b4c49d846a3452504f8b6481c40def601 GIT binary patch literal 3606 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/model/Movie.class b/target/classes/com/flickfinder/model/Movie.class new file mode 100644 index 0000000000000000000000000000000000000000..4a8e8bb28f1daad328621070c3e5903137b500d7 GIT binary patch literal 1561 zcmaJ>+fLg+6r4>$98z-&A(T=sZJ{`UVtOwGcpwsL)X-J}QB|l9CRt#KV<US(;!pY! zeQ2ekN<8!f`cYNS+7_gV;lbXs>)CVW%<THl-^<?s*07RA0!a-i9X&`h3?5r&mT6ng zq4{C|nAaskdQ~_=t}`T!;%+Z8=+%(baR)lXc-?K82ezm;4}{a;p4oC6+%~t|Gr<`W zqQStbYEQq80Sq$qNFi<dl&f7A+LoSh4$BIb(=n{_rp~$L<%r>kjsiv*Mq5^sS6ruV z$xlKaQRGX@kv@ZARJ(Iki`{FKBp$j;^(w@hVW1`){{FPJ&%GUMKji7wEqmAUgqlZ- zDS0HQ@<i>H?#tBcA(vHBfOM<U%nxTNqgtej8Tz;rYLPc$*=A@%gcvcp+fhk0O7fYM zqKLp@l#y;IC_{GJJ@x8*Q>ad|fhmhhcCvZHb)_#o>tu_|Be&sa@Prx)Ak%xIvBnmr z1E*A=yjWvj2GTIISi(~c&y*|A8D_3c6waC3<YrhpG-}hTOV>MR_}WfC0)}<pT28~} z{!Gnvo2Mt`?k?L_{@b{7e!^qmdu{me{Fd9bjZ#!B+ujzElSg{haky8pE#K$9hF1); zT|LE7)$oR4@^&a)ov<%Fprf6j)10I?-5ZJ$>N*4?op%~Dpc8_-^d6&`P2W>A=1af8 zO5+#MN(&e0D@|Nr=tr>Y9=!{+1IQ6_7`@1&A0reMFixwba6j&2f@YK{sLO&#RaR{B z>aGzdY6MeJWs^pQ>M8w%_KkuBRH<~ZI2okYLqL?8VVc?tX|EGnB~AyFuZgOE3@}G@ zjUYoIL|u_fN8}hD;!%{Vok-vJ4kAmjL}oDCMP#02>m;&FL{@GfqO?&8JdRals8f-R zSR!-rinLi5D)Nqq)NUZ6tWiXaD@9fVtH^L=4LyDI3|*3o=#=MU8>?KTauUTr#1iId VRL5<Ro&~(1S(c)gc#UO@{R7M7Cp`cF literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/model/MovieRating.class b/target/classes/com/flickfinder/model/MovieRating.class new file mode 100644 index 0000000000000000000000000000000000000000..5ce8cb9ad01441b6f5e8c72c096b20a7c373b1da GIT binary patch literal 1051 zcmah|QE$>v7(JJj7HV<83IlQKoI0p;HG4&Qk(iL6CT`)qgM!u4CS4&h@keRm;^Kop zz#nBix9tKmQ%ShJ{c_HC&UfzZ&tKnv0C<k4I&#?1pcu$Q6=;paxjps0@rS7wOx(zx zhZEPgUxiE06;Pjfffx4#w%dc@duQp`z7x#s<2dqyS$EJG6;VJ@gKppk41wK$bbIT> zB(Z0dZA4$PZyMM{Ss=d*WA{uz40KenrNJ~%LtUV}((Q+fQ=hi9rQ<K$H&cOHyWd$e zmIAsu8fa>`B|EePDyt5IAa-YNBv5Y;)`?lYE6}`l(mrPuP+l+`fz6>8xUU!UQ#U$s z5<}HtIClJz6M6DID=P6jj|1%u{~HQrbKZm*#9l1ttFDcdWliyqu0!L+nHyh5X|~sA z$c886Yz0vm5S<su8l?f(u8>xP7s$#W3d12uKMohs*nR0qPvzuFq{@dfQ0(&ba=cXX z&(r4$d6Zo9;4HY!b%$@Cpg`l(v|0x{-yp1pat_U^splwtVLgXCT&qNZIE`IPC}Imb z?y}N@%GJa@>dBvp`_vH0ZVwL<brTO++em8CiR@%1UQ{9<VLx+nM6_fUtgp~6Q2ES# zsxEOLQz{xM2C1Sz8=Z{bqlQ#bt$j|g@-DwA&_N!Rq(eP<SF;YpC;9Mh!@}dN*AbtW rUP>3({?m(jt(OBl$@o2LNLAHpUCA-^(x8{-U%bdOlG=x4=V1Q^Quw=5 literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/model/Person.class b/target/classes/com/flickfinder/model/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..8d851a85333d610c54f0f6bf6bc6f1364c970c75 GIT binary patch literal 1597 zcma)+TTc@~6vzM5+m^Bjlu|@cK>^!xsp1t2JWxYyQo#g*55$L|9boBpm+THCd=o!} z51L3!c<=-Gp^RsCHn7q{eAt~c)Bl|FJD2V6KNr6Mte}!X3~>Vq6G@~P29EeCFWcNX zC~xi^iH2lIEnAKyR~h1k;!Y3J=rNEn(F>Ddyy3RX`?l3+?ORS$c;&X+6n6Qe@O;-{ zh*?brR#TVmnCQm<L&D*0!H}(A1=^CH<s4L$Dr;g$sp9W8*RljSY$A^lhLJXJiK^=~ zxcp?vL$Z9y9qBVH6>6QXI!}t7M+}Akyt_l#RZ5JZziv5V<D|VOyluW`2Z^{1Ztrl< zQv2{QArCELdr-fvJQarIfsi#S5mmNEJ74b-g<6q98ua5vP^?^`E51Q`Ef_9zrl(w_ z$OToB43Y*$ys5Tn>FT00WVYNBuOZegl}xX0+=A*2&BB`NN?&^X_=Av#ZqrX=fm*IL z6T4P(h0RT<cB+-UudvVkDLl>K85RvZSFL-&Fm=^v%Q<yhqO3#fZm#o&biFf%FVPf2 zp$_|=J55{oQ+3yEog7y>GmV`5b8-9ZSagx^M)Z2dE79_XE~?zNw=5~BOJ>b+gjcn> z?+f3+Yli8LoVuYJSfUxYT}rLdd0~>qKSm=Tr#F3DWX04M6Rh-2(3%F#2=3B*ly)}# zo}e{X`UzGVJBLx4J4at>{v3nfgIo9Lou?Z>mXt&2K@N8?OjaIabXwB)F^>DRBTqqG z7Fa5>qRFZ6k(ekEJPae3X;rFZ=?9FjWW=CCrGmrJz_qCbp=*W-N>5|2l3F=V1;|&R z>VF6XlB7TiF0WOWaH$ZE;SnB(zM>#~-{?{lWU?#B6s9{sW~pq~L8b|0<^~W|8&!ds zt{{WgL5f{Lo^%I^v`$xKo<J6E04anZ#Y>RopjFgx)f#&G=o!4AF5)`XVuUIiRyj^1 ap^7+*Ia<}YsS3~ICG9d~y}}#3#pqwRNij<R literal 0 HcmV?d00001 diff --git a/target/classes/com/flickfinder/util/Database.class b/target/classes/com/flickfinder/util/Database.class new file mode 100644 index 0000000000000000000000000000000000000000..082c26870a3686a272dfb1bfc55aed810e813d42 GIT binary patch literal 1444 zcmaiz+fvg|6o&uZ7E(e=%b^@pq<Fx#RHC4uAl`5oaf*j2!wgrt8#W~n(wYXw2k>3I z6;C)aqnFP3Q0m${p+%>{O`5&3_P74^uhpNwzJ3ERk68^7hGDC^XKp#RwYz1zo5C~q zecLe?xzEeIE;Pg#Qak*Bn+|s?=F{?yuzZHN?bdznT7qGucqU<vLAR=|OV{kG%aATA zTK$z{E;PcF)c(MBZT}%9WP=P<ujG5STbawPGsG6En?gqv2?HJIVu)sQ>pD{C(a_D% z-@q<<_JQzLxyviUGti4ZhD1g9&2kL6Rz+GW>j1G0Xo%|=#03pQB(YJe^t`zA+7dO{ zn}Lf`R<cHt{gThE-8GL(hmu9x6;Jl}%EDXYWrrd?#j3@fb?({n90p_lwq2(_Yuw+K zDNWZy7Z@1b9caotU7ajUsG_U9rhpo*|24V*!Y~-N{?7!Y#hv8RN@K87Ej>DW*wU@M zfi|@3^j46Q(ix`zQ}Ue6kqA>F#>f@9Lky$Y+&PytOwmp@y<2e{QQ;0*<BP_q;<(E& zbh6}`lV#4hRX<Y~zK%&0$Z0Cpm~?Y{<VKgO`<^A1Z8^-u31>nkW0X`!=?@lxE`6Xk z$nBwLJH^Nk`rb*WH*}JD>HHCl{P-6nKOy}V@zug-3>;EY3<i?4b5UHPw0?qtHY|o= zieIL^A3+}#8>VO`08un3m!@wSBBUsL6j!LwRm$o`<Tn8$8kmM_@-Y}wipD}k%XErR zq8=zBIfrzLsPbK^M4o`-)I&j)?GLgWWp&jjqwhD64VlmA9wSQnJ#s(Lbquya^zjeK zQQ#eY2)YaKGo=3>x-qNpMsQK}0@VSbx)uFqNS_bs$&fqI<OZ^JCGim%{`eF#iCbzQ zQt0gvwWJyZ`jpVbF(x;9?i^wIdkdW}Nass(x2%}bGU+d=OA)LWGa=HXU)g(G{v*<| V*FaOd3Oc9sw1pNj>Rx8u{{!6HDX;(l literal 0 HcmV?d00001 diff --git a/target/classes/movies.db b/target/classes/movies.db new file mode 100644 index 0000000..e69de29 diff --git a/target/classes/public/index.html b/target/classes/public/index.html new file mode 100644 index 0000000..c968e8a --- /dev/null +++ b/target/classes/public/index.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>API Documentation</title> + <style> + body { + font-family: Arial, sans-serif; + margin: 20px; + } + + .route { + margin-bottom: 10px; + } + + .route h3 { + margin: 0; + color: #333; + } + + .route p { + margin: 5px 0; + color: #666; + } + </style> +</head> + +<body> + <h1>API Documentation</h1> + + <div class="route"> + <h3><a href="/movies"> GET /movies </a></h3> + <p>Returns all movies.</p> + </div> + + <div class="route"> + <h3><a href="/movies/63018"> GET /movies/{id} </a></h3> + <p>Returns a movie by its ID.</p> + </div> + <div class="route"> + <h3><a href="/movies/407887/stars"> GET /movies/{id}/stars </a></h3> + <p>Returns all stars of a movie</p> + </div> + <div class="route"> + + <h3><a href="/movies/ratings/1999"> GET /movies/ratings/{year} </a></h3> + <p>Retrieves a list of movies ordered by rating in descending order, for a given year</p> + + </div> + + <div class="route"> + <h3> <a href="/people">GET /people </a></h3> + <p>Returns a list of people</p> + </div> + + <div class="route"> + <h3><a href="/people/138"> GET /people/{id} </a></h3> + <p>Returns a person by their ID.</p> + </div> + + <div class="route"> + <h3><a href="/people/138/movies">GET /people/{id}/movies </a></h3> + <p>Returns all movies of a person</p> + </div> + + + + + +</body> + +</html> \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..8c94b29 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=COM1028-ad02184 +groupId=com.flickfinder +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..4a3a919 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,10 @@ +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/dao/MovieDAO.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/Main.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/AppConfig.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/model/Person.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/model/Movie.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/model/MovieRating.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/dao/PersonDAO.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/controller/MovieController.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/util/Database.java +/Users/alistairdeane/Desktop/com1028ad02184/src/main/java/com/flickfinder/controller/PersonController.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..1b118a5 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,8 @@ +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/dao/MovieDAOTest.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/controller/MovieControllerTest.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/dao/PersonDAOTest.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/util/Seeder.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/model/MovieTest.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/controller/PersonControllerTest.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/IntegrationTests.java +/Users/alistairdeane/Desktop/com1028ad02184/src/test/java/com/flickfinder/model/PersonTest.java diff --git a/target/surefire-reports/TEST-com.flickfinder.IntegrationTests.xml b/target/surefire-reports/TEST-com.flickfinder.IntegrationTests.xml new file mode 100644 index 0000000..41be9f7 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.IntegrationTests.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.IntegrationTests" time="2.028" tests="11" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="listofallpeoplewithlimit" classname="com.flickfinder.IntegrationTests" time="1.675"> + <system-err><![CDATA[SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". +SLF4J: Defaulting to no-operation (NOP) logger implementation +SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. + +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="listofmovieswithlimit" classname="com.flickfinder.IntegrationTests" time="0.035"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_a_list_of_all_movies" classname="com.flickfinder.IntegrationTests" time="0.034"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_a_list_of_all_people" classname="com.flickfinder.IntegrationTests" time="0.037"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="yearwithvote" classname="com.flickfinder.IntegrationTests" time="0.035"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_movies_by_year_sorted" classname="com.flickfinder.IntegrationTests" time="0.041"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_movies_by_person_id" classname="com.flickfinder.IntegrationTests" time="0.035"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_a_single_person_by_id" classname="com.flickfinder.IntegrationTests" time="0.03"> + <system-out><![CDATA[Person [id=1, name=Tim Robbins, DOB=1958-10-16] +]]></system-out> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="yearwithlimit" classname="com.flickfinder.IntegrationTests" time="0.03"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_a_single_movie_by_id" classname="com.flickfinder.IntegrationTests" time="0.025"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> + <testcase name="retrieves_stars_by_movieid" classname="com.flickfinder.IntegrationTests" time="0.025"> + <system-err><![CDATA[ +######################################################################### +Javalin: It looks like you don't have a logger in your project. +The easiest way to fix this is to add 'slf4j-simple': + +pom.xml: +<dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>2.0.10</version> +</dependency> + +build.gradle or build.gradle.kts: +implementation("org.slf4j:slf4j-simple:2.0.10") + +Visit https://javalin.io/documentation#logging if you need more help +######################################################################### +]]></system-err> + </testcase> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.controller.MovieControllerTest.xml b/target/surefire-reports/TEST-com.flickfinder.controller.MovieControllerTest.xml new file mode 100644 index 0000000..04aba63 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.controller.MovieControllerTest.xml @@ -0,0 +1,219 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.controller.MovieControllerTest" time="0.917" tests="5" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testGetMovieById" classname="com.flickfinder.controller.MovieControllerTest" time="0.893"/> + <testcase name="testThrows500ExceptionWhenGetAllDatabaseError" classname="com.flickfinder.controller.MovieControllerTest" time="0.007"> + <system-err><![CDATA[java.sql.SQLException + at com.flickfinder.dao.MovieDAO.getAllMovies(MovieDAO.java:47) + at com.flickfinder.controller.MovieController.getAllMovies(MovieController.java:51) + at com.flickfinder.controller.MovieControllerTest.testThrows500ExceptionWhenGetAllDatabaseError(MovieControllerTest.java:74) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) + at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) + at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:184) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) +]]></system-err> + </testcase> + <testcase name="testGetAllMovies" classname="com.flickfinder.controller.MovieControllerTest" time="0.002"/> + <testcase name="testThrows500ExceptionWhenGetByIdDatabaseError" classname="com.flickfinder.controller.MovieControllerTest" time="0.005"> + <system-err><![CDATA[java.sql.SQLException + at com.flickfinder.dao.MovieDAO.getMovieById(MovieDAO.java:77) + at com.flickfinder.controller.MovieController.getMovieById(MovieController.java:70) + at com.flickfinder.controller.MovieControllerTest.testThrows500ExceptionWhenGetByIdDatabaseError(MovieControllerTest.java:104) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) + at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) + at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:184) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) +]]></system-err> + </testcase> + <testcase name="testThrows404ExceptionWhenNoMovieFound" classname="com.flickfinder.controller.MovieControllerTest" time="0.004"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.controller.PersonControllerTest.xml b/target/surefire-reports/TEST-com.flickfinder.controller.PersonControllerTest.xml new file mode 100644 index 0000000..0c05d9f --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.controller.PersonControllerTest.xml @@ -0,0 +1,225 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.controller.PersonControllerTest" time="0.03" tests="5" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testGetMovieById" classname="com.flickfinder.controller.PersonControllerTest" time="0.015"> + <system-out><![CDATA[null +]]></system-out> + </testcase> + <testcase name="testThrows500ExceptionWhenGetAllDatabaseError" classname="com.flickfinder.controller.PersonControllerTest" time="0.004"> + <system-err><![CDATA[java.sql.SQLException + at com.flickfinder.dao.PersonDAO.getAllPeople(PersonDAO.java:32) + at com.flickfinder.controller.PersonController.getAllPeople(PersonController.java:26) + at com.flickfinder.controller.PersonControllerTest.testThrows500ExceptionWhenGetAllDatabaseError(PersonControllerTest.java:41) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) + at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) + at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:184) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) +]]></system-err> + </testcase> + <testcase name="testThrows404ExceptionWhenNoPersonFound" classname="com.flickfinder.controller.PersonControllerTest" time="0.003"> + <system-out><![CDATA[null +]]></system-out> + </testcase> + <testcase name="testGetAllPeople" classname="com.flickfinder.controller.PersonControllerTest" time="0.001"/> + <testcase name="testThrows500ExceptionWhenGetByIdDatabaseError" classname="com.flickfinder.controller.PersonControllerTest" time="0.004"> + <system-err><![CDATA[java.sql.SQLException + at com.flickfinder.dao.PersonDAO.getPersonById(PersonDAO.java:51) + at com.flickfinder.controller.PersonController.getPersonById(PersonController.java:37) + at com.flickfinder.controller.PersonControllerTest.testThrows500ExceptionWhenGetByIdDatabaseError(PersonControllerTest.java:60) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) + at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) + at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) + at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:184) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) +]]></system-err> + </testcase> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.dao.MovieDAOTest.xml b/target/surefire-reports/TEST-com.flickfinder.dao.MovieDAOTest.xml new file mode 100644 index 0000000..d69f8e8 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.dao.MovieDAOTest.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.dao.MovieDAOTest" time="0.008" tests="3" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testGetMovieById" classname="com.flickfinder.dao.MovieDAOTest" time="0.004"/> + <testcase name="testGetMovieByIdInvalidId" classname="com.flickfinder.dao.MovieDAOTest" time="0.001"/> + <testcase name="testGetAllMovies" classname="com.flickfinder.dao.MovieDAOTest" time="0.001"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.dao.PersonDAOTest.xml b/target/surefire-reports/TEST-com.flickfinder.dao.PersonDAOTest.xml new file mode 100644 index 0000000..0b74eb7 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.dao.PersonDAOTest.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.dao.PersonDAOTest" time="0.004" tests="3" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testGetPersonById" classname="com.flickfinder.dao.PersonDAOTest" time="0.001"/> + <testcase name="testGetAllPeople" classname="com.flickfinder.dao.PersonDAOTest" time="0.001"/> + <testcase name="testGetPersonByIdInvalidId" classname="com.flickfinder.dao.PersonDAOTest" time="0.001"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.model.MovieTest.xml b/target/surefire-reports/TEST-com.flickfinder.model.MovieTest.xml new file mode 100644 index 0000000..31e6e75 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.model.MovieTest.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.model.MovieTest" time="0.002" tests="2" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testMovieCreated" classname="com.flickfinder.model.MovieTest" time="0.001"/> + <testcase name="testMovieSetters" classname="com.flickfinder.model.MovieTest" time="0.001"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.flickfinder.model.PersonTest.xml b/target/surefire-reports/TEST-com.flickfinder.model.PersonTest.xml new file mode 100644 index 0000000..59e74e2 --- /dev/null +++ b/target/surefire-reports/TEST-com.flickfinder.model.PersonTest.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.flickfinder.model.PersonTest" time="0.004" tests="2" errors="0" skipped="0" failures="0"> + <properties> + <property name="java.specification.version" value="17"/> + <property name="sun.jnu.encoding" value="UTF-8"/> + <property name="java.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="java.vm.vendor" value="JetBrains s.r.o."/> + <property name="sun.arch.data.model" value="64"/> + <property name="java.vendor.url" value="https://openjdk.java.net/"/> + <property name="user.timezone" value="Europe/London"/> + <property name="os.name" value="Mac OS X"/> + <property name="java.vm.specification.version" value="17"/> + <property name="sun.java.launcher" value="SUN_STANDARD"/> + <property name="user.country" value="GB"/> + <property name="sun.boot.library.path" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home/lib"/> + <property name="sun.java.command" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar /Users/alistairdeane/Desktop/com1028ad02184/target/surefire 2024-05-12T15-40-07_292-jvmRun1 surefire-20240512154007355_1tmp surefire_0-20240512154007355_2tmp"/> + <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="jdk.debug" value="release"/> + <property name="surefire.test.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/test-classes:/Users/alistairdeane/Desktop/com1028ad02184/target/classes:/Users/alistairdeane/.m2/repository/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar:/Users/alistairdeane/.m2/repository/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/Users/alistairdeane/.m2/repository/io/javalin/javalin/6.0.0/javalin-6.0.0.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-server/11.0.19/jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/toolchain/jetty-jakarta-servlet-api/5.0.2/jetty-jakarta-servlet-api-5.0.2.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-http/11.0.19/jetty-http-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-util/11.0.19/jetty-util-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-io/11.0.19/jetty-io-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-server/11.0.19/websocket-jetty-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-api/11.0.19/websocket-jetty-api-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-jetty-common/11.0.19/websocket-jetty-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-common/11.0.19/websocket-core-common-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.19/websocket-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/websocket/websocket-core-server/11.0.19/websocket-core-server-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-servlet/11.0.19/jetty-servlet-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-security/11.0.19/jetty-security-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-webapp/11.0.19/jetty-webapp-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/eclipse/jetty/jetty-xml/11.0.19/jetty-xml-11.0.19.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/alistairdeane/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.16.1/jackson-databind-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.16.1/jackson-annotations-2.16.1.jar:/Users/alistairdeane/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.16.1/jackson-core-2.16.1.jar:/Users/alistairdeane/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar:/Users/alistairdeane/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/alistairdeane/.m2/repository/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar:/Users/alistairdeane/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/alistairdeane/.m2/repository/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy/1.14.11/byte-buddy-1.14.11.jar:/Users/alistairdeane/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.11/byte-buddy-agent-1.14.11.jar:/Users/alistairdeane/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured/5.4.0/rest-assured-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy/4.0.16/groovy-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-xml/4.0.16/groovy-xml-4.0.16.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alistairdeane/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alistairdeane/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar:/Users/alistairdeane/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar:/Users/alistairdeane/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/Users/alistairdeane/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/json-path/5.4.0/json-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/groovy/groovy-json/4.0.16/groovy-json-4.0.16.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/rest-assured-common/5.4.0/rest-assured-common-5.4.0.jar:/Users/alistairdeane/.m2/repository/io/rest-assured/xml-path/5.4.0/xml-path-5.4.0.jar:/Users/alistairdeane/.m2/repository/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.jar:"/> + <property name="sun.cpu.endian" value="little"/> + <property name="user.home" value="/Users/alistairdeane"/> + <property name="user.language" value="en"/> + <property name="java.specification.vendor" value="Oracle Corporation"/> + <property name="java.version.date" value="2023-10-17"/> + <property name="java.home" value="/Users/alistairdeane/Library/Java/JavaVirtualMachines/jbr-17.0.9/Contents/Home"/> + <property name="file.separator" value="/"/> + <property name="basedir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="style.color" value="always"/> + <property name="java.vm.compressedOopsMode" value="Zero based"/> + <property name="line.separator" value=" "/> + <property name="java.vm.specification.vendor" value="Oracle Corporation"/> + <property name="java.specification.name" value="Java Platform API Specification"/> + <property name="jbr.virtualization.information" value="No virtualization detected"/> + <property name="surefire.real.class.path" value="/Users/alistairdeane/Desktop/com1028ad02184/target/surefire/surefirebooter-20240512154007355_3.jar"/> + <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> + <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.runtime.version" value="17.0.9+7-b1087.7"/> + <property name="user.name" value="alistairdeane"/> + <property name="path.separator" value=":"/> + <property name="os.version" value="14.0"/> + <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> + <property name="file.encoding" value="UTF-8"/> + <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> + <property name="java.vendor.version" value="JBR-17.0.9+7-1087.7-jcef"/> + <property name="localRepository" value="/Users/alistairdeane/.m2/repository"/> + <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/> + <property name="jetty.git.hash" value="f781e475c8fa9e9c8ce18b1eaa03110d510f905f"/> + <property name="java.io.tmpdir" value="/var/folders/dj/slny6vg90kn1_qgn2pwwqg_m0000gn/T/"/> + <property name="java.version" value="17.0.9"/> + <property name="user.dir" value="/Users/alistairdeane/Desktop/com1028ad02184"/> + <property name="os.arch" value="aarch64"/> + <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> + <property name="native.encoding" value="UTF-8"/> + <property name="java.library.path" value="/Users/alistairdeane/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/> + <property name="java.vm.info" value="mixed mode"/> + <property name="java.vendor" value="JetBrains s.r.o."/> + <property name="java.vm.version" value="17.0.9+7-b1087.7"/> + <property name="sun.io.unicode.encoding" value="UnicodeBig"/> + <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> + <property name="java.class.version" value="61.0"/> + </properties> + <testcase name="testPersonSetters" classname="com.flickfinder.model.PersonTest" time="0.0"/> + <testcase name="testPersonCreated" classname="com.flickfinder.model.PersonTest" time="0.0"/> +</testsuite> \ No newline at end of file diff --git a/target/surefire-reports/com.flickfinder.IntegrationTests.txt b/target/surefire-reports/com.flickfinder.IntegrationTests.txt new file mode 100644 index 0000000..498085b --- /dev/null +++ b/target/surefire-reports/com.flickfinder.IntegrationTests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.IntegrationTests +------------------------------------------------------------------------------- +Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.028 s -- in com.flickfinder.IntegrationTests diff --git a/target/surefire-reports/com.flickfinder.controller.MovieControllerTest.txt b/target/surefire-reports/com.flickfinder.controller.MovieControllerTest.txt new file mode 100644 index 0000000..ab585f8 --- /dev/null +++ b/target/surefire-reports/com.flickfinder.controller.MovieControllerTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.controller.MovieControllerTest +------------------------------------------------------------------------------- +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.917 s -- in com.flickfinder.controller.MovieControllerTest diff --git a/target/surefire-reports/com.flickfinder.controller.PersonControllerTest.txt b/target/surefire-reports/com.flickfinder.controller.PersonControllerTest.txt new file mode 100644 index 0000000..20df994 --- /dev/null +++ b/target/surefire-reports/com.flickfinder.controller.PersonControllerTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.controller.PersonControllerTest +------------------------------------------------------------------------------- +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.030 s -- in com.flickfinder.controller.PersonControllerTest diff --git a/target/surefire-reports/com.flickfinder.dao.MovieDAOTest.txt b/target/surefire-reports/com.flickfinder.dao.MovieDAOTest.txt new file mode 100644 index 0000000..ae4e31b --- /dev/null +++ b/target/surefire-reports/com.flickfinder.dao.MovieDAOTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.dao.MovieDAOTest +------------------------------------------------------------------------------- +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 s -- in com.flickfinder.dao.MovieDAOTest diff --git a/target/surefire-reports/com.flickfinder.dao.PersonDAOTest.txt b/target/surefire-reports/com.flickfinder.dao.PersonDAOTest.txt new file mode 100644 index 0000000..37cd96a --- /dev/null +++ b/target/surefire-reports/com.flickfinder.dao.PersonDAOTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.dao.PersonDAOTest +------------------------------------------------------------------------------- +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in com.flickfinder.dao.PersonDAOTest diff --git a/target/surefire-reports/com.flickfinder.model.MovieTest.txt b/target/surefire-reports/com.flickfinder.model.MovieTest.txt new file mode 100644 index 0000000..6a94952 --- /dev/null +++ b/target/surefire-reports/com.flickfinder.model.MovieTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.model.MovieTest +------------------------------------------------------------------------------- +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in com.flickfinder.model.MovieTest diff --git a/target/surefire-reports/com.flickfinder.model.PersonTest.txt b/target/surefire-reports/com.flickfinder.model.PersonTest.txt new file mode 100644 index 0000000..17fcf8d --- /dev/null +++ b/target/surefire-reports/com.flickfinder.model.PersonTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.flickfinder.model.PersonTest +------------------------------------------------------------------------------- +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in com.flickfinder.model.PersonTest diff --git a/target/test-classes/com/flickfinder/IntegrationTests.class b/target/test-classes/com/flickfinder/IntegrationTests.class new file mode 100644 index 0000000000000000000000000000000000000000..a2dbba683edcd80dcf75edd8cc061a0d2b3582f5 GIT binary patch literal 6458 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 NAg{mSANUuR{ue;okoy1t literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/controller/MovieControllerTest.class b/target/test-classes/com/flickfinder/controller/MovieControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8dcad78cacc68ca9adef90d3a66fdb862f187dde GIT binary patch literal 2738 zcma)-O?T5)5Qg9D7#tkYfN2PyA>q?8A2KDh1Vc&)Ng6N&urW<3w6d(&3bN!%*CBM( z{(-K#;tzDqIZYttw5RL-p00cPUd6E;gMo!D>0ZsuGw;kD{qx@+e*w6Pr8pw!i6N?C z8@3DVS~8Xm-7(y<K3`n2OewJaitXBRLZBx(T8N=n;E?H6^+m@vpDx;N$@2A*;pw-% zW!t(jIUh$HeKBYncH$F(J)U3ItDgDPmg=4GDiBpG0w<E$R=g?42!hOL+sXz(W(Rg* zcMJ&)d+@2ixz6aO=Stsm9D;-pQ_bhR6)=I`Y6DGRDBEe=j-H8OufU+~>59s+UA-b@ zO;`S`6{#@xY1oegl){uN0{gRFUZtZ$0;$ee-9h6xh#^&iBLXAI_d|{r6v>E&qc|qe zA12pIS>ViD=H26FRNxaDPU4h+R<`7%<AfRpta7qzdZPtZ<xveOoMwY8TfV*cT;ODT zIUB`$M?K?+;jD^zPT+XENlyB<Ti$Gey0jfVYX_2QrUeGVP6>W+^xVDd^onWKr0uzJ z==e;-1=YL#HJZzuG|Z=Y-!Lu3cu~XW_<{}htYWzWm)pZN3ENvVko97b6#Bed_IS-T zo(VC|Zf><}zT$h&jH1IZI(qtW1y^I3(C{U$F|ChrDX>G5Ds&_;k$lwF`c3at<70ef z`Y?d&8m4fA1qq}f>tPA!M!OcV7c&A8yQD0?(lCdc1gaUba@X*UYDYD<mL{AJjip{> z1;lwJz#R?qO6<5w>%JxHKI?N3_cYw!?60u7u0NkEsV2y)jRyk5Nn&;$ma12>oQ(sW zVg07~$P#C5*Sb@$7A-%ov=>NZJ=1UshHtCq#$r@fY^I-n%W3zMphgAbYzr*;pvI$p zzwS!AY8C9jrr$}|^{6Quj&6^J6<MltD(Xx1nk_kajGC=qw-!C$nl{V|9qp2IIJ@OQ z3E~cJ)VQ;aX|OYF+}lR2k;9=bQ5v9UmH)6yf{W>N^E^DH@*7ca7}6*jfi>;>p3j;z zUttEDaLsCPs=n8ss#u4^lP!a>^jOoo0=VOaj%U2OTVmv#SNBb8##ZIp7w)vimCELv zI#d|uP>b-J)Wd(ySl&g{ybrIObiBs+<3|bt1>Whr3bm4Y1@V$M5j^C-+6K+O=D)V_ z0v7NMpMXc)jfBQe5DoW|sYL8GcKnUlD*982f$)A{6@#faIJl7d9sRFxcooAf{|Q=x zb5Fw=>?6b}q}yU88?nCSJBsA73X3PrxIZzzO7a+85A!#;hT|&AYb41a)^O(GZ|KdQ zUc>p9H1DGhht+rqQ#(L6z&KYkT%X|16%6qkev~surMs7|hluwbz7LZ-)_^g%7enN6 z40;rsWJN9lCSCS~ipY=`m{2$h<Tb{kf8x?Y&l~6quW&iHjtnK<3O*Qu59}8Iu49tB zojT3o2yRlXTg1$^=`_(mE0IA}Lhs<Rnu@(>C^oLtN=&a~HUgq0Zmr|?7M!~+9iwZ= zZP9UrMY_<`aVYGh2h^*85kjTe7#9dM#x}V`kWDSe+O!<ss%7vFEf<?w{?gDg-<7#v zA%0L{l~Q+w_wq0Ri%g@8i>TllY~--irgHuRDwmtYKT~COZe~A7EZ(Ji6Y|&2HrRk% bCgd|Du|l1nV+KFALC(GxQZO-fwC(=^NGFYZ literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/controller/PersonControllerTest.class b/target/test-classes/com/flickfinder/controller/PersonControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c95cc34a7f4f2cfe0833b4cbda7fda208a83e538 GIT binary patch literal 2758 zcma)8TUQfT7~LmCgJCQh3y2rw;w1^yLB&>$Qn}YQ2$~3`R@=!ikbz+)ojLLH*8YJ$ z^{IcL&#qNa>S|Y?`+NG_)qN%*Hw9g@GM97a>~DX2f8Uw>^WPtT0k{n(jtJUfh-x^1 zg91m^ji-k0819-rUs$(HDRA(X?b>oope>nNjG<lNwCQc?tB!4MtlI91<?Abkr!QE3 z;JH)d^Krz{5rd}TFg_AE=J{*-re|*0($nWESAnP+5jdC3)&ovDMi69D4I>o_nL{{& zqcJ2j9K*)~dTV&obEWS&4w+O~Ox6bSR=^Yvm3GMqoXNH>Z(^T`p<AHG_H;$ev0c3= zWl2|v)^n+t9M{l`6O_Z0&jot3d%Q}ZQv$=S!S>-A$4T@lAI=C2Cf`FdwWzoZXc)v0 zZL1_$&s*T)TLAln&ZyYuG@Qo;0d38a<Bqdnc_qgZIF;Np#nhrQJEb9wVHV0$%ePlw z2%K+pwd&zJY>gv^iz?<NfwPTEa?-cmwcSc6OWV=2b|9(fh(K3ZFu@Owp1Yr&er{SN zX?t!QI<9EAs%p5i#N{$44Ra&!8>Xc=UeoX?K4aZID_X9=&BkywhK-dP$a0}T7W%xq z=JA@VK9j@^7InR9^F`l#W)vKT(b3j{Teuy=n1;`BhiQEXB<oX>RR|<7mVDIE0X1~0 z@gZ254s>Bc!z89?NFWVa4wQv=Q+t}&jv0Z7y`olrq2VsRR1IUu;)3BDn=NiOTNCaR z)uDD|1;k|~z&#D~O6<5w>wzW9KK(g~`x+jo`Z~<|s`Tl^i@PhT3i4{^p}>IR+1fFi z-iqZ^8#~jEB}TbQBPTgbud}vm-79YvEI+SI5J+S_({L6I-&W7n!Kf_S)Zy}5;QRE1 z+Bz}<2LekzEV0oalwE0WT8nmI6L{QpJ*vynBko}6&3c*pq`qD**^)bvQL^<3Yt{3u zX~QfM=!hiXY*T9q^6ja(-CEFGa5yaCIiplf;?y2dszfg;{IFhvYa=7I&RC)cm8esO zGzvywP5Zv*)1BHY%wU(?ocGkWlq~|6_Qg~0v;bbHFBlyet)VLd_q>YXGhW#xbUf#k zebbt;m0`V=sruff^0}lM4E@~VBK%IZ@ytD!cM<go2(R4tc#ZML4;KW!=AF)~P$TJA z5HEQX!7|Tk8ie|WXRY!A9^qR)0gpKw2^T*>G@MJO6S3Dg^fzK#=u9WN!uzf*^rYY5 z<Z}9VbiTsrE%ev%6I==O5c@cfUR)s6daPtM))T&?n0%+g;`>_M9~oaIIYj7w{(81? zRz-P@Bsqv}e6sW#+OxykxcrjKI|zPSZ8c$PCkO-dakQV~L!24l(;$ztA%$*2_mQ4~ zLYUl8m5j+%F+?86phvOGY=wh>MaZ^L5gGCY#uObz<TXa4f8zRb+Z*W1uW&QBgG>ZV z&BS{`;$26@zdIP`Y^zR5oI#3Tj5Pm#3^(XBR;9K|4$29=h1Xh5v0tl--B4;JrgtzK z0jVXv+QD2CorSuN(QV|KbR574KNq_?_Jx(Cqno1xxWe-_&R)eRkL&z&C_9ywqYYZ# zXx1`#hnB^fmOodu%<sv$Q&D`c!YZY`74Bv;05?fB!vt>O4mHkUtU=}cdsMb-jDKRf zs&8gn7%$dT?mSpwENUaw`fVclOKTZaNKTOCB$Ak-%F~$PQE!>qeMt(elU4*9{{yE> BkTU=P literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/dao/MovieDAOTest.class b/target/test-classes/com/flickfinder/dao/MovieDAOTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1aa7348b90e7b00ba7562bca62bb8cbe6040b8c2 GIT binary patch literal 2426 zcmaJ@eRtDj9KBCFmePeW${6okhXU({L{U&z7<4aSwPUc3A}V5<W^1-IDM<?ANAUO= z{MWxZN5<51`~ZFuKZVEpBv}`_!s%)Hy#9Xo-rs$m^q>F!{2Raxw6aJctzbaK0SpR^ zZ0gT+&DNa_ZKb|x8iByzb<44WIf3+4p_V~LV05!lH)j2(wiTGOvn{jbdM{=bWCcze zZcAIYEn{olavG+mbpp%Qs;0?y76+lqG=~I^O;z?1RRhm*Hj0JXK^(@2f+H$&I4Y3u z4c5?IZP|ThnTw^BHPe^a{4lh@*-G!?MCPJQeN4p|jtd;xFoOlxamdYb9f9Lhg$N7z zXnPafa}uW%oK|rLXPKaH{6#&`>$-0W3^8ok@dMp4*t-_<>xo(Dk8(FkQNe`3nchrE z+F6VvEp<Al;yt`CkZHw&2#oKGp4>@7<G7&WBBlgXqAl5WD5fuv+tnZxtz!8>aR}3x zQE*Ac2e>RS9G0s)Eim9)KanUsQO@E+e5BxtijVOL%jS9;+GdBI;j>MPc$(g}w36?e zo|K&VR6Xo0J?-c=y9cJq<w8xtH5wz#BW0`JuPps&m~FWwgU<wxCP(r?({rCYGWD#A zBCZqBx^CG57y4N%;kL-uRO2e<RNR!NKisAPgKD4~TWg+fm{O^dig_$VN`*4bzbH3I zZmPV$h%L8a+L1Gh87v8$SZkX3YEysiH+5$#ze@YJLLyn*!50e3D!#;5eU3{a5=+Y> ztyzIhnMZdE6rRlZz)14TQuMn57n7`Giu*|yYVsu9Q*l3}ZP>1F?pdA^E|3ZJs9279 zx6`Vd-kM&Q`EwQ5(CwP;S+XAw4g^h$)jRi2+sSiUWQlz<c+jR_Iv#73OF)as2%KE) zIDyqNYnE>@Ny%~CK#vV`uF~IB^X9tinM=CSWR8)5x$eAS?7{GK5adXdv1?#17vyz3 z8t(NQXUE=T{Gz?fTI-2)eINZq5sPySbtrV!vfhq$JM$JYu~fS>60SQC(&%@~C38{2 zSb^@=vhz&0t%h`NCNOnxk!MC=@+|;L>pZNnnAxh^@eK2}CCh>e?Km*o*fo_A1+ zuaFc!yolI>ytVlp<d^Rf2&}TD@mI)^>DLf1*+`+vr<?{a<TXCkXaOFe#vbsHv#D_N zCI;97F65NT^j|pmXy!GBUSW9pcMNZ1bO$FMa(MjFYvf;HaxeNA0e}}*8kY%E!zrGW z^SBab8;c^w+0q36H69VcH{2mneam0qyDo-bxn5$JWYWoPoUdeN{y;%s2ik8KuH-)5 z!RHTWwsGTSNF#@1yjcc9lH*Xg@dh%Oqc-!Lxk<{m_(CaBzl9J^o**;G;xWGG{xP<m z;D<2MWDHSf3@K5xs?L_d5e2CS3a)0mxEmY<%r5R<h&s)Y5cj|~ZdG!Ngn4@h72;lw za9`@dolf9h=2dZ*xL1jLg~;v^_kH57c5(B4j&*D#aEC(0xZi=Y*+uzttnP$V_elC* ziBrr(824#ALVsN)DQTcc+s7E9ZX>93<_Sir+$rdsYjiOV(Fzg9(S)`WZ(^+WQPS#S oyhei3t(nMnD|<eZf1ZFQi(!QcBPVC#;Jc36<Qjo3K2xy&2ep_lzyJUM literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/dao/PersonDAOTest.class b/target/test-classes/com/flickfinder/dao/PersonDAOTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1ef1fe244dc7007edc5835c6b98ee477499de677 GIT binary patch literal 2429 zcmaKu`%>FR7{$-p1R0|c;}Fu^xa0yhq;YQ07AG`LAc<R(n~Br(F60G7WXX}_wCN*s z`V9TIe`h8kw4Lb#^r1RED+yx^VHm_}FW>k3&YoTI?|*;&1K=haX(W);(4*rJdId5Y z#w(*>8_rtc;mU?I1A*QfmSY9;0?AyymO@HkXrsPj&iOBGE0A+@4cTzL*K-=u0;f#3 zQCPJt^Tn#=)TLKw1(sc?O38K_eb7~!!ve>0m7PS@z_XmSV!qagBgkkN)RDzef${EO zb;B(@lAiB63#Et4(pPYP7+c^>rF(Wq>Y~bhOvf;e3mjgP!5!CeSe)fL0>^Xt2!;g} zb_TfS1Wsx=rQ<ZtFu}g@7mUDIF?=b|&#-034-CiT+iYB5SIqqWl-p5?8b<fYw5#qk zMvzoWoz-y;=LPzj+mZ;3?uox^Eo&OVgpNt%1atzIZ2OUPn>LBF+cJc@RV+U!_G1du z8ZPSi7?%VF!YykL3-tKbFI-7ql+(D3D;loqxQ6QjW3IPW*l5u=d^TwluV6H-Ldo}~ zr&RZu-Uwe7U$zXJuZMEwa=xZvmgWfaDCMe;D~msyvZ<D&@TtJj&YrPg-E)6(RO&e$ zMcg3Ks$tmz6Z_e#!*P+dsm2WEb$qUjf22th2GzhYUo3luDV0(s9k+2Oa!lmA+po)Y z8Z%ekyO9mIF74Q!#S|8)*Ai7QoUyx}lnsNN_i$fBS;rUnQs8vApE?5wXxyC#MuYMW zZEs9?D&xbVie6G;KM<JgtTrxfZ?XBBIs}h&JPyk>ZP%AOZl`p2SO9gXSdM(qYOF|a z*;omUQE^Sft{I-C-s8@mVBO-bojcfX>Wmh-x4sOXHffZW$IZ!hu*KB~oOsf50;?fw zmTxgj$#LAkh@En_vcH>d%T?Eti-x(*9GQT*?(K4PZ!@-bCd$}$E~g8YdOYgxHX28V zcbELSxn1_<u1Gib)Ze*_#d*d$9C~WWXvWH&{y;UcR)cXJoql5>>e3S!IXIob$vvyf z&MU*V>dLmMKpNfxPYfOW0f^Enk7}%Fy6Uz(Q{J^g6GS}my?aTWP>k^sO7JU^;16#i zwxBL<K70Ag&j|#cuvOq+p?ap?L%d-lfhwPB7&wMyKJ{n<o}$J#;2B2~;o=SSumwzH zwaV1r=zBi>9{ukyF!dG#n;6={N6*+j^87u<-eG(v`Y-{2Q%LgmK7uni$@6>xqhYq; zC}Nx~N%*huoCIHUg`)a~e}Qk?48L=}Vi;%A@l9N)q^AEwUSJD_KQK_qezJwno=tD! z=9{pLEQ^{UwkmQ28lUHpV)88V9GT!(Xp&Gl>NgeQj1e-0G`_?4TtCd#5BM>RG#(=w zjG-ioX05PgvPVPWsfL+!o4d|VK(@JmBXyEJA@`w8+^S?3h<SGl6>={{+!wpJlO5cb zd1G85_YAqOlI$9}uakSW&CO3bR<YK>9SRk5A3(X@ru;QlcT}l6IGItLVme~nqiu%% znqg5p+TKJz=8@q|eUvx(5N>g+OVoX#&Dc*XM2tfn+K%pKtnQ<v)n=S!fy%9^$aW8R fe5U??0`7A&%3;FD$*DN_wxc#UN8kmY3E2MwTPQ9Q literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/model/MovieTest.class b/target/test-classes/com/flickfinder/model/MovieTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0b30031df684b32ede5b10c97254b33013c04479 GIT binary patch literal 1270 zcmaJ=TTc@~6#k~PY$*%K0wVW|RN4wG;sv!_3IvlTMH8q^h)+X1l)-ivw^QP?|HwoO z(ZnC%ix2!C<C$*LmVjiFnKPI3UCx>P{rAT&0PEN`5MY?fyJh>hB=aASrBe`|U3Lqi zWbe7>Qe;I%83;1mJLTuxE^()5zdJe=dBqSa>l+LcnL7ZI44rGzk!pjXBNopw1a}BN zf(~?>Fc4<w%ScDOt(K33m*qz#LbNh&o|kgmlX~6Q45|}ZVVJp#P0J<5P(`TsXAC3z zRY%FP$jOQ%pe@I76<5-A2xm6qdPV!RO44XNlZuS<Gih&&W7iYAJb#ijFvu`=hq*BB zGeoi{VtS7&PkxSI01vdQ5r*MdI@7Az0UbNVWICSf0%4j6p_7WLNN>H)JD%W56d1<; zBdhLA<4>8G#teBZ3YDe=Dr!1{hlm=OW0=0()K;Y;yt;7{k1)?*^7_v1rz$T|F+#C4 zNz?Fg6A3(K2oro(D&392Sp23FO}VJSmKf$^ZRh^$NZ#D>@s~|J(ee$#KNQ?+FT#OP z)P;(c@yx_?yzo1zT?S*MFN~KA1FdpT?~9Vl3!<PiUYkf_jf7M08^VX$bu~KRtJpBH zso@Q}?5l_zxK%GN-bn4ZxB2#$bPF*<J?o%9h9RIEM^TVsdb~7t(aNTo(Hu%#Ao7)h z08AP?>zh63q1f~<pcj3#BG;50K!4+wMY9G<HFB)PPYfIet)YJ7&jp6RW3+`Dp*&!e za>v?`ttRsLHROo~@(0S&5~IPyH;mRWd5KwT$d6-}SRf*QVbej2%p#}2EV`-P!<eHl z+C~~}lCIoJ`lUgd($JwAp6c0Jt>Kjp`i-j^)<ZsRUC*i?`+BbY#dSTCRCQp1*cPb( bOH=}z-rzD;=v8gf*eZ3ZsVzkr0c`yPvlI<0 literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/model/PersonTest.class b/target/test-classes/com/flickfinder/model/PersonTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2987ad1b835a894def0547a95485e33382a1073c GIT binary patch literal 1286 zcmaJ=ZBx@g5Pq(Nrj#IU01-qeP$aEN072A3vAoT6rUQ<}&gi#Lj&j&0HBJ5OUvfqZ zqci>hf0W~1l7TA7hg|mdcAw|j+uL8izyAcVfxS2)=ux3)=tYzvab|t8%(`XQ%!8vd zUiBEF>%taZo}tIcR8+(mCaO-uJgJN7hZA8RbJuJ*$GmR7=5EWeV~A5|p)O+37?kD3 z#nm`e+>r!>42DrGU2&8>SJ<`Obx)?!ha_|rLmGxL!jQU+^N_cs(55edVX|~va8Ak@ z)o>4E481k(6_5SeigDb>go+0mCNV{fj$1R&+EhEOP2o|UR#TXTR*SoyaO@U?X8D`l zk8P_?+g_ts%v2=&w1yeXGN=T<Z#6i>u#vf5rDU9wbPpNkjjr?H?z`_L^aSvRhKz)d z68z4=mSlXS;W3_&hE`CJVvv*=O!AaHOSm#-Ny9Rpk}8S`RE>0#hRu*^t3l`1WY(I7 z=Q1lwSwu!B+thA`!IH4~e!FqR-9ziBP9DAFRIPf&a)sQ7PQ^PFbT>1%_Cz)?7l?n` zWEgwXwms3{710ueRIqKwv%)){Dc#(cEq>y-eAlX;5>V13z~DV@yWH|PwRqw`i6M7a zN|}4qZ4w<XJ8ieh_k^r&Fu;@H3-SdcMK3f$Q^aVcH%gX5AB_=tUXW$dpGi;l9PA4j z5xk^T9s>i&(W(UjSf^2xKzTZi_{p1LTr&Fu>N`d6)BDdc@C}J8AUV2#js%9fz>*=@ zCY?#DS3Ypz68Jr3Ndajk`xS`}?p|PA?+fhI1=4zdV9%3%#ijeTjiR5%W)x$X#dsHI z`XA0MpL6??^K;0Vm(bA;vhuGlbg<|fD;+$G2CTlCg~0aJtOWMoY9{Gfg2pC>De6Ir Zv`k};CT@vzZ6MvHEPtc29m<Yi_YY#K4t)Rs literal 0 HcmV?d00001 diff --git a/target/test-classes/com/flickfinder/util/Seeder.class b/target/test-classes/com/flickfinder/util/Seeder.class new file mode 100644 index 0000000000000000000000000000000000000000..6fc9f56119152ea86f144f5e5d38cdb9285b449f GIT binary patch literal 4690 zcmd5=O>`Sq75<(rTaF`>L~)#${B$S<Tef6N{)sIoX;JNwt6GvBNp_u-ri`U$X<}(c z8I7H!&|liLv~YU5=s9eF(-j9;@Y_N;9CmD2uw~1ZEgKe`1Kc+=PnI0FL0;iwk3QY^ z?)ScT@12=<{pWxG{*M5z;k$lxF`O@&waM+OUfkK%jS{yecWu2ondh9aA3lbYx3xWO zvZ@*7$<?jfyl6A{il$*OoJl)FjXTxJMKaKkZW>n@x_7NAL(m;{9P_rN8)X{my{a3! z{UrI0K0F-SAnHZ4#QV{WfdG!-3q&>=+BgQ15r7|k{Rm>vkJAi8&9#>-eUDoi&Ctr+ z3g8Te7zWDR-q*wsI&8T^<%_k>1<-@uenMXi;Ji=~C|X>zc|qH%@<u-{;xRui(Jq=I z^4HVqy&|uR5CotIpA&W3w4JxL;!eTRikvKI-Qd~X+7`DQCJ`jFs8u&KOBc+Z(Pvlm z2E)bl=cI;W$%ygn{vKKt(CC1(a7L>;q<)0jGU+DdIK~n2Bg}BRxsm;-1u%h0676oC z=xko&2Bm*!G}N-Jv|s5%i~_clTU}EMiKo-5l1eJ-W-4FED-Bz-8pkn>SwCiI*Ui<M ztN~oc9D|?V<HcQ@c6Mli-0VY~;nJaNlyr+K(6kzTpzWVObWWX{^(ybfwa=PRGxu~( z3{Np!IF!NCY^r3MkzlyFm{Su4)!VJ>s*Ea%UQ$xog1W5c!ir++c9kmyb+e#kSLts( zohIvju33aLYA&@%U)OS}Od@wfSy69{>ZMSKV!6ohvo?MwhJxN%=*9g-T6yc-YM91n z3?^4|YHB&_tRhK5N={9xIW@be=3VB7P(YemXE$lvrn}LUf>nl}w+U`0<o{UoGQ$UL zqP_e+O0qkRVwXs_hJVkrc|#_@b)Yqvj|ja;e(GRxxuJfjxD2iKaBXermR<S$;#y%? zOJ(zFt{}v&dWlykm0`DF!%l^Ul#N7sUCoci!pcaY!j*hQyW6N}#*UJs_e0Hj+Kq&j zSUf%x>O+P>?Sys8V_h~&+nQbBmP0i+MO3Q{*-ogY4^k~CYno*%sg%np<XvZ2?u2v3 z<6P3L9c9JP%N3i*rlQe#BFi%@bwV~vWU(nFVU(@=N`@Pbtl2qYT4z{kWs<2Dxe)mc zD^5b&bD`IioVm578x0~FiN$B<Be7^Cc6o#dpF0q{M-hrNWK6598A{UPyrv0p#5p|| ziC&IGV}kPr!}U%?ihL|qEWKfybxN#~HR&AS(#}OA(YeTURM0-pkm`h1q$E+L)E0Ha zbm?Y@ZYDA{E9hS6Fq9%G&v1h>k~EEy<`PC{BlPQr@<oQ3R(;+xSl+>5rRBl6f2+hu zigqMVQToNsJt>2t!0D~osandD@GN)kNwJ$HPn}`DH9{>9{YOM;n!I<8=1uz*-nFB7 z)1HO5c{Fb-LE(MpXx<bx;Z3KzWNXx#Z=L;^xu&q<yi(-NuZSmce1di`Mb9DnA+Fsc zb5R)M6Lg8qO0K&{<|0Y)i70V7R6^JNBXd!R=O^Z!N3FNVZytEF{O|FifX`3FsaD-B zQiIX3YjlPkJnRI^aLPUGW}IW7cN{<2JOEn_&ot<omgJGsGY4IB&OIY~MvrpMIeL1w zv#lrS{S!BxTTc|LW`pmW#1Z{L0B?(iqQ@DdCW@Myb<tuCN}Bd2t3Pk<T1B4JtMo)T z?zVCh;>e9JQA^WJ&0iP&QHMiUh_1@{#;D&CEzfcK_94v>^Dd437J;$xk8xsb{C7C@ zG0u*Cg5e*dFBAR*7k){zk5RvMj{2c);->k;28_UmQ5qS;DN=t1VGJWebE0^hMirMC zU&a&k&GqRcreX5>3cgA!kC62=y8c7NU4Ae>k<sO%k0wzwMpu&9^#M(!#n`Q}-{9=0 z7-L9}2cw^2steDJ2j?YNkl?BWPr4xZwM_8oY;bA87fden1fN;x9Ut!X=7hb^;T{Qm z9*B6K!Dl5%OOTadO@f>R1qn7J*p%R=1YeinmIU9BU`v9M1ltl+B)Ba>RRTkTx&)R4 zwgh_;+>_uX7f_1R<6erv*4bt=#lNC-0`pWVaZ1txF5n8K?JD((*D!~t$dV+KK>`J+ zcpfQiA%`MvqC{7YDz;&xf|sG=0dC`c?BM%k{Rk$0iaLIcJNN@E{0R;G1$+1_?&5E_ zhri=K{(+b9FTBirc!dq%RW^jz*kgE|jp9uf!&__t57;8!W@)^`*6}X8f%n)8_?}aC zIZ@{9mRENDYz5yU4GatHJYJ!(E@}$T;Z;K2)Y}c>H9|h9>?B?%)I&$|0Nx<fORR38 zGN(|Fq3fS)(<{$2__kY~n50ief$9<E`3nMF&JEJ*7(a9r1>6aqB8E3*ZKF&h;ua0M zwfz=DTR!O43N-T(BsIVf$o4}F;74@JedMqYxeOlrK$~Xz$4}Z*{0_cDi-~)_Rq=^~ Oihpvb;&+{Wz4u?KbCq!b literal 0 HcmV?d00001 -- GitLab