add function for getting an error if one permission has delete error state

This commit is contained in:
Maren Süwer
2018-09-07 11:34:14 +02:00
parent 46132585e8
commit 7c0e8ef90b
3 changed files with 54 additions and 3 deletions

View File

@@ -11,7 +11,8 @@ import {
createPermission,
isCreatePermissionPending,
getCreatePermissionFailure,
createPermissionReset
createPermissionReset,
getDeletePermissionsFailure
} from "../modules/permissions";
import Loading from "../../components/Loading";
import ErrorPage from "../../components/ErrorPage";
@@ -143,7 +144,7 @@ const mapStateToProps = (state, ownProps) => {
const repoName = ownProps.repoName;
const error =
getFetchPermissionsFailure(state, namespace, repoName) ||
getCreatePermissionFailure(state, namespace, repoName);
getCreatePermissionFailure(state, namespace, repoName); //|| getDeletePermissionsFailure(state, namespace, repoName);
const loading = isFetchPermissionsPending(state, namespace, repoName);
const permissions = getPermissionsOfRepo(state, namespace, repoName);
const loadingCreatePermission = isCreatePermissionPending(

View File

@@ -558,3 +558,32 @@ export function getDeletePermissionFailure(
namespace + "/" + repoName + "/" + permissionname
);
}
export function getDeletePermissionsFailure(
state: Object,
namespace: string,
repoName: string
) {
const permissions =
state.permissions && state.permissions[namespace + "/" + repoName]
? state.permissions[namespace + "/" + repoName].entries
: null;
if (permissions == null) return undefined;
for (let i = 0; i < permissions.length; i++) {
if (
getDeletePermissionFailure(
state,
namespace,
repoName,
permissions[i].name
)
) {
return getFailure(
state,
DELETE_PERMISSION,
namespace + "/" + repoName + "/" + permissions[i].name
);
}
}
return null;
}

View File

@@ -36,7 +36,8 @@ import reducer, {
CREATE_PERMISSION,
createPermissionSuccess,
getCreatePermissionFailure,
isCreatePermissionPending
isCreatePermissionPending,
getDeletePermissionsFailure
} from "./permissions";
import type { Permission, PermissionCollection } from "../types/Permissions";
@@ -644,6 +645,26 @@ describe("permissions selectors", () => {
).toBe(undefined);
});
it("should return error when one of the delete permissions did fail", () => {
const state = {
permissions: {
"hitchhiker/puzzle42": { entries: hitchhiker_puzzle42Permissions }
},
failure: {
[DELETE_PERMISSION + "/hitchhiker/puzzle42/user_eins"]: error
}
};
expect(
getDeletePermissionsFailure(state, "hitchhiker", "puzzle42")
).toEqual(error);
});
it("should return undefined when no delete permissions did not fail", () => {
expect(getDeletePermissionsFailure({}, "hitchhiker", "puzzle42")).toBe(
undefined
);
});
it("should return true, when create permission is pending", () => {
const state = {
pending: {