Please run feature tests (instructions below) for detailed description of functionality
Ruby 2.1.2
- Create a simple gift aid calculator
- Gift Aid calculated as donation_amount * ( tax_rate / (100 - tax_rate ) )
- Allow an admin user to update the tax rate
- Ensure rounding to two decimal places
- Allow gift aid to be supplemented based on event type
- GiftAidCalculator: calculates gift aid from inputs
- User: cannot alter the tax rate
- Admin: can alter the tax rate
- Event: can supplement gift aid based on type
- Worked in pure TDD style throughout and ensured thorough test coverage
- Started with a single class to complete the first user story and added additional classes as complexity grew to maintain single responsibility
- Created user and admin class to update tax rate for extensibility and to ensure code remained semantically rich (vs a simple admin/user input to GiftAidCalculator functions)
- Command line interface to demonstrate functionality would have been clunky and inflexible so created simple sinatra web app instead
- Created cucumber feature tests based on stories provided
From root directory:
Feature Tests
$ bundle
$ cucumber
Unit Tests
$ bundle
$ rspec
From root directory opens the application on http://localhost:9292/. Authentication string to change tax rate is 'JGHackers'.
$ bundle
$ rackup