spec/presenter_spec.rb in keynote-0.2.0pre1 vs spec/presenter_spec.rb in keynote-0.2.0pre2
- old
+ new
@@ -61,23 +61,53 @@
end
end
end
describe ".use_html5_tags" do
+ let(:klass) do
+ Class.new(TestPresenter) do
+ def generate_h3(content)
+ build_html { h3 content }
+ end
+
+ def generate_small(content)
+ build_html { small content }
+ end
+ end
+ end
+
it "should add Rumble tags like `small` while preserving existing tags" do
- presenter = Html5Presenter.new(nil)
+ presenter = klass.new(nil)
presenter.generate_h3("hi").must_equal "<h3>hi</h3>"
proc { presenter.generate_small("uh-oh") }.must_raise NoMethodError
- Html5Presenter.use_html_5_tags
+ klass.use_html_5_tags
presenter.generate_h3("hi").must_equal "<h3>hi</h3>"
presenter.generate_small("hi").must_equal "<small>hi</small>"
end
end
+ describe ".object_names" do
+ it "doesn't leak between classes" do
+ c1 = Class.new(Keynote::Presenter)
+ c2 = Class.new(Keynote::Presenter)
+
+ c1.object_names << :foo
+ c1.object_names.must_equal [:foo]
+ c2.object_names.must_equal []
+ end
+
+ it "matches the list of presented objects" do
+ c = Class.new(Keynote::Presenter)
+ c.object_names.must_equal []
+ c.presents :biff, :bam, :pow
+ c.object_names.must_equal [:biff, :bam, :pow]
+ end
+ end
+
describe "#present" do
it "should pass its view context through to the new presenter" do
mock = mock()
mock.expects(:pizza)
@@ -87,10 +117,29 @@
p1.wont_equal p2
p2.pizza
end
end
+ describe "#inspect" do
+ it "includes the class name" do
+ CombinedPresenter.new(:view, :a, :b).inspect.
+ must_match /^#<CombinedPresenter /
+ end
+
+ it "shows .inspect output for each presented object" do
+ c1 = Class.new(Object) { def inspect; "c1"; end }
+ c2 = Class.new(Object) { def inspect; "c2"; end }
+ p = CombinedPresenter.new(:view, c1.new, c2.new)
+
+ p.inspect.must_equal "#<CombinedPresenter model_1: c1, model_2: c2>"
+ end
+
+ it "shouldn't leave extra padding for zero-arg presenters" do
+ EmptyPresenter.new(:view).inspect.must_equal "#<EmptyPresenter>"
+ end
+ end
+
describe "#method_missing" do
it "should pass unknown method calls through to the view" do
mock = mock()
mock.expects(:talking).with(:heads)
@@ -122,9 +171,9 @@
rescue NoMethodError => e
err = e
end
err.wont_be_nil
- err.message.must_match /#<Keynote::Presenter:/
+ err.message.must_match /#<Keynote::Presenter/
end
end
end