spec/lita/handlers/github_commits_spec.rb in lita-github-commits-0.0.2 vs spec/lita/handlers/github_commits_spec.rb in lita-github-commits-0.0.3
- old
+ new
@@ -5,10 +5,11 @@
describe "#receive" do
let(:request) do
request = double("Rack::Request")
+ allow(request).to receive(:env).and_return({"HTTP_X_GITHUB_EVENT" => "push"})
allow(request).to receive(:params).and_return(params)
request
end
let(:response) { Rack::Response.new }
@@ -305,11 +306,20 @@
}
}
JSON
end
+ let(:ping_payload) do
+ <<-JSON.chomp
+{
+ "zen":"Non-blocking is better than blocking",
+ "hook_id":12345
+}
+ JSON
+ end
+
context "request with commits" do
before do
Lita.config.handlers.github_commits.repos["octokitty/testing"] = "#baz"
allow(params).to receive(:[]).with("payload").and_return(valid_payload)
end
@@ -365,9 +375,38 @@
it "sends a notification message to the applicable rooms" do
expect(Lita.logger).to receive(:error) do |error|
expect(error).to include("Could not parse JSON payload from Github")
end
+ subject.receive(request, response)
+ end
+ end
+
+
+ context "ping event" do
+ before do
+ Lita.config.handlers.github_commits.repos["octokitty/testing"] = "#baz"
+ allow(params).to receive(:[]).with("payload").and_return(ping_payload)
+ allow(request).to receive(:env).and_return({"HTTP_X_GITHUB_EVENT" => "ping"})
+ end
+
+ it "handles the ping event" do
+ expect(Lita.logger).to_not receive(:error)
+ expect(response).to receive(:write).with("Working!")
+ subject.receive(request, response)
+ end
+ end
+
+ context "unknown event" do
+ before do
+ Lita.config.handlers.github_commits.repos["octokitty/testing"] = "#baz"
+ allow(params).to receive(:[]).with("payload").and_return(ping_payload)
+ allow(request).to receive(:env).and_return({"HTTP_X_GITHUB_EVENT" => "fakefake"})
+ end
+
+ it "handles the ping event" do
+ expect(Lita.logger).to_not receive(:error)
+ expect(response).to_not receive(:write)
subject.receive(request, response)
end
end