diff --git a/app/models/client.rb b/app/models/client.rb index 18b3138..fa7f469 100644 --- a/app/models/client.rb +++ b/app/models/client.rb @@ -1,12 +1,13 @@ class Client < ActiveRecord::Base + validates :application_date, presence: true has_one :bike belongs_to :agency def self.waiting_list clients = Client.all non_voided_clients = clients.select{|client| !client.application_voided} - incomplete_clients = non_voided_clients.select{|client| !client.completion_date} - waiting_list = incomplete_clients.sort_by!{|client| client.application_date} + waiting_list = non_voided_clients.select{|client| !client.completion_date} + waiting_list.sort_by!{|client| client.application_date} end def name diff --git a/spec/factories/clients.rb b/spec/factories/clients.rb index 694bfeb..7c80689 100644 --- a/spec/factories/clients.rb +++ b/spec/factories/clients.rb @@ -1,9 +1,9 @@ FactoryGirl.define do - factory :random_client do + factory :client do first_name "John" last_name "Doe" application_date Date.new(2010, 03, 02) gender "Male" - + end end diff --git a/spec/models/client_spec.rb b/spec/models/client_spec.rb index 46bc34b..5bb82ab 100644 --- a/spec/models/client_spec.rb +++ b/spec/models/client_spec.rb @@ -1,4 +1,22 @@ require 'spec_helper' describe Client do + describe "#waiting_list" do + it "does not include voided clients" do + create(:client, application_voided: true) + expect(Client.waiting_list).to be_empty + end + it "orders clients by application date" do + client_2 = create(:client, application_date: 2.weeks.ago) + client_1 = create(:client, application_date: 3.weeks.ago) + client_3 = create(:client, application_date: 1.weeks.ago) + expect(Client.waiting_list).to eq([client_1, client_2, client_3]) + + end + it "does not include completed clients" do + create(:client, completion_date: 1.week.ago) + expect(Client.waiting_list).to be_empty + end + end + end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 190b16a..d370436 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,7 +1,6 @@ ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' -require 'rspec/autorun' Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } @@ -13,5 +12,6 @@ RSpec.configure do |config| config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false config.include Devise::TestHelpers, type: :controller + config.include FactoryGirl::Syntax::Methods config.order = "random" end