Fixed version tag modes bug #10689
This commit is contained in:
parent
7caa26628f
commit
fe99aa7665
3 changed files with 114 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
108
t/VersionTag.t
108
t/VersionTag.t
|
|
@ -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});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue