From 8390165ba863a909b143dee77596f37a46a5360c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Sun, 16 Aug 2015 22:08:59 +0200 Subject: [PATCH] adds official scope --- app/models/user.rb | 3 +++ spec/models/user_spec.rb | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 2b5b376bd..857373d39 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,6 +10,8 @@ class User < ActiveRecord::Base validates :nickname, presence: true, if: :use_nickname? validates :official_level, inclusion: {in: 0..5} + scope :officials, -> { where("official_level > 0") } + def name use_nickname? ? nickname : "#{first_name} #{last_name}" end @@ -32,6 +34,7 @@ class User < ActiveRecord::Base end def add_official_position!(position, level) + return if position.blank? || level.blank? update official_position: position, official_level: level.to_i end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 37663239f..29f84e406 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -152,4 +152,21 @@ describe User do end end + describe "officials scope" do + it "returns only users with official positions" do + create(:user, official_position: "Mayor", official_level: 1) + create(:user, official_position: "Director", official_level: 3) + create(:user, official_position: "Math Teacher", official_level: 4) + create(:user, official_position: "Manager", official_level: 5) + 2.times { create(:user) } + + officials = User.officials + expect(officials.size).to eq(4) + officials.each do |user| + expect(user.official_level).to be > 0 + expect(user.official_position).to be_present + end + end + end + end