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