From 8fa164200a5991d91526c449fe27b213dcf6bf03 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 12 Dec 2008 03:24:09 +0000 Subject: [PATCH] Add more AdminBar tests. Fix adminbar macro to handle bad asset classes without dying. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Macro/AdminBar.pm | 1 + t/Macro/AdminBar.t | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 120d0cfe3..7eed15a2a 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -5,6 +5,7 @@ - fixed #9150: Edit Data Table - Cannot add column (David Delikat) - fixed #9261: Cart Payment Screen not templated - fixed #4124: Site starter uses floats in ways that cause problems + - fixed #9274: AdminBar errors and fails when an asset class cannot be loaded 7.6.6 - fixed #8792: Image Preview gives ERROR in Collateral Manager diff --git a/lib/WebGUI/Macro/AdminBar.pm b/lib/WebGUI/Macro/AdminBar.pm index 49fb7ca4d..18d4598e6 100644 --- a/lib/WebGUI/Macro/AdminBar.pm +++ b/lib/WebGUI/Macro/AdminBar.pm @@ -120,6 +120,7 @@ sub process { my %assetList = %{$config->get('assets')}; foreach my $assetClass (keys %assetList) { my $dummy = WebGUI::Asset->newByPropertyHashRef($session,{dummy=>1, className=>$assetClass}); + next unless defined $dummy; next if $dummy->getUiLevel($assetList{$assetClass}{uiLevel}) > $userUiLevel; next unless ($dummy->canAdd($session)); next unless exists $categories{$assetList{$assetClass}{category}}; diff --git a/t/Macro/AdminBar.t b/t/Macro/AdminBar.t index ee183ee85..6fb2ae3b5 100644 --- a/t/Macro/AdminBar.t +++ b/t/Macro/AdminBar.t @@ -20,7 +20,7 @@ use Test::More; # increment this value for each test you create my $session = WebGUI::Test->session; -my $numTests = 0; +my $numTests = 2; $numTests += 1; #For the use_ok @@ -29,9 +29,22 @@ plan tests => $numTests; my $macro = 'WebGUI::Macro::AdminBar'; my $loaded = use_ok($macro); +my $originalAssets = $session->config->get('assets'); + SKIP: { skip "Unable to load $macro", $numTests-1 unless $loaded; +my $output; +$output = WebGUI::Macro::AdminBar::process($session); +is($output, undef, 'AdminBar returns undef unless admin is on'); +$session->var->switchAdminOn; +$output = WebGUI::Macro::AdminBar::process($session); +ok($output, 'AdminBar returns something when admin is on'); + + } +END: { + $session->config->set('assets', $originalAssets); +}