Challenge Overview
1.0. Introduction
Topcoder would like to improve the product development team's ability to deliver quick, stable releases across all key applications/services of the platform. This includes making it easy for the community to quickly participate in design, development, qa, devops, and release efforts.
2.0. Challenge Overview
This challenge will focus on performing the following tasks below on the tc-direct-project-service code base. Currently we use Jenkins as CI tool for this service but intend to transition to CircleCI later.Improve CI/CD integration: add missing automated tests to the "src/tests" folder i.e. https://github.com/appirio-tech/tc-direct-project-service/tree/dev/src/tests/
Improve documentation: make sure the readmes are current with install instructions and current swagger docs.
2.1. Automated Tests
To make the scope manageable, you should provide tests for the classes listed below:Package com.topcoder.service.project.resources
https://github.com/appirio-tech/tc-direct-project-service/blob/dev/src/main/java/com/topcoder/service/project/resources/ProjectResource.java
Package com.topcoder.service.project.api
https://github.com/appirio-tech/tc-direct-project-service/blob/dev/src/main/java/com/topcoder/service/project/api/ProjectGeneralInfoDTO.java#L207
https://github.com/appirio-tech/tc-direct-project-service/blob/dev/src/main/java/com/topcoder/service/project/api/ProjectCopilotStatDTO.java#L155
https://github.com/appirio-tech/tc-direct-project-service/blob/dev/src/main/java/com/topcoder/service/project/api/ProjectPermissionInfoDTO.java#L118
These DTOs contain logic which could break from future refactorings which is why you should write tests for the methods linked to above.
Some IDEs/tools support generating basic unit tests from DTOs so you are free to include generated tests for other classes under this package to increase code coverage.
2.2. Swagger Document
The repo includes a Postman collection which should aid you with understanding how the REST API is consumed.https://github.com/appirio-tech/tc-direct-project-service/tree/dev/docs
1. Please update the Swagger file and the Postman collection to match the interfaces exposed by the REST API.
2. Also update the README with detailed deployment instructions.
3.0. Repository
https://github.com/appirio-tech/tc-direct-project-service/If you are presented with a HTTP 404 message when attempting to access the repo on GitHub, please request access on the forum.
Please base your submission on your fork of the dev branch.
4.0. Deployment
The platform might be a bit daunting to deploy locally for first timers, so it is important to ask for help early on the forums.4.1. Prerequisites
Before you begin, you will need to have the following tools installed:
Docker v1.12.3+
Java 8+
Maven 3.3.3+
4.2. Dependencies
The tc-direct-project-service service is dependent on a much larger (web) application called direct-app (https://github.com/appirio-tech/direct-app).Before attempting to deploy tc-direct-project-service locally, you must first successfully deploy direct-app in your local environment. Although direct-app is a bit complex to setup locally, TopCoder maintains a public docker image for it on Docker Hub (https://hub.docker.com/r/appiriodevops/direct-app/) which should help you get up to speed much faster.
Instructions on how to setup and run the docker image are on GitHub: https://github.com/appirio-tech/tc-common-tutorials/tree/master/docker/direct-app
Final Submission Guidelines
Please upload your final submission to Online Review.Your submission must include: newly added automated tests and updated deployment instructions.
You could either make a note of the commit hash you used and include a patch of all your changes. Alternatively, you could upload all of the original files plus your modifications.