require "spec_helper" module Marty bud_cats =< ?", note_rate). pluck("note_rate") m = Gemini::FannieBup. joins("bud_category"). mcfly_pt('infinity'). select("name"). pluck("name") mm = Gemini::FannieBup. mcfly_pt('01-01-2003').count EOF describe 'DeloreanQuery' do before(:each) do marty_whodunnit Marty::DataImporter.do_import_summary(Gemini::BudCategory, bud_cats) Marty::DataImporter.do_import_summary(Gemini::FannieBup, fannie_bup) Marty::Script.load_script_bodies( { "A" => script, }, Date.today) @engine = Marty::ScriptSet.new.get_engine("A") end it "perfroms join+count" do res = @engine.evaluate("A", "c", {}) expect(res).to eq Gemini::FannieBup. joins("bud_category"). where("name LIKE '%30'"). count end it "perfroms select+distinct" do res = @engine.evaluate("A", "s", {}) expect(res).to eq Gemini::FannieBup. joins("bud_category"). select("name"). distinct("name"). pluck("name") end it "perfroms mcfly_pt" do res = @engine.evaluate("A", ["m", "mm"], {}) expect(res).to eq [ Gemini::FannieBup. joins("bud_category"). mcfly_pt('infinity'). select("name"). pluck("name"), Gemini::FannieBup. mcfly_pt('01-01-2003').count, ] end it "perfroms order+first" do res = @engine.evaluate("A", "o", {}) expect(res).to eq Gemini::FannieBup. order("note_rate DESC", "buy_down ASC"). select("note_rate"). first.note_rate end it "perfroms group+count" do res = @engine.evaluate("A", "gg", {}) expect(res). to eq Gemini::FannieBup. select("settlement_yy*settlement_mm AS x, count(*) AS c"). group("settlement_mm", "settlement_yy"). order("settlement_mm"). map(&:attributes) end it "perfroms where+not" do res = @engine.evaluate("A", "n", {}) expect(res).to eq Gemini::FannieBup.where.not("settlement_mm < 12").count end it "perfroms query+query" do res = @engine.evaluate("A", ["q1", "q2"], {}) expect(res).to eq [ [2.25, 2.375, 2.5, 2.625, 2.75, 2.875], [2.875, 2.75, 2.625, 2.5, 2.375, 2.25], ] end it "handle query params" do res = @engine.evaluate("A", "pq", {"settlement_mm" => 12, "note_rate" => 2.5}) expect(res).to eq [2.625, 2.75, 2.875] end end end