fix: add permission fixes

This commit is contained in:
Torkel Ödegaard 2018-09-14 08:25:35 +02:00
parent 776d81189f
commit 331be7d47a
3 changed files with 41 additions and 11 deletions

View File

@ -26,28 +26,34 @@ class AddPermissions extends Component<Props, NewDashboardAclItem> {
return {
userId: 0,
teamId: 0,
role: OrgRole.Viewer,
type: AclTarget.Team,
permission: PermissionLevel.View,
};
}
onTypeChanged = evt => {
this.setState({ type: evt.target.value as AclTarget });
const type = evt.target.value as AclTarget;
switch (type) {
case AclTarget.User:
case AclTarget.Team:
this.setState({ type: type, userId: 0, teamId: 0, role: undefined });
break;
case AclTarget.Editor:
this.setState({ type: type, userId: 0, teamId: 0, role: OrgRole.Editor });
break;
case AclTarget.Viewer:
this.setState({ type: type, userId: 0, teamId: 0, role: OrgRole.Viewer });
break;
}
};
onUserSelected = (user: User) => {
this.setState({
userId: user ? user.id : 0,
teamId: 0,
});
this.setState({ userId: user ? user.id : 0 });
};
onTeamSelected = (team: Team) => {
this.setState({
userId: 0,
teamId: team ? team.id : 0,
});
this.setState({ teamId: team ? team.id : 0 });
};
onPermissionChanged = (permission: OptionWithDescription) => {

View File

@ -0,0 +1,24 @@
import { Action, ActionTypes } from './actions';
import { OrgRole, PermissionLevel, DashboardState } from 'app/types';
import { inititalState, dashboardReducer } from './reducers';
describe('dashboard reducer', () => {
describe('loadDashboardPermissions', () => {
let state: DashboardState;
beforeEach(() => {
const action: Action = {
type: ActionTypes.LoadDashboardPermissions,
payload: [
{ id: 2, dashboardId: 1, role: OrgRole.Viewer, permission: PermissionLevel.View },
{ id: 3, dashboardId: 1, role: OrgRole.Editor, permission: PermissionLevel.Edit },
],
};
state = dashboardReducer(inititalState, action);
});
it('should add permissions to state', async () => {
expect(state.permissions.length).toBe(2);
});
});
});

View File

@ -50,7 +50,7 @@ export interface DashboardPermissionInfo {
export interface NewDashboardAclItem {
teamId: number;
userId: number;
role: OrgRole;
role?: OrgRole;
permission: PermissionLevel;
type: AclTarget;
}