Nessuna descrizione http://j1x-huginn.herokuapp.com

dry_runnable_spec.rb 1.6KB

    require 'spec_helper' describe DryRunnable do class Agents::SandboxedAgent < Agent default_schedule "3pm" can_dry_run! def check log "Logging" create_event payload: { 'test' => 'foo' } error "Recording error" create_event payload: { 'test' => 'bar' } self.memory = { 'last_status' => 'ok' } save! end end before do stub(Agents::SandboxedAgent).valid_type?("Agents::SandboxedAgent") { true } @agent = Agents::SandboxedAgent.create(name: "some agent") { |agent| agent.user = users(:bob) } end def counts [users(:bob).agents.count, users(:bob).events.count, users(:bob).logs.count] end it "traps logging, event emission and memory updating" do results = nil expect { results = @agent.dry_run! @agent.reload }.not_to change { [@agent.memory, counts] } expect(results[:log]).to match(/\AI, .+ INFO -- : Logging\nE, .+ ERROR -- : Recording error\n/) expect(results[:events]).to eq([{ 'test' => 'foo' }, { 'test' => 'bar' }]) expect(results[:memory]).to eq({ 'last_status' => 'ok' }) end it "does not perform dry-run if Agent does not support dry-run" do stub(@agent).can_dry_run? { false } results = nil expect { results = @agent.dry_run! @agent.reload }.not_to change { [@agent.memory, counts] } expect(results[:log]).to match(/\AE, .+ ERROR -- : Exception during dry-run. SandboxedAgent does not support dry-run: /) expect(results[:events]).to eq([]) expect(results[:memory]).to eq({}) end end