1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
require 'teststrap'
context "ContextMiddleware" do
setup { Riot::ContextMiddleware.new("") }
teardown { Riot::Context.middlewares.clear }
asserts("#call on the base class") do
topic.call("Foo")
end.raises(RuntimeError, "You should implement call yourself")
context "registration" do
setup { Class.new(Riot::ContextMiddleware) { register } }
asserts("registered middlewares list") { Riot::Context.middlewares }.size(1)
asserts("registered middleware") { Riot::Context.middlewares.first }.kind_of(Class)
end # registration
context "that is not meant to be used" do
hookup do
Class.new(Riot::ContextMiddleware) do
register
# def handle?(context) context.description == "Bar"; end
def call(context)
context.setup { "fooberries" } if context.description == "Bar"
middleware.call(context)
end
end
end
setup do
Riot::Context.new("Foo") { asserts_topic.nil }.run(MockReporter.new)
end
asserts("tests passed") { topic.passes }.equals(1)
end # that is not meant to be used
context "that is meant to be used" do
hookup do
Class.new(Riot::ContextMiddleware) do
register
# def handle?(context); true; end
def call(context)
context.setup { "fooberries" }
middleware.call(context)
end
end
end
setup do
Riot::Context.new("Foo") { asserts_topic.equals("fooberries") }.run(MockReporter.new)
end
asserts("tests passed") { topic.passes }.equals(1)
end # that is meant to be used
context "applied in multiples" do
hookup do
Class.new(Riot::ContextMiddleware) do
register
def call(context)
context.setup { topic + "berries" }
middleware.call(context)
end
end
end
hookup do
Class.new(Riot::ContextMiddleware) do
register
def call(context)
context.setup { "foo" }
middleware.call(context)
end
end
end
setup do
Riot::Context.new("Foo") { asserts_topic.equals("fooberries") }.run(MockReporter.new)
end
asserts("tests passed") { topic.passes }.equals(1)
end # that are not exclusive
context "has access to options after context setup" do
hookup do
Class.new(Riot::ContextMiddleware) do
register
def call(context)
middleware.call(context)
context.setup { "fooberries" } if context.option(:foo) == "bar"
end
end
end
setup do
Riot::Context.new("Foo") do
set :foo, "bar"
asserts_topic.equals("fooberries")
end.run(MockReporter.new)
end
asserts("tests passed") { topic.passes }.equals(1)
end # has access to options after context setup
context "that errors while preparing" do
hookup do
Class.new(Riot::ContextMiddleware) do
register
def call(context)
raise Exception.new("Banana pants")
end
end
end
setup do
Riot::Context.new("Foo") { asserts_topic.nil }.run(MockReporter.new)
end
asserts("tests passed") { topic.passes }.equals(0)
asserts("tests failed") { topic.failures }.equals(0)
asserts("tests errored") { topic.errors }.equals(1)
end # that is not meant to be used
end # ContextMiddleware
|