|
26 | 26 | user3.children << user5
|
27 | 27 | user3.children << user6
|
28 | 28 |
|
29 |
| - user1.contracts.create!(contract_type: ct1) |
30 |
| - user2.contracts.create!(contract_type: ct1) |
31 |
| - user3.contracts.create!(contract_type: ct1) |
32 |
| - user3.contracts.create!(contract_type: ct2) |
33 |
| - user4.contracts.create!(contract_type: ct2) |
34 |
| - user5.contracts.create!(contract_type: ct1) |
35 |
| - user6.contracts.create!(contract_type: ct2) |
| 29 | + user1.contracts.create!(title: "Contract 1", contract_type: ct1) |
| 30 | + user2.contracts.create!(title: "Contract 2", contract_type: ct1) |
| 31 | + user3.contracts.create!(title: "Contract 3", contract_type: ct1) |
| 32 | + user3.contracts.create!(title: "Contract 4", contract_type: ct2) |
| 33 | + user4.contracts.create!(title: "Contract 5", contract_type: ct2) |
| 34 | + user5.contracts.create!(title: "Contract 6", contract_type: ct1) |
| 35 | + user6.contracts.create!(title: "Contract 7", contract_type: ct2) |
36 | 36 | end
|
37 | 37 |
|
38 | 38 | context "with basic config" do
|
39 | 39 | let!(:group) { Group.create!(name: "TheGroup") }
|
40 | 40 |
|
| 41 | + it "loads all nodes in a constant number of queries" do |
| 42 | + expect do |
| 43 | + root = group_reloaded.root_user_including_tree |
| 44 | + expect(root.children[0].email).to eq "2@example.com" |
| 45 | + expect(root.children[0].parent.children[1].email).to eq "3@example.com" |
| 46 | + end.to_not exceed_query_limit(2) |
| 47 | + end |
| 48 | + |
| 49 | + it "loads all nodes plus single association in a constant number of queries" do |
| 50 | + expect do |
| 51 | + root = group_reloaded.root_user_including_tree(:contracts) |
| 52 | + expect(root.children[0].email).to eq "2@example.com" |
| 53 | + expect(root.children[0].parent.children[1].email).to eq "3@example.com" |
| 54 | + expect(root.children[0].children[0].contracts[0].user. |
| 55 | + parent.parent.children[1].children[1].contracts[0].title).to eq "Contract 7" |
| 56 | + end.to_not exceed_query_limit(3) |
| 57 | + end |
| 58 | + |
41 | 59 | it "loads all nodes and associations in a constant number of queries" do
|
42 | 60 | expect do
|
43 | 61 | root = group_reloaded.root_user_including_tree(contracts: :contract_type)
|
|
66 | 84 | to eq "1@example.com"
|
67 | 85 | end
|
68 | 86 |
|
| 87 | + it "works if true passed on first call" do |
| 88 | + expect(group_reloaded.root_user_including_tree(true).email).to eq "1@example.com" |
| 89 | + end |
| 90 | + |
69 | 91 | it "eager loads inverse association to group" do
|
70 | 92 | expect do
|
71 | 93 | root = group_reloaded.root_user_including_tree
|
|
0 commit comments