From 2f45cbd5581f750f0495aab9ed16df8116f7b0dc Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Mon, 19 Oct 2015 08:25:26 +0200 Subject: [PATCH] added counter --- app/assets/stylesheets/application.sass | 17 +++++++++++++++++ app/models/supporter.rb | 7 +++++++ app/views/layouts/application.html.slim | 1 + app/views/shared/_counter.de.slim | 4 ++++ spec/models/supporter_spec.rb | 12 ++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 app/views/shared/_counter.de.slim diff --git a/app/assets/stylesheets/application.sass b/app/assets/stylesheets/application.sass index d9bc28b..484c07d 100644 --- a/app/assets/stylesheets/application.sass +++ b/app/assets/stylesheets/application.sass @@ -24,3 +24,20 @@ body label.required abbr display: none + + #counter + background-color: #3c763d + padding: 3px 6px + border: 1px solid #3c763d + border-radius: 5px + color: white + + .counter_char + background-color: white + width: 20px + padding: 5px auto + border: 1px solid #3c763d + border-radius: 5px + display: inline-block + text-align: center + color: #3c763d diff --git a/app/models/supporter.rb b/app/models/supporter.rb index 92e7cb9..4456809 100644 --- a/app/models/supporter.rb +++ b/app/models/supporter.rb @@ -3,6 +3,8 @@ class Supporter include Mongoid::Timestamps include Geocoder::Model::Mongoid + COUNTER_START = 1331 + geocoded_by :address after_validation :geocode # auto-fetch coordinates @@ -25,6 +27,11 @@ class Supporter validates :support, presence: true validates :age_category, presence: true + def self.counter + actual = count.to_i + actual > COUNTER_START ? actual : COUNTER_START + end + def address "#{street}, #{zip}, #{city}, Switzerland" end diff --git a/app/views/layouts/application.html.slim b/app/views/layouts/application.html.slim index f223eb2..449665a 100644 --- a/app/views/layouts/application.html.slim +++ b/app/views/layouts/application.html.slim @@ -8,4 +8,5 @@ html / = console if Rails.env.development? .container = render 'shared/flashes' + = render 'shared/counter' = yield diff --git a/app/views/shared/_counter.de.slim b/app/views/shared/_counter.de.slim new file mode 100644 index 0000000..2823025 --- /dev/null +++ b/app/views/shared/_counter.de.slim @@ -0,0 +1,4 @@ +#counter.pull-right + | Unterstützer: + - Supporter.counter.to_s.split('').each do |x| + .counter_char= x diff --git a/spec/models/supporter_spec.rb b/spec/models/supporter_spec.rb index 10da54c..d0b80ac 100644 --- a/spec/models/supporter_spec.rb +++ b/spec/models/supporter_spec.rb @@ -10,4 +10,16 @@ describe Supporter do it { is_expected.to validate_uniqueness_of(:email) } it { is_expected.to validate_presence_of(:support) } it { is_expected.to validate_presence_of(:age_category) } + + describe '.counter' do + it 'counts only from a certain number on' do + allow(Supporter).to receive(:count) { 12 } + + expect(Supporter.counter).to eq Supporter::COUNTER_START + + allow(Supporter).to receive(:count) { Supporter::COUNTER_START + 12 } + + expect(Supporter.counter).to eq Supporter::COUNTER_START + 12 + end + end end