From c7b176e6a69cdee22c54fffda1beef3119bd3558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=A3is=20Ozols?= Date: Mon, 2 Apr 2012 21:50:12 +0300 Subject: [PATCH 1/3] Add specs for Refinery::Menu and fix stack level too deep error coming from Refinery::Menu#inspect. --- core/lib/refinery/menu.rb | 5 +--- core/spec/lib/refinery/menu_spec.rb | 38 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 core/spec/lib/refinery/menu_spec.rb diff --git a/core/lib/refinery/menu.rb b/core/lib/refinery/menu.rb index 13137d699d..5c73d30989 100644 --- a/core/lib/refinery/menu.rb +++ b/core/lib/refinery/menu.rb @@ -21,10 +21,7 @@ def roots def to_s items.map(&:title).join(' ') end - - def inspect - items.map(&:inspect) - end + alias :inspect :to_s # The delegation is specified so crazily so that it works on 1.8.x and 1.9.x delegate *((Array.instance_methods - Object.instance_methods) << {:to => :items}) diff --git a/core/spec/lib/refinery/menu_spec.rb b/core/spec/lib/refinery/menu_spec.rb new file mode 100644 index 0000000000..d88d7bc64e --- /dev/null +++ b/core/spec/lib/refinery/menu_spec.rb @@ -0,0 +1,38 @@ +require 'spec_helper' + +module Refinery + describe Menu do + + let(:menu) do + page1 = FactoryGirl.create(:page, :title => 'test1') + page2 = FactoryGirl.create(:page, :title => 'test2', :parent_id => page1.id) + Refinery::Menu.new([page1, page2]) + end + + describe '.initialize' do + it "returns a collection of menu item objects" do + menu.each { |item| item.should be_an_instance_of(MenuItem) } + end + end + + describe '#items' do + it 'returns a collection' do + menu.items.count.should eq(2) + end + end + + describe '#roots' do + it 'returns a collection of items with parent_id == nil' do + menu.roots.collect(&:parent_id).should eq([nil]) + end + end + + describe '#to_s & #inspect' do + it 'returns string of joined page titles' do + menu.to_s.should eq('test1 test2') + menu.inspect.should eq('test1 test2') + end + end + + end +end From d21aee75ebb769ec845a889e807a9d39c1c41478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=A3is=20Ozols?= Date: Mon, 2 Apr 2012 21:56:50 +0300 Subject: [PATCH 2/3] Add changelog entry about stack level too deep in Refinery::Menu fix. --- changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.md b/changelog.md index 904913182d..bdb30a4104 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,9 @@ * [See full list](https://github.com/resolve/refinerycms/compare/2-0-stable...master) +## 2.0.4 [unreleased] +* Fixed stack level too deep error in Refinery::Menu#inspect. [Uģis Ozols](https://github.com/ugisozols) + ## 2.0.3 [2 April 2012] * Fixed missing authentication initializer. [Uģis Ozols](https://github.com/ugisozols) * Fixed Heroku and sqlite3 related errors. [Philip Arndt](https://github.com/parndt) From 329fdfe8310ae1af2754b53723d94ae20c2a7612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=A3is=20Ozols?= Date: Wed, 4 Apr 2012 13:35:25 +0300 Subject: [PATCH 3/3] We decided to not override inspect at all. --- core/lib/refinery/menu.rb | 1 - core/spec/lib/refinery/menu_spec.rb | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/core/lib/refinery/menu.rb b/core/lib/refinery/menu.rb index 5c73d30989..932e6d8d95 100644 --- a/core/lib/refinery/menu.rb +++ b/core/lib/refinery/menu.rb @@ -21,7 +21,6 @@ def roots def to_s items.map(&:title).join(' ') end - alias :inspect :to_s # The delegation is specified so crazily so that it works on 1.8.x and 1.9.x delegate *((Array.instance_methods - Object.instance_methods) << {:to => :items}) diff --git a/core/spec/lib/refinery/menu_spec.rb b/core/spec/lib/refinery/menu_spec.rb index d88d7bc64e..30b1131bed 100644 --- a/core/spec/lib/refinery/menu_spec.rb +++ b/core/spec/lib/refinery/menu_spec.rb @@ -27,10 +27,9 @@ module Refinery end end - describe '#to_s & #inspect' do + describe '#to_s' do it 'returns string of joined page titles' do menu.to_s.should eq('test1 test2') - menu.inspect.should eq('test1 test2') end end