diaspora/spec/helpers/gon_helper_spec.rb
cmrd Senya a3f208c380
Notifications and search page backend updates
Updates introduce support for preloading contacts to Gon in order
to support client-side rendering of aspect membership dropdown box.
2016-08-08 17:21:38 +03:00

48 lines
1.2 KiB
Ruby

require "spec_helper"
describe GonHelper, type: :helper do
include_context :gon
describe "#gon_load_contact" do
let(:contact) { FactoryGirl.build(:contact) }
let(:current_user) { contact.user }
let(:another_contact) { FactoryGirl.build(:contact, user: current_user) }
before do
RequestStore.store[:gon] = Gon::Request.new(controller.request.env)
Gon.preloads = {}
end
it "calls appropriate presenter" do
expect_any_instance_of(ContactPresenter).to receive(:full_hash_with_person)
gon_load_contact(contact)
end
shared_examples "contacts loading" do
it "loads contacts to gon" do
gon_load_contact(contact)
gon_load_contact(another_contact)
expect(Gon.preloads[:contacts].count).to eq(2)
end
it "avoids duplicates" do
gon_load_contact(contact)
gon_load_contact(contact)
expect(Gon.preloads[:contacts].count).to eq(1)
end
end
context "with non-persisted contacts" do
include_examples "contacts loading"
end
context "with persisted contacts" do
before do
contact.save!
another_contact.save!
end
include_examples "contacts loading"
end
end
end