improved flexibility of promotion rules, added empty basket method and refactored rspec tests