delete member warning if they're owner

stable
Juanfran 2016-03-15 10:35:15 +01:00 committed by Alejandro Alonso
parent dc008d7757
commit 5b2547b859
5 changed files with 71 additions and 10 deletions

View File

@ -366,7 +366,7 @@ module.directive("tgMembershipsRowRoleSelector", ["$log", "$tgRepo", "$tgConfirm
## Member Actions Directive ## Member Actions Directive
############################################################################# #############################################################################
MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $translate) -> MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $translate, currentUserService, lightboxFactory) ->
activedTemplate = """ activedTemplate = """
<div class="active" <div class="active"
translate="ADMIN.MEMBERSHIP.STATUS_ACTIVE"> translate="ADMIN.MEMBERSHIP.STATUS_ACTIVE">
@ -421,9 +421,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
$rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError) $rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError)
$el.on "click", ".delete", (event) -> leaveConfirm = () ->
event.preventDefault()
title = $translate.instant("ADMIN.MEMBERSHIP.DELETE_MEMBER") title = $translate.instant("ADMIN.MEMBERSHIP.DELETE_MEMBER")
defaultMsg = $translate.instant("ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE", {email: member.email}) defaultMsg = $translate.instant("ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE", {email: member.email})
message = if member.user then member.full_name else defaultMsg message = if member.user then member.full_name else defaultMsg
@ -448,6 +446,22 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
$repo.remove(member).then(onSuccess, onError) $repo.remove(member).then(onSuccess, onError)
$el.on "click", ".delete", (event) ->
event.preventDefault()
if $scope.project.owner.id == member.user
currentUser = currentUserService.getUser()
isCurrentUser = currentUser.get('id') == member.user
lightboxFactory.create("tg-lightbox-leave-project-warning", {
class: "lightbox lightbox-leave-project-warning"
}, {
currentUser: isCurrentUser,
project: $scope.project
})
else
leaveConfirm()
$scope.$on "$destroy", -> $scope.$on "$destroy", ->
$el.off() $el.off()
@ -455,4 +469,4 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
module.directive("tgMembershipsRowActions", ["$log", "$tgRepo", "$tgResources", "$tgConfirm", "$compile", module.directive("tgMembershipsRowActions", ["$log", "$tgRepo", "$tgResources", "$tgConfirm", "$compile",
"$translate", MembershipsRowActionsDirective]) "$translate", "tgCurrentUserService", "tgLightboxFactory", MembershipsRowActionsDirective])

View File

@ -225,7 +225,7 @@ module.directive("tgTeamMembers", TeamMembersDirective)
## Leave project Directive ## Leave project Directive
############################################################################# #############################################################################
LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate, lightboxFactory, currentUserService) -> LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate, lightboxFactory) ->
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
leaveConfirm = () -> leaveConfirm = () ->
leave_project_text = $translate.instant("TEAM.ACTION_LEAVE_PROJECT") leave_project_text = $translate.instant("TEAM.ACTION_LEAVE_PROJECT")
@ -245,8 +245,6 @@ LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate,
$scope.leave = () -> $scope.leave = () ->
if $scope.project.owner.id == $scope.user.id if $scope.project.owner.id == $scope.user.id
currentUser = currentUserService.getUser()
lightboxFactory.create("tg-lightbox-leave-project-warning", { lightboxFactory.create("tg-lightbox-leave-project-warning", {
class: "lightbox lightbox-leave-project-warning" class: "lightbox lightbox-leave-project-warning"
}, { }, {
@ -265,7 +263,7 @@ LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate,
link: link link: link
} }
module.directive("tgLeaveProject", ["$tgRepo", "$tgConfirm", "$tgLocation", "$tgResources", "$tgNavUrls", "$translate", "tgLightboxFactory", "tgCurrentUserService", module.directive("tgLeaveProject", ["$tgRepo", "$tgConfirm", "$tgLocation", "$tgResources", "$tgNavUrls", "$translate", "tgLightboxFactory",
LeaveProjectDirective]) LeaveProjectDirective])

View File

@ -35,10 +35,30 @@ helper.getNewMemberLightbox = function() {
return obj; return obj;
}; };
helper.leavingProjectWarningLb = function() {
return $('div[tg-lightbox-leave-project-warning]');
};
helper.isLeaveProjectWarningOpen = function() {
return helper.leavingProjectWarningLb().isPresent();
};
helper.getMembers = function() { helper.getMembers = function() {
return $$('.admin-membership-table .row'); return $$('.admin-membership-table .row');
}; };
helper.getOwner = function() {
return helper.getMembers().filter(async (member) => {
return !!await member.$$('.icon-badge').count();
}).first();
};
helper.excludeOwner = function(members) {
return members.filter(async (member) => {
return !await member.$$('.icon-badge').count();
});
};
helper.isActive = function(elm) { helper.isActive = function(elm) {
return utils.common.hasClass(elm, 'active'); return utils.common.hasClass(elm, 'active');
}; };

View File

@ -78,7 +78,7 @@ describe('admin - members', function() {
it('delete member', async function() { it('delete member', async function() {
let initMembersCount = await adminMembershipsHelper.getMembers().count(); let initMembersCount = await adminMembershipsHelper.getMembers().count();
let member = adminMembershipsHelper.getMembers().last(); let member = adminMembershipsHelper.excludeOwner(adminMembershipsHelper.getMembers()).last();
adminMembershipsHelper.delete(member); adminMembershipsHelper.delete(member);
@ -89,6 +89,25 @@ describe('admin - members', function() {
let membersCount = await adminMembershipsHelper.getMembers().count(); let membersCount = await adminMembershipsHelper.getMembers().count();
expect(membersCount).to.be.equal(initMembersCount - 1); expect(membersCount).to.be.equal(initMembersCount - 1);
await utils.notifications.success.close();
});
it('trying to delete owner', async function() {
let member = await adminMembershipsHelper.getOwner();
adminMembershipsHelper.delete(member);
utils.common.takeScreenshot('memberships', 'delete-owner-lb');
let isLeaveProjectWarningOpen = await adminMembershipsHelper.isLeaveProjectWarningOpen();
expect(isLeaveProjectWarningOpen).to.be.equal(true);
let lb = adminMembershipsHelper.leavingProjectWarningLb();
await utils.lightbox.exit(lb);
await utils.lightbox.close(lb);
}); });
it('change role', async function() { it('change role', async function() {

View File

@ -3,6 +3,16 @@ var common = require('./common');
var lightbox = module.exports; var lightbox = module.exports;
var transition = 300; var transition = 300;
lightbox.exit = function(el) {
var deferred = protractor.promise.defer();
if (typeof el === 'string' || el instanceof String) {
el = $(el);
}
el.$('.icon-close').click();
};
lightbox.open = async function(el) { lightbox.open = async function(el) {
var deferred = protractor.promise.defer(); var deferred = protractor.promise.defer();