conditional backlog joyride step if the user has perms

stable
Juanfran 2015-10-19 08:16:06 +02:00 committed by Alejandro Alonso
parent ef8053ddd6
commit 50db211c86
4 changed files with 191 additions and 118 deletions

View File

@ -1,5 +1,14 @@
joyRides = { class JoyRideService extends taiga.Service
dashboard: () -> @.$inject = [
'$translate',
'tgCheckPermissionsService'
]
constructor: (@translate, @checkPermissionsService) ->
getConfig: () ->
return {
dashboard: () =>
return [ return [
{ {
element: '.project-list > section:not(.ng-hide)', element: '.project-list > section:not(.ng-hide)',
@ -41,8 +50,8 @@ joyRides = {
} }
] ]
backlog: () -> backlog: () =>
return [ steps = [
{ {
element: '.summary', element: '.summary',
position: 'bottom', position: 'bottom',
@ -69,18 +78,22 @@ joyRides = {
title: @translate.instant('JOYRIDE.BACKLOG.STEP3.TITLE') title: @translate.instant('JOYRIDE.BACKLOG.STEP3.TITLE')
text: @translate.instant('JOYRIDE.BACKLOG.STEP3.TEXT') text: @translate.instant('JOYRIDE.BACKLOG.STEP3.TEXT')
} }
}, }
{ ]
if @checkPermissionsService.check('add_us')
steps.push({
element: '.new-us', element: '.new-us',
position: 'rigth', position: 'rigth',
joyride: { joyride: {
title: @translate.instant('JOYRIDE.BACKLOG.STEP4.TITLE') title: @translate.instant('JOYRIDE.BACKLOG.STEP4.TITLE')
text: @translate.instant('JOYRIDE.BACKLOG.STEP4.TEXT') text: @translate.instant('JOYRIDE.BACKLOG.STEP4.TEXT')
} }
} })
]
kanban: () -> return steps
kanban: () =>
return [ return [
{ {
element: '.kanban-table-inner', element: '.kanban-table-inner',
@ -112,15 +125,8 @@ joyRides = {
] ]
} }
class JoyRideService extends taiga.Service
@.$inject = [
'$translate'
]
constructor: (@translate) ->
get: (name) -> get: (name) ->
joyRides = @.getConfig()
joyRide = joyRides[name].call(this) joyRide = joyRides[name].call(this)
return _.map joyRide, (item) -> return _.map joyRide, (item) ->

View File

@ -9,6 +9,15 @@ describe "tgJoyRideService", ->
provide.value "$translate", mocks.translate provide.value "$translate", mocks.translate
_mockCheckPermissionsService = () ->
mocks.checkPermissionsService = {
check: sinon.stub()
}
mocks.checkPermissionsService.check.returns(true)
provide.value "tgCheckPermissionsService", mocks.checkPermissionsService
_inject = (callback) -> _inject = (callback) ->
inject (_tgJoyRideService_) -> inject (_tgJoyRideService_) ->
joyRideService = _tgJoyRideService_ joyRideService = _tgJoyRideService_
@ -18,6 +27,7 @@ describe "tgJoyRideService", ->
module ($provide) -> module ($provide) ->
provide = $provide provide = $provide
_mockTranslate() _mockTranslate()
_mockCheckPermissionsService()
return null return null
_setup = -> _setup = ->
@ -30,7 +40,7 @@ describe "tgJoyRideService", ->
it "get joyride by category", () -> it "get joyride by category", () ->
example = { example = {
element: '.home-project-list', element: '.project-list > section:not(.ng-hide)',
position: 'left', position: 'left',
joyride: { joyride: {
title: 'test', title: 'test',

View File

@ -0,0 +1,13 @@
taiga = @.taiga
class ChekcPermissionsService
@.$inject = [
"tgProjectService"
]
constructor: (@projectService) ->
check: (permission) ->
return @projectService.project.get('my_permissions').indexOf(permission) != -1
angular.module("taigaCommon").service("tgCheckPermissionsService", ChekcPermissionsService)

View File

@ -0,0 +1,44 @@
describe "tgCheckPermissionsService", ->
checkPermissionsService = provide = null
mocks = {}
_mockProjectService = () ->
mocks.projectService = {
project: sinon.stub()
}
provide.value "tgProjectService", mocks.projectService
_inject = () ->
inject (_tgCheckPermissionsService_) ->
checkPermissionsService = _tgCheckPermissionsService_
_mocks = () ->
module ($provide) ->
provide = $provide
_mockProjectService()
return null
beforeEach ->
module "taigaCommon"
_mocks()
_inject()
it "the user has perms", () ->
mocks.projectService.project = Immutable.fromJS({
my_permissions: ['add_us']
})
perm = checkPermissionsService.check('add_us')
expect(perm).to.be.true
it "the user hasn't perms", () ->
mocks.projectService.project = Immutable.fromJS({
my_permissions: []
})
perm = checkPermissionsService.check('add_us')
expect(perm).to.be.false