Skip to content

Commit

Permalink
fix(#4297): flaky report spec
Browse files Browse the repository at this point in the history
Changes the test to explicitly create all the items needed. This removes
flakiness surrounding potential situations where generated items get
counted as disposable.
  • Loading branch information
elasticspoon committed Apr 25, 2024
1 parent 24e0edb commit 8a22b61
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions spec/services/reports/children_served_report_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -108,30 +108,37 @@
describe "#disposable_diapers_from_kits_total" do
it "calculates the number of disposable diapers that have been distributed within kits" do
organization = create(:organization, skip_items: true)
toddler_disposable_kit = create(:kit, :with_item, organization: organization)
infant_disposable_kit = create(:kit, :with_item, organization: organization)
infant_cloth_kit = create(:kit, :with_item, organization: organization)

within_time = Time.zone.parse("2020-05-31 14:00:00")
create(:base_item, name: "Unrelated Base", partner_key: "unrelated base", category: "unrelated base")

create(:base_item, name: "Toddler Disposable Diaper", partner_key: "toddler diapers", category: "disposable diaper")
create(:base_item, name: "Infant Disposable Diaper", partner_key: "infant diapers", category: "infant disposable diaper")
create(:base_item, name: "Infant Cloth Diaper", partner_key: "infant cloth diapers", category: "cloth diaper")

toddler_disposable_kit_item = create(:item, name: "Toddler Disposable Diapers", partner_key: "toddler diapers")
infant_disposable_kit_item = create(:item, name: "Infant Disposable Diapers", partner_key: "infant diapers")
infant_cloth_kit_item = create(:item, name: "Infant Cloth Diapers", partner_key: "infant cloth diapers")
toddler_disposable_kit_item = create(:item, name: "Toddler Disposable Diaper", partner_key: "toddler diapers", organization: organization)
infant_disposable_kit_item = create(:item, name: "Infant Disposable Diapers", partner_key: "infant diapers", organization: organization)
infant_cloth_kit_item = create(:item, name: "Infant Cloth Diapers", partner_key: "infant cloth diapers", organization: organization)

toddler_disposable_line_item = create(:line_item, item: toddler_disposable_kit_item, quantity: 5)
infant_disposable_line_item = create(:line_item, item: infant_disposable_kit_item, quantity: 5)
infant_cloth_line_item = create(:line_item, item: infant_cloth_kit_item, quantity: 5)

toddler_disposable_kit.line_items.first.update!(item_id: toddler_disposable_kit_item.id, quantity: 5)
infant_disposable_kit.line_items.first.update!(item_id: infant_disposable_kit_item.id, quantity: 5)
infant_cloth_kit.line_items.first.update!(item_id: infant_cloth_kit_item.id, quantity: 5)
toddler_disposable_kit = create(:kit, organization: organization, line_items: [toddler_disposable_line_item])
infant_disposable_kit = create(:kit, organization: organization, line_items: [infant_disposable_line_item])
infant_cloth_kit = create(:kit, organization: organization, line_items: [infant_cloth_line_item])

within_time = Time.zone.parse("2020-05-31 14:00:00")

infant_distribution = create(:distribution, organization: organization, issued_at: within_time)
toddler_distribution = create(:distribution, organization: organization, issued_at: within_time)

create(:line_item, quantity: 10, item: toddler_disposable_kit.item, itemizable: toddler_distribution)
create(:line_item, quantity: 10, item: infant_disposable_kit.item, itemizable: infant_distribution)
create(:line_item, :distribution, quantity: 10, item: infant_cloth_kit.item, itemizable: infant_distribution)
infant_disposable_dist_item = create(:item, name: "Dist Item 1", organization: organization, partner_key: "unrelated base", kit: toddler_disposable_kit)
toddler_disposable_dist_item = create(:item, name: "Dist Item 2", organization: organization, partner_key: "unrelated base", kit: infant_disposable_kit)
infant_cloth_dist_item = create(:item, name: "Dist Item 3", organization: organization, partner_key: "unrelated base", kit: infant_cloth_kit)

create(:line_item, quantity: 10, item: toddler_disposable_dist_item, itemizable: toddler_distribution)
create(:line_item, quantity: 10, item: infant_disposable_dist_item, itemizable: infant_distribution)
create(:line_item, :distribution, quantity: 10, item: infant_cloth_dist_item, itemizable: infant_distribution)

service = described_class.new(organization: organization, year: within_time.year)

Expand Down

0 comments on commit 8a22b61

Please sign in to comment.