Sha256: c1aa01f7e635f6c093091b74e408370c417668a73d4dbe74e8c783635807000a
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
require 'spec_helper' describe Influxer::Metrics do before do allow_any_instance_of(Influxer::Client).to receive(:query) do |_, sql| sql end end let(:dummy) do Class.new(Influxer::Metrics) do set_series 'dummy' default_scope -> { time(:hour) } end end let(:doomy) do Class.new(dummy) do scope :by_user, -> (id) { where(user: id) if id.present? } scope :hourly, -> { where(by: :hour).time(nil) } scope :daily, -> { where(by: :day).time(nil) } fanout :by, :user, :account, delimeter: "." end end let(:dappy) do Class.new(doomy) do fanout :user, delimeter: "_" end end describe "fanouts" do it "should work with one fanout" do expect(doomy.by_user(1).to_sql).to eq "select * from \"dummy.user.1\" group by time(1h)" end it "should work with several fanouts" do expect(dappy.by_user(1).hourly.to_sql).to eq "select * from \"dummy_by_hour_user_1\"" end it "should work with regexp fanouts" do expect(dappy.where(dummy_id: 100).by_user(/[1-3]/).daily.to_sql) .to eq "select * from /^dummy_by_day_user_[1-3]$/ where (dummy_id=100)" end end describe "#prepare_fanout_points" do before do allow_any_instance_of(Influxer::Client).to receive(:query) do |_, _sql| JSON.parse(File.read('./spec/fixtures/fanout_series.json')) end end it "sets fanout fields values" do res = dappy.by_user(/\d+/).daily.to_a expect(res.detect { |v| v["user"] == '6' }).to include('time_spent' => 100, 'by' => 'day') expect(res.select { |v| v["user"] == '2' }.size).to eq 2 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
influxer-0.2.4 | spec/metrics/fanout_spec.rb |