|
229 | 229 | expect(court_topics.values).to all( |
230 | 230 | a_hash_including( |
231 | 231 | topic: a_kind_of(String), |
232 | | - details: a_kind_of(String), |
| 232 | + details: "", |
233 | 233 | answers: all( |
234 | 234 | a_hash_including( |
235 | 235 | date: a_string_matching(/\d{2}\/\d{2}\/\d{2}/), |
|
270 | 270 | end |
271 | 271 |
|
272 | 272 | context "when some topics have no answers" do |
273 | | - it "includes every topic, with an empty answer list for unanswered ones" do |
| 273 | + it "omits unanswered topics by default" do |
274 | 274 | create(:contact_topic_answer, case_contact: contacts[0], contact_topic: topics[0], value: "Answer 1") |
275 | 275 |
|
276 | 276 | court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
277 | 277 |
|
278 | | - expect(court_topics.keys).to eq(["Question 1", "Question 2", "Question 3"]) |
| 278 | + expect(court_topics.keys).to eq(["Question 1"]) |
279 | 279 | expect(court_topics["Question 1"][:answers].pluck(:value)).to eq(["Answer 1"]) |
| 280 | + end |
| 281 | + |
| 282 | + it "includes unanswered topics when requested" do |
| 283 | + create(:contact_topic_answer, case_contact: contacts[0], contact_topic: topics[0], value: "Answer 1") |
| 284 | + |
| 285 | + court_topics = build(:case_court_report_context, casa_case: casa_case, include_empty_topics: true).court_topics |
| 286 | + |
| 287 | + expect(court_topics.keys).to eq(["Question 1", "Question 2", "Question 3"]) |
280 | 288 | expect(court_topics["Question 2"][:answers]).to eq([]) |
281 | 289 | expect(court_topics["Question 3"][:answers]).to eq([]) |
282 | 290 | end |
283 | 291 |
|
284 | 292 | it "does not include unanswered topics that are inactive" do |
285 | 293 | topics[1].update!(active: false) |
286 | 294 |
|
287 | | - court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
| 295 | + court_topics = build(:case_court_report_context, casa_case: casa_case, include_empty_topics: true).court_topics |
288 | 296 |
|
289 | 297 | expect(court_topics.keys).to eq(["Question 1", "Question 3"]) |
290 | 298 | end |
291 | 299 |
|
292 | 300 | it "does not include unanswered topics excluded from the court report" do |
293 | 301 | topics[1].update!(exclude_from_court_report: true) |
294 | 302 |
|
295 | | - court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
| 303 | + court_topics = build(:case_court_report_context, casa_case: casa_case, include_empty_topics: true).court_topics |
296 | 304 |
|
297 | 305 | expect(court_topics.keys).to eq(["Question 1", "Question 3"]) |
298 | 306 | end |
|
301 | 309 | topics |
302 | 310 | create(:contact_topic, question: "Other Org Question") |
303 | 311 |
|
304 | | - court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
| 312 | + court_topics = build(:case_court_report_context, casa_case: casa_case, include_empty_topics: true).court_topics |
305 | 313 |
|
306 | 314 | expect(court_topics.keys).to eq(["Question 1", "Question 2", "Question 3"]) |
307 | 315 | end |
308 | 316 | end |
309 | 317 |
|
310 | 318 | context "when answers occur in a different order than the topics were created" do |
311 | | - it "orders topics by creation order, not by answer date" do |
| 319 | + it "orders topics alphabetically" do |
| 320 | + topics[0].update!(question: "Zulu") |
| 321 | + topics[1].update!(question: "Alpha") |
| 322 | + topics[2].update!(question: "Middle") |
312 | 323 | create(:contact_topic_answer, case_contact: contacts[0], contact_topic: topics[2], value: "Earliest answer") |
313 | 324 | create(:contact_topic_answer, case_contact: contacts[1], contact_topic: topics[1], value: "Middle answer") |
314 | 325 | create(:contact_topic_answer, case_contact: contacts[2], contact_topic: topics[0], value: "Latest answer") |
315 | 326 |
|
316 | 327 | court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
317 | 328 |
|
318 | | - expect(court_topics.keys).to eq(["Question 1", "Question 2", "Question 3"]) |
| 329 | + expect(court_topics.keys).to eq(["Alpha", "Middle", "Zulu"]) |
319 | 330 | end |
320 | 331 | end |
321 | 332 |
|
|
326 | 337 |
|
327 | 338 | court_topics = build(:case_court_report_context, casa_case: casa_case).court_topics |
328 | 339 |
|
329 | | - expect(court_topics.keys).to eq(["Question 1", "Question 2", "Question 3"]) |
| 340 | + expect(court_topics.keys).to eq(["Question 2"]) |
330 | 341 | expect(court_topics["Question 2"][:answers].pluck(:value)).to eq(["Answer before deactivation"]) |
331 | 342 | end |
332 | 343 | end |
|
400 | 411 |
|
401 | 412 | expect(result).to be_empty |
402 | 413 | end |
| 414 | + |
| 415 | + it "orders interviewees by contact type group and name" do |
| 416 | + casa_case = create(:casa_case) |
| 417 | + family_group = create(:contact_type_group, casa_org: casa_case.casa_org, name: "Family") |
| 418 | + health_group = create(:contact_type_group, casa_org: casa_case.casa_org, name: "Health") |
| 419 | + therapist = create(:contact_type, contact_type_group: health_group, name: "Therapist") |
| 420 | + aunt = create(:contact_type, contact_type_group: family_group, name: "Aunt") |
| 421 | + counselor = create(:contact_type, contact_type_group: health_group, name: "Counselor") |
| 422 | + create(:case_contact, casa_case: casa_case, contact_types: [therapist, aunt, counselor]) |
| 423 | + |
| 424 | + result = build(:case_court_report_context, casa_case: casa_case).filtered_interviewees |
| 425 | + |
| 426 | + expect(result.map { |interviewee| interviewee.contact_type.name }).to eq(["Aunt", "Counselor", "Therapist"]) |
| 427 | + end |
403 | 428 | end |
404 | 429 |
|
405 | 430 | describe "#context" do |
|
0 commit comments