diff --git a/src/App.js b/src/App.js index 7169419..2b15088 100644 --- a/src/App.js +++ b/src/App.js @@ -16,7 +16,7 @@ class App extends Component { _isMounted = false; state = { - isLoading: true + isLoading: true, }; componentDidMount() { @@ -24,7 +24,7 @@ class App extends Component { store .dispatch(getConfig()) .then(() => store.dispatch(checkAuthentification())) - .catch(error => { + .catch((error) => { if (this._isMounted) { console.error(error); } diff --git a/src/App.test.js b/src/App.test.js index 9519bf2..26044b9 100644 --- a/src/App.test.js +++ b/src/App.test.js @@ -9,7 +9,7 @@ const axiosMock = new axiosMockAdapter(axios); it("renders without crashing", () => { axiosMock.onGet("config.json").reply(200, { - apiURL: "http://localhost:8000" + apiURL: "http://localhost:8000", }); const div = document.createElement("div"); ReactDOM.render(, div); diff --git a/src/auth/PrivateRoute.js b/src/auth/PrivateRoute.js index 24ef17a..cba45b1 100644 --- a/src/auth/PrivateRoute.js +++ b/src/auth/PrivateRoute.js @@ -8,14 +8,14 @@ class PrivateRoute extends Component { return ( + render={(props) => isAuthenticated ? ( ) : ( ) @@ -27,7 +27,7 @@ class PrivateRoute extends Component { function mapStateToProps(state) { return { - isAuthenticated: state.auth.isAuthenticated + isAuthenticated: state.auth.isAuthenticated, }; } diff --git a/src/auth/authActions.js b/src/auth/authActions.js index 4c2e5d3..b81e10a 100644 --- a/src/auth/authActions.js +++ b/src/auth/authActions.js @@ -5,7 +5,7 @@ import { setCredentials, removeCredentials } from "./localStorage"; export function logout() { removeCredentials(); return { - type: types.LOGOUT + type: types.LOGOUT, }; } @@ -14,15 +14,15 @@ export function checkAuthentification() { const state = getState(); return http({ method: "get", - url: `${state.config.apiURL}/api/v1/` + url: `${state.config.apiURL}/api/v1/`, }) - .then(response => { + .then((response) => { dispatch({ - type: types.LOGIN + type: types.LOGIN, }); return response; }) - .catch(error => { + .catch((error) => { if (error.response && error.response.status === 401) { dispatch(logout()); } @@ -32,7 +32,7 @@ export function checkAuthentification() { } export function login(username, password) { - return dispatch => { + return (dispatch) => { setCredentials({ username, password }); return dispatch(checkAuthentification()); }; diff --git a/src/auth/authActions.test.js b/src/auth/authActions.test.js index 14a7619..1c5bb66 100644 --- a/src/auth/authActions.test.js +++ b/src/auth/authActions.test.js @@ -15,8 +15,8 @@ it("checkAuthentification", () => { axiosMock.onGet("https://api.example.org/api/v1/").reply(200, {}); const expectedActions = [ { - type: types.LOGIN - } + type: types.LOGIN, + }, ]; const store = mockStore({ config: { apiURL: "https://api.example.org" } }); return store.dispatch(checkAuthentification()).then(() => { @@ -28,8 +28,8 @@ it("checkAuthentification unauthorized", () => { axiosMock.onGet("https://api.example.org/api/v1/").reply(401, {}); const expectedActions = [ { - type: types.LOGOUT - } + type: types.LOGOUT, + }, ]; const store = mockStore({ config: { apiURL: "https://api.example.org" } }); return store.dispatch(checkAuthentification()).catch(() => { diff --git a/src/auth/authReducer.js b/src/auth/authReducer.js index 1789808..bd4f4fe 100644 --- a/src/auth/authReducer.js +++ b/src/auth/authReducer.js @@ -1,20 +1,20 @@ import * as types from "./authActionsTypes"; const initialState = { - isAuthenticated: true + isAuthenticated: true, }; -export default function(state = initialState, action) { +export default function (state = initialState, action) { switch (action.type) { case types.LOGIN: return { ...state, - isAuthenticated: true + isAuthenticated: true, }; case types.LOGOUT: return { ...state, - isAuthenticated: false + isAuthenticated: false, }; default: return state; diff --git a/src/auth/authReducer.test.js b/src/auth/authReducer.test.js index 0734a5a..1777fee 100644 --- a/src/auth/authReducer.test.js +++ b/src/auth/authReducer.test.js @@ -7,18 +7,18 @@ it("returns the initial state", () => { it("LOGIN", () => { const newState = reducer(undefined, { - type: types.LOGIN + type: types.LOGIN, }); expect(newState).toEqual({ - isAuthenticated: true + isAuthenticated: true, }); }); it("LOGOUT", () => { const newState = reducer(undefined, { - type: types.LOGOUT + type: types.LOGOUT, }); expect(newState).toEqual({ - isAuthenticated: false + isAuthenticated: false, }); }); diff --git a/src/auth/localStorage.test.js b/src/auth/localStorage.test.js index 39dc449..5d56c60 100644 --- a/src/auth/localStorage.test.js +++ b/src/auth/localStorage.test.js @@ -1,7 +1,7 @@ import { setCredentials, getCredentials, - removeCredentials + removeCredentials, } from "./localStorage"; it("localStorage getCredentials", () => { @@ -11,7 +11,7 @@ it("localStorage getCredentials", () => { it("localStorage setCredentials getCredentials removeCredentials", () => { const credentials = { username: "foo", - password: "bar" + password: "bar", }; setCredentials(credentials); expect(getCredentials()).toEqual(credentials); diff --git a/src/config/configActions.js b/src/config/configActions.js index 6683d9b..5a7c784 100644 --- a/src/config/configActions.js +++ b/src/config/configActions.js @@ -4,16 +4,18 @@ import * as types from "./configActionsTypes"; export function setConfig(config) { return { type: types.SET_CONFIG, - config + config, }; } export function getConfig() { - return dispatch => { - return http.get(`${process.env.PUBLIC_URL}/config.json`).then(response => { - const config = response.data; - dispatch(setConfig(config)); - return response; - }); + return (dispatch) => { + return http + .get(`${process.env.PUBLIC_URL}/config.json`) + .then((response) => { + const config = response.data; + dispatch(setConfig(config)); + return response; + }); }; } diff --git a/src/config/configActions.test.js b/src/config/configActions.test.js index 1e4937b..0ff6948 100644 --- a/src/config/configActions.test.js +++ b/src/config/configActions.test.js @@ -5,7 +5,7 @@ it("setConfig", () => { const config = { apiURL: "http://example.org" }; const expectedActions = { type: types.SET_CONFIG, - config + config, }; expect(actions.setConfig(config)).toEqual(expectedActions); }); diff --git a/src/config/configReducer.js b/src/config/configReducer.js index 3ad0859..67f0649 100644 --- a/src/config/configReducer.js +++ b/src/config/configReducer.js @@ -2,11 +2,11 @@ import * as types from "./configActionsTypes"; const initialState = {}; -export default function(state = initialState, action) { +export default function (state = initialState, action) { switch (action.type) { case types.SET_CONFIG: return { - ...action.config + ...action.config, }; default: return state; diff --git a/src/config/configReducer.test.js b/src/config/configReducer.test.js index ef6bdd1..d827334 100644 --- a/src/config/configReducer.test.js +++ b/src/config/configReducer.test.js @@ -11,8 +11,8 @@ it("SET_CONFIG", () => { { type: types.SET_CONFIG, config: { - apiURL: "http://example.org" - } + apiURL: "http://example.org", + }, } ); expect(state.apiURL).toBe("http://example.org"); diff --git a/src/http.js b/src/http.js index f3bd30c..0b2a548 100644 --- a/src/http.js +++ b/src/http.js @@ -1,7 +1,7 @@ import axios from "axios"; import { getCredentials } from "./auth/localStorage"; -axios.interceptors.request.use(config => { +axios.interceptors.request.use((config) => { const credentials = getCredentials(); if (credentials) { config.auth = credentials; diff --git a/src/layout/Header.js b/src/layout/Header.js index 37efe2c..f28b06d 100644 --- a/src/layout/Header.js +++ b/src/layout/Header.js @@ -8,7 +8,7 @@ import { NavItem, NavList, NavVariants, - PageHeader + PageHeader, } from "@patternfly/react-core"; import logo from "../images/logo.svg"; @@ -53,7 +53,7 @@ class Header extends Component { function mapStateToProps(state) { return { - isAuthenticated: state.auth.isAuthenticated + isAuthenticated: state.auth.isAuthenticated, }; } diff --git a/src/layout/LoadingPage.js b/src/layout/LoadingPage.js index 64c0463..59a4ed1 100644 --- a/src/layout/LoadingPage.js +++ b/src/layout/LoadingPage.js @@ -4,17 +4,17 @@ import { Card, CardBody, PageSection, - PageSectionVariants + PageSectionVariants, } from "@patternfly/react-core"; export default class LoadingPage extends Component { state = { - seconds: 0 + seconds: 0, }; tick() { - this.setState(state => ({ - seconds: state.seconds + 1 + this.setState((state) => ({ + seconds: state.seconds + 1, })); } diff --git a/src/layout/Page404.js b/src/layout/Page404.js index 9325e67..92e6365 100644 --- a/src/layout/Page404.js +++ b/src/layout/Page404.js @@ -3,7 +3,7 @@ import { Bullseye, Button, PageSection, - PageSectionVariants + PageSectionVariants, } from "@patternfly/react-core"; export default class Page404 extends Component { diff --git a/src/login/LoginPage.js b/src/login/LoginPage.js index 1a03ca9..a1b92c3 100644 --- a/src/login/LoginPage.js +++ b/src/login/LoginPage.js @@ -4,7 +4,7 @@ import { LoginFooterItem, LoginForm, LoginPage, - ListItem + ListItem, } from "@patternfly/react-core"; import { Redirect } from "react-router-dom"; import logo from "../images/logo.svg"; @@ -18,18 +18,18 @@ export class AraLoginPage extends Component { isValidUsername: true, password: "", isValidPassword: true, - redirectToReferrer: false + redirectToReferrer: false, }; - handleUsernameChange = username => { + handleUsernameChange = (username) => { this.setState({ username }); }; - handlePasswordChange = password => { + handlePasswordChange = (password) => { this.setState({ password }); }; - onLoginButtonClick = event => { + onLoginButtonClick = (event) => { event.preventDefault(); const { username, password } = this.state; const { login } = this.props; @@ -42,7 +42,7 @@ export class AraLoginPage extends Component { showHelperText: true, isValidUsername: false, isValidPassword: false, - helperText: "Invalid username or password" + helperText: "Invalid username or password", }); }); }; @@ -55,7 +55,7 @@ export class AraLoginPage extends Component { isValidPassword, showHelperText, helperText, - redirectToReferrer + redirectToReferrer, } = this.state; const { location, isAuthenticated } = this.props; const { from } = location.state || { from: { pathname: "/" } }; @@ -100,17 +100,14 @@ export class AraLoginPage extends Component { function mapStateToProps(state) { return { - isAuthenticated: state.auth.isAuthenticated + isAuthenticated: state.auth.isAuthenticated, }; } function mapDispatchToProps(dispatch) { return { - login: (username, password) => dispatch(login(username, password)) + login: (username, password) => dispatch(login(username, password)), }; } -export default connect( - mapStateToProps, - mapDispatchToProps -)(AraLoginPage); +export default connect(mapStateToProps, mapDispatchToProps)(AraLoginPage); diff --git a/src/playbooks/PlaybookPage.js b/src/playbooks/PlaybookPage.js index 53020e0..41df035 100644 --- a/src/playbooks/PlaybookPage.js +++ b/src/playbooks/PlaybookPage.js @@ -3,7 +3,7 @@ import { Card, CardHeader, PageSection, - PageSectionVariants + PageSectionVariants, } from "@patternfly/react-core"; import { connect } from "react-redux"; import { isEmpty } from "lodash"; @@ -16,14 +16,14 @@ import { extractTasksFromPlays } from "../tasks/task"; export class PlaybookPage extends Component { state = { isLoading: true, - playbook: null + playbook: null, }; componentDidMount() { this.props .getPlaybook({ id: this.props.match.params.id }) - .then(response => this.setState({ playbook: response.data })) - .catch(error => console.log(error)) + .then((response) => this.setState({ playbook: response.data })) + .catch((error) => console.log(error)) .then(() => this.setState({ isLoading: false })); } @@ -57,7 +57,7 @@ export class PlaybookPage extends Component { - {playbook.hosts.map(host => ( + {playbook.hosts.map((host) => ( {host.name} {host.ok} @@ -81,11 +81,8 @@ export class PlaybookPage extends Component { function mapDispatchToProps(dispatch) { return { - getPlaybook: playbook => dispatch(getPlaybook(playbook)) + getPlaybook: (playbook) => dispatch(getPlaybook(playbook)), }; } -export default connect( - null, - mapDispatchToProps -)(PlaybookPage); +export default connect(null, mapDispatchToProps)(PlaybookPage); diff --git a/src/playbooks/PlaybookSummary.js b/src/playbooks/PlaybookSummary.js index 789ba68..3154a0b 100644 --- a/src/playbooks/PlaybookSummary.js +++ b/src/playbooks/PlaybookSummary.js @@ -6,14 +6,14 @@ import { ExclamationCircleIcon, PauseCircleIcon, CalendarAltIcon, - ClockIcon + ClockIcon, } from "@patternfly/react-icons"; import { global_danger_color_100, global_success_color_100, global_active_color_100, global_warning_color_100, - global_Color_light_100 + global_Color_light_100, } from "@patternfly/react-tokens"; const StatusIcon = ({ status }) => { @@ -56,21 +56,13 @@ const StatusIcon = ({ status }) => { function getBackground(status, backgroundColor = global_Color_light_100.value) { switch (status) { case "running": - return `linear-gradient(to right,${global_active_color_100.value} 0,${ - global_active_color_100.value - } 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; + return `linear-gradient(to right,${global_active_color_100.value} 0,${global_active_color_100.value} 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; case "completed": - return `linear-gradient(to right,${global_success_color_100.value} 0,${ - global_success_color_100.value - } 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; + return `linear-gradient(to right,${global_success_color_100.value} 0,${global_success_color_100.value} 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; case "failed": - return `linear-gradient(to right,${global_danger_color_100.value} 0,${ - global_danger_color_100.value - } 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; + return `linear-gradient(to right,${global_danger_color_100.value} 0,${global_danger_color_100.value} 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; default: - return `linear-gradient(to right,${global_warning_color_100.value} 0,${ - global_warning_color_100.value - } 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; + return `linear-gradient(to right,${global_warning_color_100.value} 0,${global_warning_color_100.value} 5px,${backgroundColor} 5px,${backgroundColor} 100%) no-repeat`; } } @@ -78,7 +70,7 @@ const PlaybookWrapper = styled.div` cursor: pointer; &:hover { .pf-c-card { - background: ${props => getBackground(props.status)}; + background: ${(props) => getBackground(props.status)}; } `; @@ -184,7 +176,7 @@ export default class Playbook extends Component { - {playbook.labels.map(label => ( + {playbook.labels.map((label) => ( @@ -198,9 +190,7 @@ export default class Playbook extends Component { - - {playbook.duration} - + {playbook.duration} diff --git a/src/playbooks/PlaybooksPage.js b/src/playbooks/PlaybooksPage.js index 44f4bb2..0202154 100644 --- a/src/playbooks/PlaybooksPage.js +++ b/src/playbooks/PlaybooksPage.js @@ -12,7 +12,7 @@ import { EmptyStateBody, PageSection, PageSectionVariants, - Title + Title, } from "@patternfly/react-core"; import { CubesIcon, ErrorCircleOIcon } from "@patternfly/react-icons"; import { LoadingPage } from "../pages"; @@ -23,20 +23,18 @@ export class PlaybooksPage extends Component { state = { isLoading: true, hasError: false, - errorMessage: "" + errorMessage: "", }; componentDidMount() { const { getPlaybooks, config } = this.props; getPlaybooks() - .catch(error => { + .catch((error) => { let errorMessage = ""; if (error.response) { errorMessage = error.message; } else { - errorMessage = `Server located at ${ - config.apiURL - } is unreachable. Check your configuration. Verify that cross-origin requests are not blocked.`; + errorMessage = `Server located at ${config.apiURL} is unreachable. Check your configuration. Verify that cross-origin requests are not blocked.`; } this.setState({ errorMessage, hasError: true }); }) @@ -105,7 +103,7 @@ export class PlaybooksPage extends Component { return ( - {playbooks.map(playbook => ( + {playbooks.map((playbook) => ( dispatch(getPlaybooks()) + getPlaybooks: () => dispatch(getPlaybooks()), }; } -export default connect( - mapStateToProps, - mapDispatchToProps -)(PlaybooksPage); +export default connect(mapStateToProps, mapDispatchToProps)(PlaybooksPage); diff --git a/src/playbooks/playbooksActions.js b/src/playbooks/playbooksActions.js index 8d32358..5860c87 100644 --- a/src/playbooks/playbooksActions.js +++ b/src/playbooks/playbooksActions.js @@ -4,10 +4,10 @@ import * as types from "./playbooksActionsTypes"; export function getPlaybooks() { return (dispatch, getState) => { const { apiURL } = getState().config; - return http.get(`${apiURL}/api/v1/playbooks`).then(response => { + return http.get(`${apiURL}/api/v1/playbooks`).then((response) => { dispatch({ type: types.FETCH_PLAYBOOKS, - playbooks: response.data.results + playbooks: response.data.results, }); return response; }); diff --git a/src/playbooks/playbooksActions.test.js b/src/playbooks/playbooksActions.test.js index c9c8dc0..a8497a1 100644 --- a/src/playbooks/playbooksActions.test.js +++ b/src/playbooks/playbooksActions.test.js @@ -16,13 +16,13 @@ it("getPlaybooks", () => { count: 1, next: null, previous: null, - results: [{ id: "p1" }] + results: [{ id: "p1" }], }); const expectedActions = [ { type: types.FETCH_PLAYBOOKS, - playbooks: [{ id: "p1" }] - } + playbooks: [{ id: "p1" }], + }, ]; const store = mockStore({ config: { apiURL: "https://api.example.org" } }); return store.dispatch(getPlaybooks()).then(() => { diff --git a/src/playbooks/playbooksReducer.js b/src/playbooks/playbooksReducer.js index 8bc428d..33c7671 100644 --- a/src/playbooks/playbooksReducer.js +++ b/src/playbooks/playbooksReducer.js @@ -2,7 +2,7 @@ import * as types from "./playbooksActionsTypes"; const initialState = {}; -export default function(state = initialState, action) { +export default function (state = initialState, action) { switch (action.type) { case types.FETCH_PLAYBOOKS: return action.playbooks.reduce((accumulator, playbook) => { diff --git a/src/playbooks/playbooksReducer.test.js b/src/playbooks/playbooksReducer.test.js index 870c224..0b0d22f 100644 --- a/src/playbooks/playbooksReducer.test.js +++ b/src/playbooks/playbooksReducer.test.js @@ -4,9 +4,9 @@ import * as types from "./playbooksActionsTypes"; it("FETCH_PLAYBOOKS", () => { const newState = reducer(undefined, { type: types.FETCH_PLAYBOOKS, - playbooks: [{ id: "p1" }] + playbooks: [{ id: "p1" }], }); expect(newState).toEqual({ - p1: { id: "p1" } + p1: { id: "p1" }, }); }); diff --git a/src/setupTests.js b/src/setupTests.js index 6398c48..19fb08d 100644 --- a/src/setupTests.js +++ b/src/setupTests.js @@ -1,18 +1,18 @@ -const localStorageMock = (function() { +const localStorageMock = (function () { let store = {}; return { - getItem: function(key) { + getItem: function (key) { return store[key] || null; }, - setItem: function(key, value) { + setItem: function (key, value) { store[key] = value.toString(); }, - removeItem: function(key) { + removeItem: function (key) { delete store[key]; }, - clear: function() { + clear: function () { store = {}; - } + }, }; })(); diff --git a/src/store.js b/src/store.js index 7ef0b63..72ac707 100644 --- a/src/store.js +++ b/src/store.js @@ -8,7 +8,7 @@ const store = createStore( combineReducers({ config: configReducer, playbooks: playbooksReducer, - auth: authReducer + auth: authReducer, }), applyMiddleware(thunk) ); diff --git a/src/tasks/TaskRow.js b/src/tasks/TaskRow.js index 0103f92..8c9f119 100644 --- a/src/tasks/TaskRow.js +++ b/src/tasks/TaskRow.js @@ -3,7 +3,7 @@ import { global_danger_color_100, global_success_color_100, global_active_color_100, - global_warning_color_100 + global_warning_color_100, } from "@patternfly/react-tokens"; const Status = ({ status, children }) => { @@ -14,7 +14,7 @@ const Status = ({ status, children }) => { unreachable: global_warning_color_100.value, changed: global_active_color_100.value, ignored: global_warning_color_100.value, - unknown: global_warning_color_100.value + unknown: global_warning_color_100.value, }; return ( { return (
{Object.keys(statuses) - .filter(status => statuses[status] !== 0) - .map(status => ( + .filter((status) => statuses[status] !== 0) + .map((status) => ( {`${statuses[status]} ${status}`} ))}
@@ -40,11 +40,11 @@ const Statuses = ({ statuses }) => { export default class TaskRow extends Component { state = { - isExpanded: false + isExpanded: false, }; toggleExpand = () => { - this.setState(prevState => ({ isExpanded: !prevState.isExpanded })); + this.setState((prevState) => ({ isExpanded: !prevState.isExpanded })); }; render() { const { isExpanded } = this.state; @@ -54,8 +54,9 @@ export default class TaskRow extends Component {