Entities for our module are annotated with JPA annotations while the core code defines the Hibernate configuration file.
OpenMRS module persistence is setup with 3 layers: Services, Data Access Objects (DAOs) and Entities. When modules are loaded into the core OpenMRS application, the service is added to the core context from which other modules are able to access.
AngularJS is used to manage all user interface screens communicating with the server via a RESTful service. Angular provides MVC, templates, data binding, REST abstraction, dependency injection, mocking and more.
RequireJS is used to manage the dependencies between JavaScript files
Jasmine BDD framework is used to test client side code and is integrated into the build via the jasmine-maven-plugin
and Travis which integrates with GitHub and builds commits & pull requests
Testing is done in 3 stages:
Firstly the unit & integration test suites are run on Go (ProposalModule build)
Functional tests are then run (ProposalModule-CI build)
After successful completion of the testing a QA may deploy the new changes to QA server (by running ProposalModule-QA build) to validate user stories against the specified acceptance criteria.