Updates introduce support for preloading contacts to Gon in order to support client-side rendering of aspect membership dropdown box.
48 lines
1.2 KiB
Ruby
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
|