require 'rails_helper' module CustomerVault RSpec.describe PeopleController, :type => :controller do routes { CustomerVault::Engine.routes } describe "#index" do it "should redirect to activity" do get :index expect(response).to redirect_to people_activity_path end end describe '#list' do describe 'sorting' do let!(:alice) {FactoryGirl.create(:individual, first_name: 'Alice', last_name: 'Zarston')} let!(:bob) {FactoryGirl.create(:individual, first_name: 'Bob', last_name: 'Tilan')} let!(:corporation) {FactoryGirl.create(:corporation, name: 'Zorg Corp')} it 'should sort people by name by default' do get :list expect(assigns(:people)).to eq([bob, alice, corporation]) end it 'should sort people by name' do get :list, sort: 'name' expect(assigns(:people)).to eq([bob, alice, corporation]) end it 'should sort people by reverse name' do get :list, sort: '-name' expect(assigns(:people)).to eq([corporation, alice, bob]) end context 'sort by zip code' do before :each do alice.address.update_attribute(:zip, 'c123') bob.address.update_attribute(:zip, 'b123') corporation.address.update_attribute(:zip, 'a123') end it 'should sort buildings by zip code' do get :list, sort: 'zip' expect(assigns(:people)).to eq([corporation, bob, alice]) end it 'should sort buildings by reverse zip code' do get :list, sort: '-zip' expect(assigns(:people)).to eq([alice, bob, corporation]) end end end end describe "activity" do before do @person = FactoryGirl.create(:customer_vault_corporation) @comment1 = @person.comments.create!(text: "ABC", created_at: Time.now - 3.days) @comment2 = @person.comments.create!(text: "DEF", created_at: Time.now - 2.days) @comment3 = @person.comments.create!(text: "DEF", created_at: Time.now - 9.days) end it "should assigns all comments ordered by created_at DESC" do get :activity expect(assigns(:comments)).to eq [@comment2, @comment1, @comment3] end end end end