require "spec_helper" require "study_engine/report" require "study_engine/config" module StudyEngine describe Report do before do StudyEngine.events = ["Baseline", "6 month", "12 month"] end describe "#groups" do let(:a1ai) { double("a1ai", study_id: "a1", event: "Baseline", completed_at: false) } let(:a1bi) { double("a1bi", study_id: "a1", event: "6 month", completed_at: false) } let(:a2ai) { double("a2ai", study_id: "a2", event: "Baseline", completed_at: false) } let(:a1a) { double("a1a", study_id: "a1", event: "Baseline", completed_at: Time.new) } let(:a1b) { double("a1b", study_id: "a1", event: "6 month", completed_at: Time.new) } let(:a1c) { double("a1c", study_id: "a1", event: "12 month", completed_at: Time.new) } let(:a2a) { double("a2a", study_id: "a2", event: "Baseline", completed_at: Time.new) } let(:a2b) { double("a2b", study_id: "a2", event: "6 month", completed_at: Time.new) } let(:a3a) { double("a3a", study_id: "a3", event: "Baseline", completed_at: Time.new) } let(:assessments) do [a1ai, a1a, a1b, a1bi, a1c, a2ai, a2a, a2b, a3a] end it "returns a data structure assessments grouped by study id ordered by event and preferring complete" do Report.new(assessments, "study_id", "ASC").groups.should == [ Report.group_class.new("a1", [a1a, a1ai], [a1b, a1bi], [a1c]), Report.group_class.new("a2", [a2a, a2ai], [a2b], []), Report.group_class.new("a3", [a3a], [], []), ] end it "can order by study_id descending" do Report.new(assessments, "study_id", "DESC").groups.should == [ Report.group_class.new("a3", [a3a], [], []), Report.group_class.new("a2", [a2a, a2ai], [a2b], []), Report.group_class.new("a1", [a1a, a1ai], [a1b, a1bi], [a1c]), ] end end end end