From 1e4f3a52c2d7f6566dfbcc39367bb5844b11ef9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santos?= Date: Fri, 20 Apr 2012 15:12:22 +0100 Subject: [PATCH] 75 tests passing --- lib/polvo/menu.rb | 6 +++-- spec/polvo/menu_spec.rb | 53 +++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/lib/polvo/menu.rb b/lib/polvo/menu.rb index 8fd8928..cab37bb 100644 --- a/lib/polvo/menu.rb +++ b/lib/polvo/menu.rb @@ -19,7 +19,7 @@ def is_mac? def generate_menu_items(cur_dir, options={}) items_info = Hash.new previous_type = 'dir' - @rootdirs.sort.each do |rootdir| + @rootdirs.each do |rootdir| next unless File.exists? "#{rootdir}/#{cur_dir}" Dir.foreach("#{rootdir}/#{cur_dir}") do |item| @@ -123,7 +123,9 @@ def get_script_info(rootdir,file) if filestr =~ /^#\sos:\s*([^\n]*)\s*\n/ os = $1 || 'all' end - #if filestr =~ /^#\sos:\s*([^\n]*)\s*\n/ + # priority + # hidden + # description return { :title => title, 'os' => os, diff --git a/spec/polvo/menu_spec.rb b/spec/polvo/menu_spec.rb index 21d49db..7164250 100644 --- a/spec/polvo/menu_spec.rb +++ b/spec/polvo/menu_spec.rb @@ -4,19 +4,19 @@ subject { Polvo::Menu.new ["spec/fixtures/rootdir1/", "spec/fixtures/rootdir2"] } describe "#render" do - it "should calculate menu items and have default values" do + it "should generate menu items and call show_menu" do subject.should_receive(:generate_menu_items).with(".").and_return(:the_items_representation) subject.should_receive(:show_menu).with(:the_items_representation,{}) subject.render end - it "should calculate menu items and use the given options" do + it "should pass to show_menu fake options given" do subject.should_receive(:generate_menu_items).with("dir1").and_return(:the_items_representation) subject.should_receive(:show_menu).with(:the_items_representation,{:fake_option_key => 'fake_option_value'}) subject.render 'dir1', :fake_option_key => 'fake_option_value' end - it "should calculate menu items and use the given options" do + it "should return exit value from show_menu" do subject.should_receive(:generate_menu_items).with(".").and_return(:the_items_representation) subject.should_receive(:show_menu).with(:the_items_representation,{}).and_return(:return_value) return_value = subject.render @@ -26,21 +26,21 @@ end describe "#generate_menu_items" do - - it "should generate a simple menu" do +# ordered alphabetically + it "should generate a menu with local path == '.'" do menu = Polvo::Menu.new ["spec/fixtures/rootdir3/"] items_representation = menu.generate_menu_items(".") items_representation.should == fixtures_folder("rootdir3").sort {|a,b| [(a[:priority] || 0), a[:title] ] <=> [(b[:priority] || 0), b[:title]] } end - it "should generate a simple menu" do + it "should generate a simple menu with local path != '.'" do menu = Polvo::Menu.new ["spec/fixtures/rootdir1/"] items_representation = menu.generate_menu_items("dir1") items_representation.should == fixtures_folder("rootdir1/dir1") end - it "should merge with priority to second folder" do + it "should merge with priority to last folder" do menu = Polvo::Menu.new ["spec/fixtures/rootdir1/","spec/fixtures/rootdir2"] items_representation = menu.generate_menu_items(".") items_representation.should == [ @@ -52,17 +52,34 @@ ].sort {|a,b| [(a[:priority] || 0), a[:title] ] <=> [(b[:priority] || 0), b[:title]] } end - # it "should merge with priority to second folder" do - # menu = Polvo::Menu.new ["spec/fixtures/rootdir2/","spec/fixtures/rootdir1"] - # items_representation = menu.generate_menu_items(".") - # items_representation.sort {|a,b| full_path(a) <=> full_path(b) }.should == [ - # (fixtures_folder "rootdir1/dir1", :single => true) , - # (fixtures_folder "rootdir1/dir2", :single => true) , - # (fixtures_folder "rootdir1/dir3", :single => true) , - # (fixtures_folder "rootdir2/dir4", :single => true) , - # (fixtures_folder "rootdir2/dir5", :single => true) , - # ].sort {|a,b| full_path(a) <=> full_path(b) } - # end + it "should merge with priority to last folder" do + menu = Polvo::Menu.new ["spec/fixtures/rootdir2/","spec/fixtures/rootdir1"] + items_representation = menu.generate_menu_items(".") + items_representation.should == [ + (fixtures_folder "rootdir1/dir1", :single => true) , + (fixtures_folder "rootdir1/dir2", :single => true) , + (fixtures_folder "rootdir1/dir3", :single => true) , + (fixtures_folder "rootdir2/dir4", :single => true) , + (fixtures_folder "rootdir2/dir5", :single => true) , + ].sort {|a,b| [(a[:priority] || 0), a[:title] ] <=> [(b[:priority] || 0), b[:title]] } + end + +# Next tests: +# +# it "should use folder name as title if folder does not contain info.menu" +# it "should use info.menu to generate title if folder contains info.menu" +# it "should show only Ubuntu/all scripts if OS is Ubuntu" +# it "should show only MacOS/all scripts if OS is MacOS" +# it "should sort by priority then alphabetically" +# +# it "should have :path pointing to exec.bash if folder contains exec.bash" +# it "should not show folder if folder contains info.menu with 'hidden' setting" +# it "should have :type == 'dir' if option is directory" +# it "should have :type == 'script' if option is script" +# it "should have :type == 'script' if option is folder with exec.bash" +# it "should ignore dotfiles and info.menu" +# it "should warn when directory is empty" + end end