/mars

Primary LanguageJava

mars

Build Status codecov

How to run it

mvn clean install
java -jar mars-rest/target/mars-rest.jar 

Then in another window (this app will talk with REST api)

cd mars-console
mvn exec:java

These rules are assumed

  • Plateau can resize to up and down, no mater how many rovers are within it.
  • A rover cannot move to a cell already occupied by another rover.

Inspiration

Random notes

  • It tries CQRS but not Event Sourcing
  • Integration tests for REST app are included
  • Acceptance tests for REST app would be much easier with JUnit 5 execution order since with Vert.x WebClient I would reach a callback hell. I didn't tried to use the JUnit 5 snapshot.
  • I tried to use Vertx's OpenApi contract but gave up since i'm not proficient with it yet.
  • Error and complex cases are probably still untested (only happy ending scenarios are tested so far)
  • Sometimes I really was not careful with commit messages
  • Core and Rest modules has reasonable test coverage but Console is missing a lot.
  • Console app output is still in JSON format. More work is needed to render the text format required by the challenge. And I just realized REST app could generate responses with the text content-type instead of json. Update text media type added.

Developer notes

To run the rest app with code changes reload:

mvn clean install
cd mars-rest
mvn vertx:run

Javadocs are avaliable:

mvn javadocs:javadocs