mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
refactoring
This commit is contained in:
@@ -4,7 +4,7 @@ import { connect } from "react-redux";
|
|||||||
import UserForm from "./UserForm";
|
import UserForm from "./UserForm";
|
||||||
import type { User } from "../types/User";
|
import type { User } from "../types/User";
|
||||||
|
|
||||||
import { addUser } from "../modules/users";
|
import { createUser } from "../modules/users";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
addUser: User => void,
|
addUser: User => void,
|
||||||
@@ -29,7 +29,7 @@ class AddUser extends React.Component<Props> {
|
|||||||
const mapDispatchToProps = dispatch => {
|
const mapDispatchToProps = dispatch => {
|
||||||
return {
|
return {
|
||||||
addUser: (user: User) => {
|
addUser: (user: User) => {
|
||||||
dispatch(addUser(user));
|
dispatch(createUser(user));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import type { User } from "../types/User";
|
|||||||
import type { UserEntry } from "../types/UserEntry";
|
import type { UserEntry } from "../types/UserEntry";
|
||||||
import Loading from "../../components/Loading";
|
import Loading from "../../components/Loading";
|
||||||
|
|
||||||
import { updateUser, fetchUser } from "../modules/users";
|
import { modifyUser, fetchUser } from "../modules/users";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
name: string,
|
name: string,
|
||||||
@@ -48,7 +48,7 @@ const mapDispatchToProps = dispatch => {
|
|||||||
dispatch(fetchUser(name));
|
dispatch(fetchUser(name));
|
||||||
},
|
},
|
||||||
updateUser: (user: User) => {
|
updateUser: (user: User) => {
|
||||||
dispatch(updateUser(user));
|
dispatch(modifyUser(user));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import EditButton from "../../components/EditButton";
|
import EditButton from "../../components/EditButton";
|
||||||
import type { UserEntry } from "../types/UserEntry";
|
import type { UserEntry } from "../types/UserEntry";
|
||||||
import { Link } from "react-router-dom";
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
entry: UserEntry
|
entry: UserEntry
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import type { User } from "../types/User";
|
|||||||
import InputField from "../../components/InputField";
|
import InputField from "../../components/InputField";
|
||||||
import Checkbox from "../../components/Checkbox";
|
import Checkbox from "../../components/Checkbox";
|
||||||
import SubmitButton from "../../components/SubmitButton";
|
import SubmitButton from "../../components/SubmitButton";
|
||||||
import { connect } from "react-redux";
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
submitForm: User => void,
|
submitForm: User => void,
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { connect } from "react-redux";
|
|||||||
|
|
||||||
import { fetchUsers, deleteUser, getUsersFromState } from "../modules/users";
|
import { fetchUsers, deleteUser, getUsersFromState } from "../modules/users";
|
||||||
import Page from "../../components/Page";
|
import Page from "../../components/Page";
|
||||||
import ErrorNotification from "../../components/ErrorNotification";
|
|
||||||
import UserTable from "./UserTable";
|
import UserTable from "./UserTable";
|
||||||
import type { User } from "../types/User";
|
import type { User } from "../types/User";
|
||||||
import AddButton from "../../components/AddButton";
|
import AddButton from "../../components/AddButton";
|
||||||
|
|||||||
@@ -1,56 +1,38 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import { apiClient, NOT_FOUND_ERROR } from "../../apiclient";
|
import { apiClient } from "../../apiclient";
|
||||||
import type { User } from "../types/User";
|
import type { User } from "../types/User";
|
||||||
import type { UserEntry } from "../types/UserEntry";
|
import type { UserEntry } from "../types/UserEntry";
|
||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
|
|
||||||
export const FETCH_USERS = "scm/users/FETCH";
|
export const FETCH_USERS_PENDING = "scm/users/FETCH_USERS_PENDING";
|
||||||
export const FETCH_USERS_SUCCESS = "scm/users/FETCH_SUCCESS";
|
export const FETCH_USERS_SUCCESS = "scm/users/FETCH_USERS_SUCCESS";
|
||||||
export const FETCH_USERS_FAILURE = "scm/users/FETCH_FAILURE";
|
export const FETCH_USERS_FAILURE = "scm/users/FETCH_USERS_FAILURE";
|
||||||
export const FETCH_USERS_NOTFOUND = "scm/users/FETCH_NOTFOUND";
|
|
||||||
|
|
||||||
export const FETCH_USER = "scm/users/FETCH_USER";
|
export const FETCH_USER_PENDING = "scm/users/FETCH_USER_PENDING";
|
||||||
export const FETCH_USER_SUCCESS = "scm/users/FETCH_USER_SUCCESS";
|
export const FETCH_USER_SUCCESS = "scm/users/FETCH_USER_SUCCESS";
|
||||||
export const FETCH_USER_FAILURE = "scm/users/FETCH_USER_FAILURE";
|
export const FETCH_USER_FAILURE = "scm/users/FETCH_USER_FAILURE";
|
||||||
|
|
||||||
export const ADD_USER = "scm/users/ADD";
|
export const CREATE_USER_PENDING = "scm/users/CREATE_USER_PENDING";
|
||||||
export const ADD_USER_SUCCESS = "scm/users/ADD_SUCCESS";
|
export const CREATE_USER_SUCCESS = "scm/users/CREATE_USER_SUCCESS";
|
||||||
export const ADD_USER_FAILURE = "scm/users/ADD_FAILURE";
|
export const CREATE_USER_FAILURE = "scm/users/CREATE_USER_FAILURE";
|
||||||
|
|
||||||
export const EDIT_USER = "scm/users/EDIT";
|
export const MODIFY_USER_PENDING = "scm/users/MODIFY_USER_PENDING";
|
||||||
|
export const MODIFY_USER_SUCCESS = "scm/users/MODIFY_USER_SUCCESS";
|
||||||
export const UPDATE_USER = "scm/users/UPDATE";
|
export const MODIFY_USER_FAILURE = "scm/users/MODIFY_USER_FAILURE";
|
||||||
export const UPDATE_USER_SUCCESS = "scm/users/UPDATE_SUCCESS";
|
|
||||||
export const UPDATE_USER_FAILURE = "scm/users/UPDATE_FAILURE";
|
|
||||||
|
|
||||||
export const DELETE_USER = "scm/users/DELETE";
|
export const DELETE_USER = "scm/users/DELETE";
|
||||||
export const DELETE_USER_SUCCESS = "scm/users/DELETE_SUCCESS";
|
export const DELETE_USER_SUCCESS = "scm/users/DELETE_SUCCESS";
|
||||||
export const DELETE_USER_FAILURE = "scm/users/DELETE_FAILURE";
|
export const DELETE_USER_FAILURE = "scm/users/DELETE_FAILURE";
|
||||||
|
|
||||||
const USERS_URL = "users";
|
const USERS_URL = "users";
|
||||||
const USER_URL = "users/";
|
|
||||||
|
|
||||||
const CONTENT_TYPE_USER = "application/vnd.scmm-user+json;v=2";
|
const CONTENT_TYPE_USER = "application/vnd.scmm-user+json;v=2";
|
||||||
|
|
||||||
export function requestUsers() {
|
//fetch users
|
||||||
return {
|
|
||||||
type: FETCH_USERS
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function failedToFetchUsers(url: string, error: Error) {
|
|
||||||
return {
|
|
||||||
type: FETCH_USERS_FAILURE,
|
|
||||||
payload: {
|
|
||||||
error,
|
|
||||||
url
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function fetchUsers() {
|
export function fetchUsers() {
|
||||||
return function(dispatch: any) {
|
return function(dispatch: any) {
|
||||||
dispatch(requestUsers());
|
dispatch(fetchUsersPending());
|
||||||
return apiClient
|
return apiClient
|
||||||
.get(USERS_URL)
|
.get(USERS_URL)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
@@ -66,11 +48,17 @@ export function fetchUsers() {
|
|||||||
})
|
})
|
||||||
.catch(cause => {
|
.catch(cause => {
|
||||||
const error = new Error(`could not fetch users: ${cause.message}`);
|
const error = new Error(`could not fetch users: ${cause.message}`);
|
||||||
dispatch(failedToFetchUsers(USERS_URL, error));
|
dispatch(fetchUsersFailure(USERS_URL, error));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function fetchUsersPending() {
|
||||||
|
return {
|
||||||
|
type: FETCH_USERS_PENDING
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function fetchUsersSuccess(users: any) {
|
export function fetchUsersSuccess(users: any) {
|
||||||
return {
|
return {
|
||||||
type: FETCH_USERS_SUCCESS,
|
type: FETCH_USERS_SUCCESS,
|
||||||
@@ -78,17 +66,22 @@ export function fetchUsersSuccess(users: any) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function requestUser(name: string) {
|
export function fetchUsersFailure(url: string, error: Error) {
|
||||||
return {
|
return {
|
||||||
type: FETCH_USER,
|
type: FETCH_USERS_FAILURE,
|
||||||
payload: { name }
|
payload: {
|
||||||
|
error,
|
||||||
|
url
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//fetch user
|
||||||
|
//TODO: fetchUsersPending and FetchUsersFailure are the wrong functions here!
|
||||||
export function fetchUser(name: string) {
|
export function fetchUser(name: string) {
|
||||||
const userUrl = USER_URL + name;
|
const userUrl = USERS_URL + "/" + name;
|
||||||
return function(dispatch: any) {
|
return function(dispatch: any) {
|
||||||
dispatch(requestUsers());
|
dispatch(fetchUsersPending());
|
||||||
return apiClient
|
return apiClient
|
||||||
.get(userUrl)
|
.get(userUrl)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
@@ -104,12 +97,19 @@ export function fetchUser(name: string) {
|
|||||||
})
|
})
|
||||||
.catch(cause => {
|
.catch(cause => {
|
||||||
const error = new Error(`could not fetch user: ${cause.message}`);
|
const error = new Error(`could not fetch user: ${cause.message}`);
|
||||||
dispatch(failedToFetchUsers(USERS_URL, error));
|
dispatch(fetchUsersFailure(USERS_URL, error));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function fetchUserSuccess(user: User) {
|
export function fetchUserPending(name: string) {
|
||||||
|
return {
|
||||||
|
type: FETCH_USER_PENDING,
|
||||||
|
payload: { name }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function fetchUserSuccess(user: any) {
|
||||||
return {
|
return {
|
||||||
type: FETCH_USER_SUCCESS,
|
type: FETCH_USER_SUCCESS,
|
||||||
payload: user
|
payload: user
|
||||||
@@ -124,25 +124,20 @@ export function fetchUserFailure(user: User, error: Error) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function requestAddUser(user: User) {
|
//create user
|
||||||
return {
|
|
||||||
type: ADD_USER,
|
|
||||||
user
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function addUser(user: User) {
|
export function createUser(user: User) {
|
||||||
return function(dispatch: Dispatch) {
|
return function(dispatch: Dispatch) {
|
||||||
dispatch(requestAddUser(user));
|
dispatch(createUserPending(user));
|
||||||
return apiClient
|
return apiClient
|
||||||
.postWithContentType(USERS_URL, user, CONTENT_TYPE_USER)
|
.postWithContentType(USERS_URL, user, CONTENT_TYPE_USER)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
dispatch(addUserSuccess());
|
dispatch(createUserSuccess());
|
||||||
dispatch(fetchUsers());
|
dispatch(fetchUsers());
|
||||||
})
|
})
|
||||||
.catch(err =>
|
.catch(err =>
|
||||||
dispatch(
|
dispatch(
|
||||||
addUserFailure(
|
createUserFailure(
|
||||||
user,
|
user,
|
||||||
new Error(`failed to add user ${user.name}: ${err.message}`)
|
new Error(`failed to add user ${user.name}: ${err.message}`)
|
||||||
)
|
)
|
||||||
@@ -151,59 +146,89 @@ export function addUser(user: User) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addUserSuccess() {
|
export function createUserPending(user: User) {
|
||||||
return {
|
return {
|
||||||
type: ADD_USER_SUCCESS
|
type: CREATE_USER_PENDING,
|
||||||
|
user
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addUserFailure(user: User, err: Error) {
|
|
||||||
|
export function createUserSuccess() {
|
||||||
return {
|
return {
|
||||||
type: ADD_USER_FAILURE,
|
type: CREATE_USER_SUCCESS
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createUserFailure(user: User, err: Error) {
|
||||||
|
return {
|
||||||
|
type: CREATE_USER_FAILURE,
|
||||||
payload: err,
|
payload: err,
|
||||||
user
|
user
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function requestUpdateUser(user: User) {
|
//modify user
|
||||||
return {
|
|
||||||
type: UPDATE_USER,
|
|
||||||
user
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function updateUser(user: User) {
|
export function modifyUser(user: User) {
|
||||||
return function(dispatch: Dispatch) {
|
return function(dispatch: Dispatch) {
|
||||||
dispatch(requestUpdateUser(user));
|
dispatch(modifyUserPending(user));
|
||||||
return apiClient
|
return apiClient
|
||||||
.putWithContentType(user._links.update.href, user, CONTENT_TYPE_USER)
|
.putWithContentType(user._links.update.href, user, CONTENT_TYPE_USER)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
dispatch(updateUserSuccess(user));
|
dispatch(modifyUserSuccess(user));
|
||||||
dispatch(fetchUsers());
|
dispatch(fetchUsers());
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
dispatch(updateUserFailure(user, err));
|
dispatch(modifyUserFailure(user, err));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateUserSuccess(user: User) {
|
function modifyUserPending(user: User) {
|
||||||
return {
|
return {
|
||||||
type: UPDATE_USER_SUCCESS,
|
type: MODIFY_USER_PENDING,
|
||||||
user
|
user
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateUserFailure(user: User, error: Error) {
|
function modifyUserSuccess(user: User) {
|
||||||
return {
|
return {
|
||||||
type: UPDATE_USER_FAILURE,
|
type: MODIFY_USER_SUCCESS,
|
||||||
|
user
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function modifyUserFailure(user: User, error: Error) {
|
||||||
|
return {
|
||||||
|
type: MODIFY_USER_FAILURE,
|
||||||
payload: error,
|
payload: error,
|
||||||
user
|
user
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function requestDeleteUser(user: User) {
|
//delete user
|
||||||
|
|
||||||
|
export function deleteUser(user: User) {
|
||||||
|
return function(dispatch: any) {
|
||||||
|
dispatch(deleteUserPending(user));
|
||||||
|
return apiClient
|
||||||
|
.delete(user._links.delete.href)
|
||||||
|
.then(() => {
|
||||||
|
dispatch(deleteUserSuccess(user));
|
||||||
|
dispatch(fetchUsers());
|
||||||
|
})
|
||||||
|
.catch(cause => {
|
||||||
|
const error = new Error(
|
||||||
|
`could not delete user ${user.name}: ${cause.message}`
|
||||||
|
);
|
||||||
|
dispatch(deleteUserFailure(user, error));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deleteUserPending(user: User) {
|
||||||
return {
|
return {
|
||||||
type: DELETE_USER,
|
type: DELETE_USER,
|
||||||
payload: user
|
payload: user
|
||||||
@@ -227,25 +252,9 @@ export function deleteUserFailure(user: User, error: Error) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteUser(user: User) {
|
//helper functions
|
||||||
return function(dispatch: any) {
|
|
||||||
dispatch(requestDeleteUser(user));
|
|
||||||
return apiClient
|
|
||||||
.delete(user._links.delete.href)
|
|
||||||
.then(() => {
|
|
||||||
dispatch(deleteUserSuccess(user));
|
|
||||||
dispatch(fetchUsers());
|
|
||||||
})
|
|
||||||
.catch(cause => {
|
|
||||||
const error = new Error(
|
|
||||||
`could not delete user ${user.name}: ${cause.message}`
|
|
||||||
);
|
|
||||||
dispatch(deleteUserFailure(user, error));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getUsersFromState(state) {
|
export function getUsersFromState(state: any) {
|
||||||
if (!state.users.users) {
|
if (!state.users.users) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -283,7 +292,7 @@ function extractUsersByNames(
|
|||||||
function deleteUserInUsersByNames(users: {}, userName: any) {
|
function deleteUserInUsersByNames(users: {}, userName: any) {
|
||||||
let newUsers = {};
|
let newUsers = {};
|
||||||
for (let username in users) {
|
for (let username in users) {
|
||||||
if (username != userName) newUsers[username] = users[username];
|
if (username !== userName) newUsers[username] = users[username];
|
||||||
}
|
}
|
||||||
return newUsers;
|
return newUsers;
|
||||||
}
|
}
|
||||||
@@ -291,7 +300,7 @@ function deleteUserInUsersByNames(users: {}, userName: any) {
|
|||||||
function deleteUserInEntries(users: [], userName: any) {
|
function deleteUserInEntries(users: [], userName: any) {
|
||||||
let newUsers = [];
|
let newUsers = [];
|
||||||
for (let user of users) {
|
for (let user of users) {
|
||||||
if (user != userName) newUsers.push(user);
|
if (user !== userName) newUsers.push(user);
|
||||||
}
|
}
|
||||||
return newUsers;
|
return newUsers;
|
||||||
}
|
}
|
||||||
@@ -315,7 +324,7 @@ const reduceUsersByNames = (
|
|||||||
export default function reducer(state: any = {}, action: any = {}) {
|
export default function reducer(state: any = {}, action: any = {}) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
// fetch user list cases
|
// fetch user list cases
|
||||||
case FETCH_USERS:
|
case FETCH_USERS_PENDING:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
users: {
|
users: {
|
||||||
@@ -351,7 +360,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
// Fetch single user cases
|
// Fetch single user cases
|
||||||
case FETCH_USER:
|
case FETCH_USER_PENDING:
|
||||||
return reduceUsersByNames(state, action.payload.name, {
|
return reduceUsersByNames(state, action.payload.name, {
|
||||||
loading: true,
|
loading: true,
|
||||||
error: null
|
error: null
|
||||||
@@ -415,7 +424,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
// Add single user cases
|
// Add single user cases
|
||||||
case ADD_USER:
|
case CREATE_USER_PENDING:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
users: {
|
users: {
|
||||||
@@ -424,7 +433,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
error: null
|
error: null
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case ADD_USER_SUCCESS:
|
case CREATE_USER_SUCCESS:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
users: {
|
users: {
|
||||||
@@ -433,7 +442,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
error: null
|
error: null
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case ADD_USER_FAILURE:
|
case CREATE_USER_FAILURE:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
users: {
|
users: {
|
||||||
@@ -443,7 +452,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
// Update single user cases
|
// Update single user cases
|
||||||
case UPDATE_USER:
|
case MODIFY_USER_PENDING:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
usersByNames: {
|
usersByNames: {
|
||||||
@@ -455,7 +464,7 @@ export default function reducer(state: any = {}, action: any = {}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case UPDATE_USER_SUCCESS:
|
case MODIFY_USER_SUCCESS:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
usersByNames: {
|
usersByNames: {
|
||||||
|
|||||||
@@ -4,34 +4,33 @@ import thunk from "redux-thunk";
|
|||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
FETCH_USERS,
|
FETCH_USERS_PENDING,
|
||||||
FETCH_USERS_SUCCESS,
|
FETCH_USERS_SUCCESS,
|
||||||
fetchUsers,
|
fetchUsers,
|
||||||
FETCH_USERS_FAILURE,
|
FETCH_USERS_FAILURE,
|
||||||
addUser,
|
createUserPending,
|
||||||
ADD_USER,
|
CREATE_USER_PENDING,
|
||||||
ADD_USER_SUCCESS,
|
CREATE_USER_SUCCESS,
|
||||||
ADD_USER_FAILURE,
|
CREATE_USER_FAILURE,
|
||||||
updateUser,
|
modifyUser,
|
||||||
UPDATE_USER,
|
MODIFY_USER_PENDING,
|
||||||
UPDATE_USER_FAILURE,
|
MODIFY_USER_FAILURE,
|
||||||
UPDATE_USER_SUCCESS,
|
MODIFY_USER_SUCCESS,
|
||||||
EDIT_USER,
|
deleteUserPending,
|
||||||
requestDeleteUser,
|
|
||||||
deleteUserFailure,
|
deleteUserFailure,
|
||||||
DELETE_USER,
|
DELETE_USER,
|
||||||
DELETE_USER_SUCCESS,
|
DELETE_USER_SUCCESS,
|
||||||
DELETE_USER_FAILURE,
|
DELETE_USER_FAILURE,
|
||||||
deleteUser,
|
deleteUser,
|
||||||
requestUsers,
|
fetchUsersFailure,
|
||||||
fetchUsersSuccess,
|
fetchUsersSuccess,
|
||||||
requestAddUser,
|
createUser,
|
||||||
addUserSuccess,
|
createUserSuccess,
|
||||||
addUserFailure,
|
createUserFailure,
|
||||||
updateUserFailure,
|
modifyUserFailure,
|
||||||
deleteUserSuccess,
|
deleteUserSuccess,
|
||||||
failedToFetchUsers,
|
fetchUsersPending,
|
||||||
requestUser,
|
fetchUserPending,
|
||||||
fetchUserFailure
|
fetchUserFailure
|
||||||
} from "./users";
|
} from "./users";
|
||||||
|
|
||||||
@@ -143,7 +142,7 @@ describe("users fetch()", () => {
|
|||||||
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
||||||
|
|
||||||
const expectedActions = [
|
const expectedActions = [
|
||||||
{ type: FETCH_USERS },
|
{ type: FETCH_USERS_PENDING },
|
||||||
{
|
{
|
||||||
type: FETCH_USERS_SUCCESS,
|
type: FETCH_USERS_SUCCESS,
|
||||||
payload: response
|
payload: response
|
||||||
@@ -165,7 +164,7 @@ describe("users fetch()", () => {
|
|||||||
const store = mockStore({});
|
const store = mockStore({});
|
||||||
return store.dispatch(fetchUsers()).then(() => {
|
return store.dispatch(fetchUsers()).then(() => {
|
||||||
const actions = store.getActions();
|
const actions = store.getActions();
|
||||||
expect(actions[0].type).toEqual(FETCH_USERS);
|
expect(actions[0].type).toEqual(FETCH_USERS_PENDING);
|
||||||
expect(actions[1].type).toEqual(FETCH_USERS_FAILURE);
|
expect(actions[1].type).toEqual(FETCH_USERS_FAILURE);
|
||||||
expect(actions[1].payload).toBeDefined();
|
expect(actions[1].payload).toBeDefined();
|
||||||
});
|
});
|
||||||
@@ -181,11 +180,11 @@ describe("users fetch()", () => {
|
|||||||
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
||||||
|
|
||||||
const store = mockStore({});
|
const store = mockStore({});
|
||||||
return store.dispatch(addUser(userZaphod)).then(() => {
|
return store.dispatch(createUser(userZaphod)).then(() => {
|
||||||
const actions = store.getActions();
|
const actions = store.getActions();
|
||||||
expect(actions[0].type).toEqual(ADD_USER);
|
expect(actions[0].type).toEqual(CREATE_USER_PENDING);
|
||||||
expect(actions[1].type).toEqual(ADD_USER_SUCCESS);
|
expect(actions[1].type).toEqual(CREATE_USER_SUCCESS);
|
||||||
expect(actions[2].type).toEqual(FETCH_USERS);
|
expect(actions[2].type).toEqual(FETCH_USERS_PENDING);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -195,10 +194,10 @@ describe("users fetch()", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const store = mockStore({});
|
const store = mockStore({});
|
||||||
return store.dispatch(addUser(userZaphod)).then(() => {
|
return store.dispatch(createUser(userZaphod)).then(() => {
|
||||||
const actions = store.getActions();
|
const actions = store.getActions();
|
||||||
expect(actions[0].type).toEqual(ADD_USER);
|
expect(actions[0].type).toEqual(CREATE_USER_PENDING);
|
||||||
expect(actions[1].type).toEqual(ADD_USER_FAILURE);
|
expect(actions[1].type).toEqual(CREATE_USER_FAILURE);
|
||||||
expect(actions[1].payload).toBeDefined();
|
expect(actions[1].payload).toBeDefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -211,11 +210,11 @@ describe("users fetch()", () => {
|
|||||||
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
fetchMock.getOnce("/scm/api/rest/v2/users", response);
|
||||||
|
|
||||||
const store = mockStore({});
|
const store = mockStore({});
|
||||||
return store.dispatch(updateUser(userZaphod)).then(() => {
|
return store.dispatch(modifyUser(userZaphod)).then(() => {
|
||||||
const actions = store.getActions();
|
const actions = store.getActions();
|
||||||
expect(actions[0].type).toEqual(UPDATE_USER);
|
expect(actions[0].type).toEqual(MODIFY_USER_PENDING);
|
||||||
expect(actions[1].type).toEqual(UPDATE_USER_SUCCESS);
|
expect(actions[1].type).toEqual(MODIFY_USER_SUCCESS);
|
||||||
expect(actions[2].type).toEqual(FETCH_USERS);
|
expect(actions[2].type).toEqual(FETCH_USERS_PENDING);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -225,10 +224,10 @@ describe("users fetch()", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const store = mockStore({});
|
const store = mockStore({});
|
||||||
return store.dispatch(updateUser(userZaphod)).then(() => {
|
return store.dispatch(modifyUser(userZaphod)).then(() => {
|
||||||
const actions = store.getActions();
|
const actions = store.getActions();
|
||||||
expect(actions[0].type).toEqual(UPDATE_USER);
|
expect(actions[0].type).toEqual(MODIFY_USER_PENDING);
|
||||||
expect(actions[1].type).toEqual(UPDATE_USER_FAILURE);
|
expect(actions[1].type).toEqual(MODIFY_USER_FAILURE);
|
||||||
expect(actions[1].payload).toBeDefined();
|
expect(actions[1].payload).toBeDefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -246,7 +245,7 @@ describe("users fetch()", () => {
|
|||||||
expect(actions[0].type).toEqual(DELETE_USER);
|
expect(actions[0].type).toEqual(DELETE_USER);
|
||||||
expect(actions[0].payload).toBe(userZaphod);
|
expect(actions[0].payload).toBe(userZaphod);
|
||||||
expect(actions[1].type).toEqual(DELETE_USER_SUCCESS);
|
expect(actions[1].type).toEqual(DELETE_USER_SUCCESS);
|
||||||
expect(actions[2].type).toEqual(FETCH_USERS);
|
expect(actions[2].type).toEqual(FETCH_USERS_PENDING);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -267,8 +266,8 @@ describe("users fetch()", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("users reducer", () => {
|
describe("users reducer", () => {
|
||||||
it("should update state correctly according to FETCH_USERS action", () => {
|
it("should update state correctly according to FETCH_USERS_PENDING action", () => {
|
||||||
const newState = reducer({}, requestUsers());
|
const newState = reducer({}, fetchUsersPending());
|
||||||
expect(newState.users.loading).toBeTruthy();
|
expect(newState.users.loading).toBeTruthy();
|
||||||
expect(newState.users.error).toBeFalsy();
|
expect(newState.users.error).toBeFalsy();
|
||||||
});
|
});
|
||||||
@@ -304,7 +303,7 @@ describe("users reducer", () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const newState = reducer(state, requestDeleteUser(userZaphod));
|
const newState = reducer(state, deleteUserPending(userZaphod));
|
||||||
const zaphod = newState.usersByNames["zaphod"];
|
const zaphod = newState.usersByNames["zaphod"];
|
||||||
expect(zaphod.loading).toBeTruthy();
|
expect(zaphod.loading).toBeTruthy();
|
||||||
expect(zaphod.entry).toBe(userZaphod);
|
expect(zaphod.entry).toBe(userZaphod);
|
||||||
@@ -324,7 +323,7 @@ describe("users reducer", () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const newState = reducer(state, requestDeleteUser(userZaphod));
|
const newState = reducer(state, deleteUserPending(userZaphod));
|
||||||
const ford = newState.usersByNames["ford"];
|
const ford = newState.usersByNames["ford"];
|
||||||
expect(ford.loading).toBeFalsy();
|
expect(ford.loading).toBeFalsy();
|
||||||
});
|
});
|
||||||
@@ -386,14 +385,14 @@ describe("users reducer", () => {
|
|||||||
expect(newState.users.userCreatePermission).toBeTruthy();
|
expect(newState.users.userCreatePermission).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should update state correctly according to ADD_USER action", () => {
|
it("should update state correctly according to CREATE_USER_PENDING action", () => {
|
||||||
const newState = reducer({}, requestAddUser(userZaphod));
|
const newState = reducer({}, createUserPending(userZaphod));
|
||||||
expect(newState.users.loading).toBeTruthy();
|
expect(newState.users.loading).toBeTruthy();
|
||||||
expect(newState.users.error).toBeNull();
|
expect(newState.users.error).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should update state correctly according to ADD_USER_SUCCESS action", () => {
|
it("should update state correctly according to CREATE_USER_SUCCESS action", () => {
|
||||||
const newState = reducer({ loading: true }, addUserSuccess());
|
const newState = reducer({ loading: true }, createUserSuccess());
|
||||||
expect(newState.users.loading).toBeFalsy();
|
expect(newState.users.loading).toBeFalsy();
|
||||||
expect(newState.users.error).toBeNull();
|
expect(newState.users.error).toBeNull();
|
||||||
});
|
});
|
||||||
@@ -401,14 +400,14 @@ describe("users reducer", () => {
|
|||||||
it("should set the loading to false and the error if user could not be added", () => {
|
it("should set the loading to false and the error if user could not be added", () => {
|
||||||
const newState = reducer(
|
const newState = reducer(
|
||||||
{ loading: true, error: null },
|
{ loading: true, error: null },
|
||||||
addUserFailure(userFord, new Error("kaputt kaputt"))
|
createUserFailure(userFord, new Error("kaputt kaputt"))
|
||||||
);
|
);
|
||||||
expect(newState.users.loading).toBeFalsy();
|
expect(newState.users.loading).toBeFalsy();
|
||||||
expect(newState.users.error).toEqual(new Error("kaputt kaputt"));
|
expect(newState.users.error).toEqual(new Error("kaputt kaputt"));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should update state according to FETCH_USER action", () => {
|
it("should update state according to FETCH_USER_PENDING action", () => {
|
||||||
const newState = reducer({}, requestUser("zaphod"));
|
const newState = reducer({}, fetchUserPending("zaphod"));
|
||||||
expect(newState.usersByNames["zaphod"].loading).toBeTruthy();
|
expect(newState.usersByNames["zaphod"].loading).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user