From 104fc43940b71fea68c50f76385c18e40657af93 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 8 Jul 2015 01:39:56 +0200 Subject: [PATCH] write tests for Callbacks --- .../lib/diaspora_federation/callbacks_spec.rb | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 spec/lib/diaspora_federation/callbacks_spec.rb diff --git a/spec/lib/diaspora_federation/callbacks_spec.rb b/spec/lib/diaspora_federation/callbacks_spec.rb new file mode 100644 index 0000000..6210c7c --- /dev/null +++ b/spec/lib/diaspora_federation/callbacks_spec.rb @@ -0,0 +1,74 @@ +module DiasporaFederation + describe Callbacks do + subject(:callbacks) { Callbacks.new %i(some_event another_event) } + + context "callbacks" do + it "defines a callback and calls it" do + callbacks.on(:some_event) do + "result" + end + + expect(callbacks.trigger(:some_event)).to eq("result") + end + + it "defines a callback with params and calls it" do + callbacks.on(:some_event) do |arg1, arg2| + "result: #{arg1}, #{arg2}" + end + + expect(callbacks.trigger(:some_event, "foo", "bar")).to eq("result: foo, bar") + end + end + + describe "#on" do + it "fails if an event is unknown" do + expect { callbacks.on(:unknown_event) {} }.to raise_error ArgumentError, "Undefined event unknown_event" + end + + it "fails if an event is unknown" do + callbacks.on(:some_event) {} + expect { callbacks.on(:some_event) {} }.to raise_error ArgumentError, "Already defined event some_event" + end + end + + describe "#trigger" do + it "fails if an event is unknown" do + expect { callbacks.trigger(:unknown_event) }.to raise_error ArgumentError, "Undefined event unknown_event" + end + end + + describe "#definition_complete?" do + it "is false if nothing is defined" do + expect(callbacks.definition_complete?).to be_falsey + end + + it "is false if not all events are defined" do + callbacks.on(:some_event) {} + expect(callbacks.definition_complete?).to be_falsey + end + + it "is true if all events are defined" do + callbacks.on(:some_event) {} + callbacks.on(:another_event) {} + expect(callbacks.definition_complete?).to be_truthy + end + end + + describe "#missing_handlers" do + it "contains all events if nothing isdefined" do + expect(callbacks.missing_handlers).to eq(%i(some_event another_event)) + end + + it "contains the missing events if not all events are defined" do + callbacks.on(:some_event) {} + expect(callbacks.missing_handlers).to eq(%i(another_event)) + end + + it "is empty if all events are defined" do + callbacks.on(:some_event) {} + callbacks.on(:another_event) {} + expect(callbacks.missing_handlers).to be_empty + end + end + end +end