123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- require 'rails_helper'
- RSpec.describe Taskbar do
- context 'key = Search' do
- context 'multiple taskbars', current_user_id: 1 do
- let(:key) { 'Search' }
- let(:other_taskbar) { create(:taskbar, key: key) }
- describe '#create' do
- it "doesn't update other taskbar" do
- expect do
- create(:taskbar, key: key)
- end.not_to change { other_taskbar.reload.updated_at }
- end
- end
- context 'existing taskbar' do
- subject(:taskbar) { create(:taskbar, key: key) }
- describe '#update' do
- it "doesn't update other taskbar" do
- expect do
- taskbar.update!(state: { foo: :bar })
- end.not_to change { other_taskbar.reload.updated_at }
- end
- end
- describe '#destroy' do
- it "doesn't update other taskbar" do
- expect do
- taskbar.destroy!
- end.not_to change { other_taskbar.reload.updated_at }
- end
- end
- end
- end
- end
- context 'single creation' do
- let(:taskbar) do
- described_class.destroy_all
- UserInfo.current_user_id = 1
- create(:taskbar, params: {
- id: 1234,
- })
- end
- it 'existing key' do
- expect(taskbar.key).to eq('Ticket-1234')
- end
- it 'params' do
- expect(taskbar.params[:id]).to eq(1234)
- end
- it 'state' do
- expect(taskbar.state.blank?).to eq(true)
- end
- it 'check last_contact' do
- UserInfo.current_user_id = 1
- last_contact1 = taskbar.last_contact
- travel 2.minutes
- taskbar.notify = false
- taskbar.state = { a: 1 }
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- last_contact2 = taskbar.last_contact
- travel 2.minutes
- taskbar.notify = true
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
- travel 2.minutes
- taskbar.notify = true
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
- travel 2.minutes
- taskbar.notify = false
- taskbar.state = { a: 1 }
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
- travel 2.minutes
- taskbar.notify = true
- taskbar.state = { a: 1 }
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
- travel 2.minutes
- taskbar.notify = true
- taskbar.state = { a: 2 }
- taskbar.save!
- expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
- expect(taskbar.last_contact.to_s).not_to eq(last_contact2.to_s)
- end
- end
- context 'multiple creation' do
- it 'create tasks' do
- described_class.destroy_all
- UserInfo.current_user_id = 1
- taskbar1 = described_class.create(
- client_id: 123,
- key: 'Ticket-1234',
- callback: 'TicketZoom',
- params: {
- id: 1234,
- },
- state: {},
- prio: 1,
- notify: false,
- user_id: 1,
- )
- UserInfo.current_user_id = 2
- taskbar2 = described_class.create(
- client_id: 123,
- key: 'Ticket-1234',
- callback: 'TicketZoom',
- params: {
- id: 1234,
- },
- state: {},
- prio: 2,
- notify: false,
- user_id: 1,
- )
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(2)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(2)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
- taskbar3 = described_class.create(
- client_id: 123,
- key: 'Ticket-4444',
- callback: 'TicketZoom',
- params: {
- id: 4444,
- },
- state: {},
- prio: 2,
- notify: false,
- user_id: 1,
- )
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(2)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(2)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- agent_id = create(:agent).id
- UserInfo.current_user_id = agent_id
- taskbar4 = described_class.create(
- client_id: 123,
- key: 'Ticket-1234',
- callback: 'TicketZoom',
- params: {
- id: 1234,
- },
- state: {},
- prio: 4,
- notify: false,
- user_id: 1,
- )
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- UserInfo.current_user_id = 2
- taskbar2.state = { article: {}, ticket: {} }
- taskbar2.save!
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- UserInfo.current_user_id = 2
- taskbar2.state = { article: { body: 'some body' }, ticket: {} }
- taskbar2.save!
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- UserInfo.current_user_id = 1
- taskbar1.state = { article: { body: '' }, ticket: { state_id: 123 } }
- taskbar1.save!
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- taskbar1_last_contact = taskbar1.last_contact.to_s
- taskbar2_last_contact = taskbar2.last_contact.to_s
- taskbar3_last_contact = taskbar3.last_contact.to_s
- taskbar4_last_contact = taskbar4.last_contact.to_s
- travel 2.minutes
- UserInfo.current_user_id = 2
- taskbar2.state = { article: { body: 'some body' }, ticket: {} }
- taskbar2.notify = true
- taskbar2.save!
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar3.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar3_last_contact)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- UserInfo.current_user_id = 2
- taskbar2.state = { article: { body: 'some body 222' }, ticket: {} }
- taskbar2.notify = true
- taskbar2.save!
- taskbar1.reload
- expect(taskbar1.preferences[:tasks].count).to eq(3)
- expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar1.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
- expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar1.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- taskbar2.reload
- expect(taskbar2.preferences[:tasks].count).to eq(3)
- expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar2.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
- expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar2.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- taskbar3.reload
- expect(taskbar3.preferences[:tasks].count).to eq(1)
- expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
- expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
- expect(taskbar3.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar3_last_contact)
- taskbar4.reload
- expect(taskbar4.preferences[:tasks].count).to eq(3)
- expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
- expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
- expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
- expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
- expect(taskbar4.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
- expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_id)
- expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
- expect(taskbar4.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
- travel_back
- UserInfo.current_user_id = nil
- end
- end
- end
|