From 577b80432520d00b57c5e101f4e0a1e8962e9d1b Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Sat, 20 Mar 2010 13:42:56 -0500 Subject: [PATCH] fix package import and upgrade tests, add sql upgrade tests --- lib/WebGUI/AssetPackage.pm | 8 ++++ lib/WebGUI/Upgrade/File/wgpkg.pm | 14 +++--- t/Upgrade.t | 40 ++++++++++++------ t/supporting_collateral/Upgrade/select.sql | 1 + .../Upgrade/test-template.wgpkg | Bin 721 -> 727 bytes 5 files changed, 44 insertions(+), 19 deletions(-) create mode 100644 t/supporting_collateral/Upgrade/select.sql diff --git a/lib/WebGUI/AssetPackage.pm b/lib/WebGUI/AssetPackage.pm index ab068d7f6..607eb1f00 100644 --- a/lib/WebGUI/AssetPackage.pm +++ b/lib/WebGUI/AssetPackage.pm @@ -161,6 +161,7 @@ sub importAssetData { WebGUI::Asset->loadModule( $class ); my %properties = %{ $data->{properties} }; + delete $properties{tagId}; if ($options->{inheritPermissions}) { delete $properties{ownerUserId}; delete $properties{groupIdView}; @@ -173,6 +174,13 @@ sub importAssetData { $properties{isDefault} = 1; } + if ($options->{clearPackageFlag}) { + $properties{isPackage} = 0; + } + if ($options->{setDefaultTemplate}) { + $properties{isDefault} = 1; + } + my $asset = eval { $class->new($session, $id, $version); }; if (! Exception::Class->caught()) { # update an existing revision diff --git a/lib/WebGUI/Upgrade/File/wgpkg.pm b/lib/WebGUI/Upgrade/File/wgpkg.pm index 07a22df5a..9eaf0c884 100644 --- a/lib/WebGUI/Upgrade/File/wgpkg.pm +++ b/lib/WebGUI/Upgrade/File/wgpkg.pm @@ -8,6 +8,7 @@ use WebGUI::Session; use WebGUI::Storage; use WebGUI::VersionTag; use File::Spec; +use Try::Tiny; sub run { my $class = shift; @@ -16,15 +17,13 @@ sub run { my $session = WebGUI::Session->open($configFile); $session->user({userId => 3}); + my $versionTag = WebGUI::VersionTag->getWorking($session); (undef, undef, my $shortname) = File::Spec->splitpath($file); $shortname =~ s/\.[^.]*$//; - - my $versionTag = WebGUI::VersionTag->getWorking($session); $versionTag->set({name => "Upgrade to $version - $shortname"}); my $package = $class->import_package($session, $file); -warn $versionTag->getId; $versionTag->commit; $session->var->end; $session->close; @@ -41,8 +40,13 @@ sub import_package { $storage->addFileFromFilesystem( $file ); # Import the package into the import node - my $package = eval { - WebGUI::Asset->getImportNode($session)->importPackage( $storage ); + my $package = try { + my $node = WebGUI::Asset->getImportNode($session); + $node->importPackage( $storage, { + overwriteLatest => 1, + clearPackageFlag => 1, + setDefaultTemplate => 1, + } ); }; $storage->delete; diff --git a/t/Upgrade.t b/t/Upgrade.t index 4a0770163..194f95b2b 100644 --- a/t/Upgrade.t +++ b/t/Upgrade.t @@ -59,12 +59,10 @@ is_deeply } $upgrade->set_true('runUpgradeFile'); -my $stdout; -my $stderr; - -my $res; -capture { $res = $upgrade->upgradeSites }; -ok $res, 'upgradeSites runs'; +capture { + my $res = $upgrade->upgradeSites; + ok $res, 'upgradeSites runs'; +}; $upgrade->called_pos_ok(1, 'getCurrentVersion'); $upgrade->called_pos_ok(2, 'runUpgradeFile'); @@ -80,13 +78,17 @@ $upgrade->mock(testUpgrade => sub { $self->runUpgradeFile($configFile, '8.3.0', collateral('Upgrade', $file), @_); }); -$stdout = capture { $upgrade->testUpgrade('output.pl') }; -ok $stdout =~ 'Simple Output', 'report command functions correctly'; -ok $stdout =~ 'Done', 'done command functions correctly'; +{ + my $stdout = capture { $upgrade->testUpgrade('output.pl') }; + ok $stdout =~ 'Simple Output', 'report command functions correctly'; + ok $stdout =~ 'Done', 'done command functions correctly'; +} -$stdout = capture { $upgrade->testUpgrade('output.pl', 1) }; -ok $stdout !~ 'Simple Output', 'quiet flag silences report command'; -ok $stdout !~ 'Done', 'quiet flag silences done command'; +{ + my $stdout = capture { $upgrade->testUpgrade('output.pl', 1) }; + ok $stdout !~ 'Simple Output', 'quiet flag silences report command'; + ok $stdout !~ 'Done', 'quiet flag silences done command'; +} ok !try { $upgrade->testUpgrade('die.pl'); 1 }, 'Error on failing upgrade'; ok !try { $upgrade->testUpgrade('strict-failure.pl'); 1 }, 'strict enabled in upgrades'; @@ -146,10 +148,20 @@ END_PM my $package = $upgrade->testUpgrade('test-template.wgpkg'); isa_ok $package, 'WebGUI::Asset::Template'; my $vtId = $package->get('tagId'); - warn $vtId; my $vt = WebGUI::VersionTag->new($session, $vtId); addToCleanup($vt); - is $vt->get('name'), 'Upgrade to 8.3.0 - test-snippet', 'package import names version tag correctly'; + is $vt->get('name'), 'Upgrade to 8.3.0 - test-template', 'package import names version tag correctly'; +} + +{ + my $stdout = capture { + $upgrade->testUpgrade('select.sql'); + }; + my @lines = split /[\r\n]+/, $stdout; + my $dateApplied = $lines[1]; + + my $dbdateApplied = $dbh->selectrow_array('SELECT dateApplied FROM webguiVersion ORDER BY dateApplied DESC LIMIT 1'); + is $dateApplied, $dbdateApplied, 'SQL script run against database properly'; } done_testing; diff --git a/t/supporting_collateral/Upgrade/select.sql b/t/supporting_collateral/Upgrade/select.sql new file mode 100644 index 000000000..0cbaddaed --- /dev/null +++ b/t/supporting_collateral/Upgrade/select.sql @@ -0,0 +1 @@ +SELECT dateApplied FROM webguiVersion ORDER BY dateApplied DESC LIMIT 1 diff --git a/t/supporting_collateral/Upgrade/test-template.wgpkg b/t/supporting_collateral/Upgrade/test-template.wgpkg index 4e2f8a4428b3bd6ed6083949420b0b463e517f2a..95350bc5cfc2e371f9f46512e7eba749cd467eca 100644 GIT binary patch literal 727 zcmV;|0x10-iwFR76QxT41MQVvZ`v>vhI`##5#_pDlN5;HuAc*~?GUByq;;B1VuIJi z_H3t=P5tk4oCFME^rq7^={y$%e2$Op*Y63Qr}4ezXD59BT{61&mK0@MEvI;fowj*; zLHXN!4Rz4>kJ^6V`|Vc8@%)xf+;hA)-Nhfsr9wh)C3&Qb@5s|>)9H?Qc@}5+{7?9` z?>LUDaK=-l@HeCsie?$6O1e(Z`SSI^#HC^aCDq$W==rVdF~oc~Z^sovF+2di8n`y`GrEeqS@L%|eN3ywDhNCeCIAU=J?0&{^3N7Dt)~V;(=N#&>0p)-HP-=uxyBg&S+>|+|cO^(PZoO5{fH_xL)I(vdW9J z59Bq<%FKH_`EWbv^^OZgd%bbJ<2Bb@v6xH=uJjH%UEd4+R@XWxQE6Fktd(_|RVtP4 z2reBI+S(S{p-EN1Qe8e0e$A9#Izoytx~Ye5l6?Hy%7tjTagd9+ZkZ?B*2YISP1Y4A>_E(I*?7!^)>;D)400000000000000000000000000090jzX1dR JtYrWw008BfZDard literal 721 zcmV;?0xta@iwFSw38hN_1MOAcPunmM&NF{SlxGG>`Xfr-V3bh_P&HDRG^WW-OlnAM z&vpo9;(wpxq>Y<&AWf8Q68F%wzPs-F8%{9SM88s?j@xUKo`y4;pn@rnBL*c-e7Go2t)8{Jbfkcb(E}w+dJj|%&eL?|mQxT4-=g^}MSKq9 zCKtov3gMU(D!^_We1Qq&s0#-l1Oq1!#34xd1Vncdt{p=P4B3=JHjdlPuBCSp0q0QE zNoS8kN(I5A>Fs@Z;Gf5nc!Y`uDQBsQV}yu(l$H127m$k&OUj#2#7|HhL#*N*{d~fR zAYwsb`~C?dIUUEN7>O#&ZG5W&rDOTSj0hHTy4UO)YZdSuG9;!fJ!T}E045_kRF?z# zI0rb{I9-HcEfA~wN@?OEDFc2EvMTZl&OS}YL2ytK8U$g7l2SBhBt|!=nxDMj(06Rl z>HFG6kw`1NP!el)QEHYh5v&B{>D-pwfmscpvCi)hJtsnzj(|V}xA~Ael7}xWk zyV>rJ%C&{Y5nE6(S!qzxT`ah)(MC|*Y}yK` zF7?LSq%ZZNe2Gx1R