Fixed version tag modes bug #10689

This commit is contained in:
Henry Tang 2009-08-07 18:02:25 +00:00
parent 7caa26628f
commit fe99aa7665
3 changed files with 114 additions and 2 deletions

View file

@ -32,6 +32,7 @@
- fixed #10723: RSS Feed Error in Gallery
- fixed Survey response startDate stored twice (Patrick Donelan, SDH Consulting)
- fixed Survey ExpireIncompleteSurveyResponses Workflow Activity not enabled (Patrick Donelan, SDH Consulting)
- fixed #10689: Version Tag Modes (Henry Tang, Long Term Results B.V.)
7.7.16
- fixed #10590: Session::DateTime->secondsToInterval doesn't allow 7 weeks

View file

@ -79,9 +79,13 @@ sub autoCommitWorkingIfEnabled {
# auto commit assets
# save and commit button and site wide auto commit work the same
# Do not auto commit if tag is system wide tag or tag belongs to someone else
if (
$options->{override}
|| $class->getVersionTagMode($session) eq q{autoCommit}
|| ( $class->getVersionTagMode($session) eq q{autoCommit}
&& ! $versionTag->get(q{isSiteWide})
&& $versionTag->get(q{createdBy}) eq $session->user()->userId()
)
) {
if ($session->setting->get("skipCommitComments") || !$options->{allowComments}) {
$versionTag->requestCommit;
@ -94,6 +98,7 @@ sub autoCommitWorkingIfEnabled {
return 'redirect';
}
}
return undef;
}
#-------------------------------------------------------------------

View file

@ -14,7 +14,7 @@ use lib "$FindBin::Bin/lib";
use WebGUI::Test;
use WebGUI::Session;
use WebGUI::VersionTag;
use Test::More tests => 62; # increment this value for each test you create
use Test::More tests => 68; # increment this value for each test you create
my $session = WebGUI::Test->session;
@ -266,6 +266,112 @@ $userTag->rollback();
$siteWideTag->rollback();
$adminUserTag->rollback();
## Additional VersionTagMode to make sure that auto commit happens only when user is tag creator and tag is not site wide.
## See bug #10689 (Version Tag Modes)
{
my $test_prefix = q{versionTagMode B10689>};
setUserVersionTagMode($user, q{singlePerUser});
my $tag = WebGUI::VersionTag->create($session, {});
$tag->setWorking;
my $asset = WebGUI::Asset->getRoot($session)->addChild({ className => 'WebGUI::Asset::Snippet' });
is($tag->getAssetCount, 1, qq{$test_prefix [singlePerUser] tag with 1 asset});
# create admin session
my $admin_session = WebGUI::Session->open($WebGUI::Test::WEBGUI_ROOT, $WebGUI::Test::CONFIG_FILE);
$admin_session->user({'userId' => 3});
setUserVersionTagMode($admin_session->user(), q{autoCommit});
# Take over version tag
my $adminUserTag = WebGUI::VersionTag->new($admin_session, $tag->getId());
$adminUserTag->setWorking();
my $adminCommitStatus = WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, {
override => 0,
allowComments => 0,
returnUrl => q{},
});
is(
$adminCommitStatus,
undef,
qq{$test_prefix [singlePerUser] Admin cannot auto commit working tag of other user},
);
$adminUserTag->rollback();
# Change user mode to autoCommit
setUserVersionTagMode($user, q{autoCommit});
my $userCommitStatus = WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, {
override => 0,
allowComments => 0,
returnUrl => q{},
});
is(
$userCommitStatus,
q{commit},
qq{$test_prefix [singlePerUser] User can auto commit},
);
$tag->rollback();
# Now test site wide tag
setUserVersionTagMode($user, q{siteWide});
$tag = WebGUI::VersionTag->create($session, {});
$tag->setWorking;
$asset = WebGUI::Asset->getRoot($session)->addChild({ className => 'WebGUI::Asset::Snippet' });
is($tag->getAssetCount, 1, qq{$test_prefix [siteWide] tag with 1 asset});
# create admin session
$admin_session = WebGUI::Session->open($WebGUI::Test::WEBGUI_ROOT, $WebGUI::Test::CONFIG_FILE);
$admin_session->user({'userId' => 3});
setUserVersionTagMode($admin_session->user(), q{autoCommit});
# Take over version tag
$adminUserTag = WebGUI::VersionTag->new($admin_session, $tag->getId());
$adminUserTag->setWorking();
$adminCommitStatus = WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, {
override => 0,
allowComments => 0,
returnUrl => q{},
});
is(
$adminCommitStatus,
undef,
qq{$test_prefix [siteWide] Admin cannot auto commit sitewide working tag},
);
$adminUserTag->rollback();
# Change user mode to autoCommit
setUserVersionTagMode($user, q{autoCommit});
$userCommitStatus = WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, {
override => 0,
allowComments => 0,
returnUrl => q{},
});
is(
$userCommitStatus,
q{commit},
qq{$test_prefix [siteWide] User CANNOT auto commit sitewide working tag},
);
$tag->rollback();
}
#reset (just in case other tests depends on this setting)
setSiteVersionTagMode($session, q{multiPerUser});
setUserVersionTagMode($user, q{inherited});