Sha256: 1d682020a798b9c701b4f61f8c579fe33bf669f099d928129880c5426fc88a9e

Contents?: true

Size: 1.98 KB

Versions: 2

Compression:

Stored size: 1.98 KB

Contents

require "spec_helper"
require "timecop"

describe Lita::Handlers::ServerStatus, lita_handler: true do
  let(:formatted_local_time) { Time.now.strftime("%Y-%m-%d %H:%M") }

  before(:each) do
    allow_any_instance_of(Lita::Handlers::ServerStatus).to receive(:formatted_time).and_return(formatted_local_time)
  end

  it { routes("Waffle McRib is starting deploy of 'APPNAME' from branch 'MASTER' to PRODUCTION").to(:save_status) }
  it { routes_command("server status").to(:list_statuses) }

  it "saves the server status" do
    expect_any_instance_of(Lita::Handlers::ServerStatus).to receive(:save_status)
    send_message(%{Waffle McRib is starting deploy of 'APPNAME' from branch 'MASTER' to PRODUCTION})
  end

  it "update the server status if it changes" do
    Timecop.freeze(Time.now) do
      send_message(%{Waffle McRib is starting deploy of 'FAKEAPP' from branch 'MASTER' to PRODUCTION})
      send_command("server status")
      expect(replies.last).to include("FAKEAPP PRODUCTION: MASTER (Waffle McRib @ #{formatted_local_time})")

      send_message(%{Waffle McRib is starting deploy of 'FAKEAPP' from branch 'WAFFLE' to PRODUCTION})
      send_command("server status")
      expect(replies.last).to include("FAKEAPP PRODUCTION: WAFFLE (Waffle McRib @ #{formatted_local_time})")
    end
  end

  it "should list the current server statuses" do
    Timecop.freeze(Time.now) do
      send_message(%{Waffle McRib is starting deploy of 'FAKEAPP' from branch 'MASTER' to PRODUCTION})
      send_message(%{Waffle McRib is starting deploy of 'BATMAN' from branch 'AWESOME' to STAGING})
      send_command("server status")
      expect(replies.last).to include("FAKEAPP PRODUCTION: MASTER (Waffle McRib @ #{formatted_local_time})")
      expect(replies.last).to include("BATMAN STAGING: AWESOME (Waffle McRib @ #{formatted_local_time})")
    end
  end

  it "admits when there are no statuses" do
    send_command("server status")
    expect(replies.last).to eq("I don't know what state the servers are in.")
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lita-server_status-0.0.3 spec/lita/handlers/server_status_spec.rb
lita-server_status-0.0.2 spec/lita/handlers/server_status_spec.rb