From 8ad33db34731664039b6dfdccd9586cf25cb6f39 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Fri, 18 Mar 2022 09:59:41 -0400 Subject: [PATCH 01/29] layout restructure --- .../{components => layout/footer}/Footer.js | 0 .../header}/ApdHeader.js | 71 ++++++++++--------- .../header}/ApdHeader.test.js | 0 .../header}/DashboardButton.js | 2 +- .../header}/DashboardButton.test.js | 2 +- .../{components => layout/header}/Header.js | 33 ++++----- .../header}/Header.story.js | 0 .../header}/Header.test.js | 0 .../header}/HeaderSaveMessage.js | 6 +- .../header}/HeaderSaveMessage.story.js | 0 .../header}/HeaderSaveMessage.test.js | 0 web/src/{containers => layout/nav}/Nav.js | 4 +- .../{containers => layout/nav}/Nav.test.js | 0 web/src/{components => layout/nav}/NavLink.js | 0 .../nav}/NavLink.test.js | 0 .../nav}/SecondaryNav.js | 6 +- .../nav}/SecondaryNav.test.js | 2 +- web/src/{containers => layout/nav}/Sidebar.js | 0 .../nav}/Sidebar.test.js | 0 19 files changed, 65 insertions(+), 61 deletions(-) rename web/src/{components => layout/footer}/Footer.js (100%) rename web/src/{containers => layout/header}/ApdHeader.js (60%) rename web/src/{containers => layout/header}/ApdHeader.test.js (100%) rename web/src/{components => layout/header}/DashboardButton.js (92%) rename web/src/{components => layout/header}/DashboardButton.test.js (94%) rename web/src/{components => layout/header}/Header.js (90%) rename web/src/{components => layout/header}/Header.story.js (100%) rename web/src/{components => layout/header}/Header.test.js (100%) rename web/src/{components => layout/header}/HeaderSaveMessage.js (92%) rename web/src/{components => layout/header}/HeaderSaveMessage.story.js (100%) rename web/src/{components => layout/header}/HeaderSaveMessage.test.js (100%) rename web/src/{containers => layout/nav}/Nav.js (89%) rename web/src/{containers => layout/nav}/Nav.test.js (100%) rename web/src/{components => layout/nav}/NavLink.js (100%) rename web/src/{components => layout/nav}/NavLink.test.js (100%) rename web/src/{components => layout/nav}/SecondaryNav.js (88%) rename web/src/{components => layout/nav}/SecondaryNav.test.js (97%) rename web/src/{containers => layout/nav}/Sidebar.js (100%) rename web/src/{containers => layout/nav}/Sidebar.test.js (100%) diff --git a/web/src/components/Footer.js b/web/src/layout/footer/Footer.js similarity index 100% rename from web/src/components/Footer.js rename to web/src/layout/footer/Footer.js diff --git a/web/src/containers/ApdHeader.js b/web/src/layout/header/ApdHeader.js similarity index 60% rename from web/src/containers/ApdHeader.js rename to web/src/layout/header/ApdHeader.js index fb156a7c3c..72b415937a 100644 --- a/web/src/containers/ApdHeader.js +++ b/web/src/layout/header/ApdHeader.js @@ -3,10 +3,14 @@ import { Button, FormLabel } from '@cmsgov/design-system'; import React, { useState, useEffect } from 'react'; import { connect } from 'react-redux'; -import { getAPDCreation, getAPDName, getAPDYearRange } from '../reducers/apd'; -import { setApdName } from '../actions/editApd'; +import { + getAPDCreation, + getAPDName, + getAPDYearRange +} from '../../reducers/apd'; +import { setApdName } from '../../actions/editApd'; -import Icon, { faEdit } from '../components/Icons'; +import Icon, { faEdit } from '../../components/Icons'; const ApdHeader = ({ apdCreated, apdName, setName, year }) => { const [isEditing, setEditing] = useState(false); @@ -19,66 +23,69 @@ const ApdHeader = ({ apdCreated, apdName, setName, year }) => { } }, [isEditing]); - const onBlur = (e) => { + const onBlur = e => { const apdNameInput = e.target.value; if (apdNameInput.trim() === '') { - setName('Untitled APD') + setName('Untitled APD'); } else { - setName(apdNameInput) + setName(apdNameInput); } - setEditing(false) - } + setEditing(false); + }; - const onKeyPress = (event) => { - if (event.key === "Enter" || event.key === "Escape") { + const onKeyPress = event => { + if (event.key === 'Enter' || event.key === 'Escape') { event.target.blur(); } - } + }; return (
-
-
+
+
{isEditing ? ( setName(value.target.value)} onBlur={onBlur} /> ) : (
- + Edit APD Name
setEditing(true)} onKeyPress={onKeyPress} role="button" - tabIndex="0"> - {apdName} + tabIndex="0" + > + {apdName}
- ) } + )}
-
-
-

- HITECH IAPD | FFY {year} -

+
+

HITECH IAPD | FFY {year}

Created: {apdCreated} @@ -105,7 +112,7 @@ const mapStateToProps = state => ({ const mapDispatchToProps = { setName: setApdName -} +}; export default connect(mapStateToProps, mapDispatchToProps)(ApdHeader); diff --git a/web/src/containers/ApdHeader.test.js b/web/src/layout/header/ApdHeader.test.js similarity index 100% rename from web/src/containers/ApdHeader.test.js rename to web/src/layout/header/ApdHeader.test.js diff --git a/web/src/components/DashboardButton.js b/web/src/layout/header/DashboardButton.js similarity index 92% rename from web/src/components/DashboardButton.js rename to web/src/layout/header/DashboardButton.js index 60a5869538..c337e7f7c4 100644 --- a/web/src/components/DashboardButton.js +++ b/web/src/layout/header/DashboardButton.js @@ -2,7 +2,7 @@ import { Button } from '@cmsgov/design-system'; import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import { goToDashboard } from '../actions/app'; +import { goToDashboard } from '../../actions/app'; const DashboardButton = ({ children, dashboard }) => { return ( diff --git a/web/src/components/DashboardButton.test.js b/web/src/layout/header/DashboardButton.test.js similarity index 94% rename from web/src/components/DashboardButton.test.js rename to web/src/layout/header/DashboardButton.test.js index 071fd283fe..ee0536cd7b 100644 --- a/web/src/components/DashboardButton.test.js +++ b/web/src/layout/header/DashboardButton.test.js @@ -4,7 +4,7 @@ import { plain as DashboardButton, mapDispatchToProps } from './DashboardButton'; -import { goToDashboard } from '../actions/app'; +import { goToDashboard } from '../../actions/app'; describe('the dashboard button', () => { it('renders as expected', () => { diff --git a/web/src/components/Header.js b/web/src/layout/header/Header.js similarity index 90% rename from web/src/components/Header.js rename to web/src/layout/header/Header.js index 1875853cf8..7e3913380f 100644 --- a/web/src/components/Header.js +++ b/web/src/layout/header/Header.js @@ -7,8 +7,8 @@ import { getIsFedAdmin, getUserStateOrTerritory, getCanUserViewStateAdmin -} from '../reducers/user.selector'; -import { t } from '../i18n'; +} from '../../reducers/user.selector'; +import { t } from '../../i18n'; import DashboardButton from './DashboardButton'; import HeaderSaveMessage from './HeaderSaveMessage'; @@ -20,7 +20,7 @@ import Icon, { faPeopleArrows, faEdit, faUserShield -} from './Icons'; +} from '../../components/Icons'; class Header extends Component { constructor(props) { @@ -145,28 +145,25 @@ class Header extends Component { to="/manage-account" onClick={this.toggleDropdown} className="nav--dropdown__action" - > - - Manage Account + > + + Manage Account - -
  • - +
  • + Switch State Affiliation - -
  • - + + + )}
  • { const [active, setActive] = useState(isSaving); diff --git a/web/src/components/HeaderSaveMessage.story.js b/web/src/layout/header/HeaderSaveMessage.story.js similarity index 100% rename from web/src/components/HeaderSaveMessage.story.js rename to web/src/layout/header/HeaderSaveMessage.story.js diff --git a/web/src/components/HeaderSaveMessage.test.js b/web/src/layout/header/HeaderSaveMessage.test.js similarity index 100% rename from web/src/components/HeaderSaveMessage.test.js rename to web/src/layout/header/HeaderSaveMessage.test.js diff --git a/web/src/containers/Nav.js b/web/src/layout/nav/Nav.js similarity index 89% rename from web/src/containers/Nav.js rename to web/src/layout/nav/Nav.js index 20da4136e3..7567966e64 100644 --- a/web/src/containers/Nav.js +++ b/web/src/layout/nav/Nav.js @@ -2,8 +2,8 @@ import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { VerticalNav } from '@cmsgov/design-system'; import { connect } from 'react-redux'; -import NavLink from '../components/NavLink'; -import { generateKey as actualGenerateKey } from '../util'; +import NavLink from './NavLink'; +import { generateKey as actualGenerateKey } from '../../util'; const Nav = ({ generateKey, items, pathname }) => { // force component update when pathname changes diff --git a/web/src/containers/Nav.test.js b/web/src/layout/nav/Nav.test.js similarity index 100% rename from web/src/containers/Nav.test.js rename to web/src/layout/nav/Nav.test.js diff --git a/web/src/components/NavLink.js b/web/src/layout/nav/NavLink.js similarity index 100% rename from web/src/components/NavLink.js rename to web/src/layout/nav/NavLink.js diff --git a/web/src/components/NavLink.test.js b/web/src/layout/nav/NavLink.test.js similarity index 100% rename from web/src/components/NavLink.test.js rename to web/src/layout/nav/NavLink.test.js diff --git a/web/src/components/SecondaryNav.js b/web/src/layout/nav/SecondaryNav.js similarity index 88% rename from web/src/components/SecondaryNav.js rename to web/src/layout/nav/SecondaryNav.js index 1239163b71..82aff7ad40 100644 --- a/web/src/components/SecondaryNav.js +++ b/web/src/layout/nav/SecondaryNav.js @@ -2,13 +2,13 @@ import React, { Fragment } from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import { Link, useParams as actualUseParams } from 'react-router-dom'; -import ContinuePreviousButtons from './ContinuePreviousButtons'; +import ContinuePreviousButtons from '../../components/ContinuePreviousButtons'; import { selectActivitiesSidebar, selectActivityCount -} from '../reducers/activities.selectors'; -import { addActivity as actualAddActivity } from '../actions/editActivity'; +} from '../../reducers/activities.selectors'; +import { addActivity as actualAddActivity } from '../../actions/editActivity'; const SecondaryNav = ({ activityCount, addActivity, location, useParams }) => { const { activityIndex } = useParams(); diff --git a/web/src/components/SecondaryNav.test.js b/web/src/layout/nav/SecondaryNav.test.js similarity index 97% rename from web/src/components/SecondaryNav.test.js rename to web/src/layout/nav/SecondaryNav.test.js index a0e87281c4..b2bfd5be65 100644 --- a/web/src/components/SecondaryNav.test.js +++ b/web/src/layout/nav/SecondaryNav.test.js @@ -5,7 +5,7 @@ import { mapStateToProps, mapDispatchToProps } from './SecondaryNav'; -import { addActivity } from '../actions/editActivity'; +import { addActivity } from '../../actions/editActivity'; const defaultProps = { activityCount: 2, diff --git a/web/src/containers/Sidebar.js b/web/src/layout/nav/Sidebar.js similarity index 100% rename from web/src/containers/Sidebar.js rename to web/src/layout/nav/Sidebar.js diff --git a/web/src/containers/Sidebar.test.js b/web/src/layout/nav/Sidebar.test.js similarity index 100% rename from web/src/containers/Sidebar.test.js rename to web/src/layout/nav/Sidebar.test.js From 15203a502186ea7ead68ae886c6a14c6f0372753 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Fri, 18 Mar 2022 11:05:12 -0400 Subject: [PATCH 02/29] updated tests --- web/src/components/Section.js | 2 +- web/src/components/Wrapper.js | 4 ++-- web/src/containers/ApdApplication.js | 2 +- web/src/containers/ApdPageRoutes.js | 2 +- web/src/containers/activity/EntryDetails.js | 2 +- .../header}/__snapshots__/ApdHeader.test.js.snap | 0 .../header}/__snapshots__/DashboardButton.test.js.snap | 0 .../header}/__snapshots__/Header.test.js.snap | 0 .../header}/__snapshots__/HeaderSaveMessage.test.js.snap | 0 .../{containers => layout/nav}/__snapshots__/Nav.test.js.snap | 0 .../nav}/__snapshots__/Sidebar.test.js.snap | 0 11 files changed, 6 insertions(+), 6 deletions(-) rename web/src/{containers => layout/header}/__snapshots__/ApdHeader.test.js.snap (100%) rename web/src/{components => layout/header}/__snapshots__/DashboardButton.test.js.snap (100%) rename web/src/{components => layout/header}/__snapshots__/Header.test.js.snap (100%) rename web/src/{components => layout/header}/__snapshots__/HeaderSaveMessage.test.js.snap (100%) rename web/src/{containers => layout/nav}/__snapshots__/Nav.test.js.snap (100%) rename web/src/{containers => layout/nav}/__snapshots__/Sidebar.test.js.snap (100%) diff --git a/web/src/components/Section.js b/web/src/components/Section.js index d3e5d7e148..ddd76f57fe 100644 --- a/web/src/components/Section.js +++ b/web/src/components/Section.js @@ -4,7 +4,7 @@ import React from 'react'; import { titleCase } from 'title-case'; import Instruction from './Instruction'; import { t } from '../i18n'; -import SecondaryNav from './SecondaryNav'; +import SecondaryNav from '../layout/nav/SecondaryNav'; const Section = ({ children, id, resource }) => { const title = t([resource, 'title'], { defaultValue: false }); diff --git a/web/src/components/Wrapper.js b/web/src/components/Wrapper.js index c2d510c86e..9939a24a0c 100644 --- a/web/src/components/Wrapper.js +++ b/web/src/components/Wrapper.js @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React from 'react'; import { withRouter } from 'react-router'; -import Header from './Header'; -import Footer from './Footer'; +import Header from '../layout/header/Header'; +import Footer from '../layout/footer/Footer'; import routes from '../routes'; import SessionEndingAlert from '../containers/SessionEndingAlert'; diff --git a/web/src/containers/ApdApplication.js b/web/src/containers/ApdApplication.js index 7c4b7cc673..3c3ed78859 100644 --- a/web/src/containers/ApdApplication.js +++ b/web/src/containers/ApdApplication.js @@ -9,7 +9,7 @@ import { } from 'react-router-dom'; import TagManager from 'react-gtm-module'; -import Sidebar from './Sidebar'; +import Sidebar from '../layout/nav/Sidebar'; import UnexpectedError from './UnexpectedError'; import { setApdToSelectOnLoad, selectApd } from '../actions/app'; diff --git a/web/src/containers/ApdPageRoutes.js b/web/src/containers/ApdPageRoutes.js index 10be442003..30098fd85e 100644 --- a/web/src/containers/ApdPageRoutes.js +++ b/web/src/containers/ApdPageRoutes.js @@ -7,7 +7,7 @@ import { useRouteMatch as actualUseRouteMatch } from 'react-router-dom'; -import ApdHeader from './ApdHeader'; +import ApdHeader from '../layout/header/ApdHeader'; import Activities from './activity/All'; import EntryPage from './activity/EntryPage'; import AssurancesAndCompliance from './AssurancesAndCompliance'; diff --git a/web/src/containers/activity/EntryDetails.js b/web/src/containers/activity/EntryDetails.js index 88de4e70d5..489e577e23 100644 --- a/web/src/containers/activity/EntryDetails.js +++ b/web/src/containers/activity/EntryDetails.js @@ -6,7 +6,7 @@ import { connect } from 'react-redux'; import { titleCase } from 'title-case'; import { selectActivityByIndex } from '../../reducers/activities.selectors'; import { removeActivity } from '../../actions/editActivity'; -import NavLink from '../../components/NavLink'; +import NavLink from '../../layout/nav/NavLink'; import { t } from '../../i18n'; import DeleteModal from '../../components/DeleteModal'; diff --git a/web/src/containers/__snapshots__/ApdHeader.test.js.snap b/web/src/layout/header/__snapshots__/ApdHeader.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdHeader.test.js.snap rename to web/src/layout/header/__snapshots__/ApdHeader.test.js.snap diff --git a/web/src/components/__snapshots__/DashboardButton.test.js.snap b/web/src/layout/header/__snapshots__/DashboardButton.test.js.snap similarity index 100% rename from web/src/components/__snapshots__/DashboardButton.test.js.snap rename to web/src/layout/header/__snapshots__/DashboardButton.test.js.snap diff --git a/web/src/components/__snapshots__/Header.test.js.snap b/web/src/layout/header/__snapshots__/Header.test.js.snap similarity index 100% rename from web/src/components/__snapshots__/Header.test.js.snap rename to web/src/layout/header/__snapshots__/Header.test.js.snap diff --git a/web/src/components/__snapshots__/HeaderSaveMessage.test.js.snap b/web/src/layout/header/__snapshots__/HeaderSaveMessage.test.js.snap similarity index 100% rename from web/src/components/__snapshots__/HeaderSaveMessage.test.js.snap rename to web/src/layout/header/__snapshots__/HeaderSaveMessage.test.js.snap diff --git a/web/src/containers/__snapshots__/Nav.test.js.snap b/web/src/layout/nav/__snapshots__/Nav.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/Nav.test.js.snap rename to web/src/layout/nav/__snapshots__/Nav.test.js.snap diff --git a/web/src/containers/__snapshots__/Sidebar.test.js.snap b/web/src/layout/nav/__snapshots__/Sidebar.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/Sidebar.test.js.snap rename to web/src/layout/nav/__snapshots__/Sidebar.test.js.snap From d5d03ea7fccaa8754f169211fece0ba1df19ce1f Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 21 Mar 2022 10:14:57 -0400 Subject: [PATCH 03/29] dashboard refactor --- .../fed-dashboard}/FederalDashboard.js | 25 +++++++++------- .../fed-dashboard}/FederalDashboard.test.js | 6 ++-- .../state-dashboard}/AffiliationStatus.js | 10 +++---- .../AffiliationStatus.story.js | 0 .../AffiliationStatus.test.js | 29 +++++++++++++++---- .../dashboard/state-dashboard}/ApdList.js | 19 +++++++----- .../state-dashboard}/ApdList.test.js | 27 ++++++----------- .../state-dashboard}/StateDashboard.js | 10 +++---- .../state-dashboard}/StateDashboard.test.js | 6 ++-- 9 files changed, 73 insertions(+), 59 deletions(-) rename web/src/{containers => pages/dashboard/fed-dashboard}/FederalDashboard.js (56%) rename web/src/{containers => pages/dashboard/fed-dashboard}/FederalDashboard.test.js (78%) rename web/src/{components => pages/dashboard/state-dashboard}/AffiliationStatus.js (94%) rename web/src/{components => pages/dashboard/state-dashboard}/AffiliationStatus.story.js (100%) rename web/src/{components => pages/dashboard/state-dashboard}/AffiliationStatus.test.js (80%) rename web/src/{components => pages/dashboard/state-dashboard}/ApdList.js (92%) rename web/src/{components => pages/dashboard/state-dashboard}/ApdList.test.js (84%) rename web/src/{containers => pages/dashboard/state-dashboard}/StateDashboard.js (77%) rename web/src/{containers => pages/dashboard/state-dashboard}/StateDashboard.test.js (81%) diff --git a/web/src/containers/FederalDashboard.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js similarity index 56% rename from web/src/containers/FederalDashboard.js rename to web/src/pages/dashboard/fed-dashboard/FederalDashboard.js index 1ea166c1b2..fab9a7300b 100644 --- a/web/src/containers/FederalDashboard.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js @@ -2,26 +2,29 @@ import PropType from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import FederalAdmin from "./admin/FederalAdmin"; -import { ApprovalStatus } from '../components/AffiliationStatus'; +import FederalAdmin from '../../../containers/admin/FederalAdmin'; +import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; -import { getUserStateOrTerritoryStatus } from '../reducers/user.selector'; -import { AFFILIATION_STATUSES } from '../constants'; +import { getUserStateOrTerritoryStatus } from '../../../reducers/user.selector'; +import { AFFILIATION_STATUSES } from '../../../constants'; -const FederalDashboard = ({ approvalStatus }) => { +const FederalDashboard = ({ approvalStatus }) => { const isApproved = approvalStatus === AFFILIATION_STATUSES.APPROVED; - + return (

    Federal Administrator Portal

    - {isApproved && } - {!isApproved && } + {isApproved && } + {!isApproved && ( + + )}
    ); }; diff --git a/web/src/containers/FederalDashboard.test.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js similarity index 78% rename from web/src/containers/FederalDashboard.test.js rename to web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js index 9d33c99aa9..5f0be2e8b6 100644 --- a/web/src/containers/FederalDashboard.test.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js @@ -1,9 +1,9 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { AFFILIATION_STATUSES } from '../constants'; +import { AFFILIATION_STATUSES } from '../../../constants'; -import FederalAdmin from './admin/FederalAdmin'; -import { ApprovalStatus } from '../components/AffiliationStatus'; +import FederalAdmin from '../../../containers/admin/FederalAdmin'; +import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; import { plain as FederalDashboard } from './FederalDashboard'; diff --git a/web/src/components/AffiliationStatus.js b/web/src/pages/dashboard/state-dashboard/AffiliationStatus.js similarity index 94% rename from web/src/components/AffiliationStatus.js rename to web/src/pages/dashboard/state-dashboard/AffiliationStatus.js index 8e695977e8..ec58f56cfb 100644 --- a/web/src/components/AffiliationStatus.js +++ b/web/src/pages/dashboard/state-dashboard/AffiliationStatus.js @@ -2,14 +2,14 @@ import PropType from 'prop-types'; import React, { useState } from 'react'; import { connect } from 'react-redux'; -import Instruction from './Instruction'; +import Instruction from '../../../components/Instruction'; import { getUserStateOrTerritory, getUserStateOrTerritoryStatus -} from '../reducers/user.selector'; -import { AFFILIATION_STATUSES } from '../constants'; -import UpgradeBrowser from './UpgradeBrowser'; -import axios from '../util/api'; +} from '../../../reducers/user.selector'; +import { AFFILIATION_STATUSES } from '../../../constants'; +import UpgradeBrowser from '../../../components/UpgradeBrowser'; +import axios from '../../../util/api'; const ApprovalStatus = ({ status, mailTo, administratorType }) => { const options = { diff --git a/web/src/components/AffiliationStatus.story.js b/web/src/pages/dashboard/state-dashboard/AffiliationStatus.story.js similarity index 100% rename from web/src/components/AffiliationStatus.story.js rename to web/src/pages/dashboard/state-dashboard/AffiliationStatus.story.js diff --git a/web/src/components/AffiliationStatus.test.js b/web/src/pages/dashboard/state-dashboard/AffiliationStatus.test.js similarity index 80% rename from web/src/components/AffiliationStatus.test.js rename to web/src/pages/dashboard/state-dashboard/AffiliationStatus.test.js index 329ed42191..d25e415659 100644 --- a/web/src/components/AffiliationStatus.test.js +++ b/web/src/pages/dashboard/state-dashboard/AffiliationStatus.test.js @@ -5,7 +5,7 @@ import { plain as AffiliationStatus, ApprovalStatus } from './AffiliationStatus'; -import { AFFILIATION_STATUSES } from '../constants'; +import { AFFILIATION_STATUSES } from '../../../constants'; const { DENIED, REQUESTED, REVOKED } = AFFILIATION_STATUSES; @@ -63,7 +63,11 @@ describe('', () => { it('displays a mailto link', () => { render( - + ); const aTag = screen.getByText('State Administrator', { selector: 'a' }); expect(aTag).toBeInTheDocument(); @@ -72,19 +76,32 @@ describe('', () => { it('displays the status text', () => { render( - + ); - const statusText = screen.getByText(requestedStatusOptions.status, { selector: 'h3' }); + const statusText = screen.getByText(requestedStatusOptions.status, { + selector: 'h3' + }); expect(statusText).toBeInTheDocument(); }); it('displays the img correctly', () => { render( - + ); const img = screen.getByAltText(requestedStatusOptions.alt); expect(img).toBeInTheDocument(); expect(img).toHaveAttribute('src', requestedStatusOptions.src); - expect(img).toHaveAttribute('width', requestedStatusOptions.width.toString()); + expect(img).toHaveAttribute( + 'width', + requestedStatusOptions.width.toString() + ); }); }); diff --git a/web/src/components/ApdList.js b/web/src/pages/dashboard/state-dashboard/ApdList.js similarity index 92% rename from web/src/components/ApdList.js rename to web/src/pages/dashboard/state-dashboard/ApdList.js index daeb7ec5a6..8487464dfb 100644 --- a/web/src/components/ApdList.js +++ b/web/src/pages/dashboard/state-dashboard/ApdList.js @@ -3,14 +3,17 @@ import PropType from 'prop-types'; import React, { useState } from 'react'; import { connect } from 'react-redux'; -import Icon, { File, faPlusCircle } from './Icons'; -import Instruction from './Instruction'; -import DeleteModal from './DeleteModal'; -import { createApd, deleteApd, selectApd } from '../actions/app'; -import { t } from '../i18n'; -import { selectApdDashboard, selectApds } from '../reducers/apd.selectors'; -import UpgradeBrowser from './UpgradeBrowser'; -import Loading from './Loading'; +import Icon, { File, faPlusCircle } from '../../../components/Icons'; +import Instruction from '../../../components/Instruction'; +import DeleteModal from '../../../components/DeleteModal'; +import { createApd, deleteApd, selectApd } from '../../../actions/app'; +import { t } from '../../../i18n'; +import { + selectApdDashboard, + selectApds +} from '../../../reducers/apd.selectors'; +import UpgradeBrowser from '../../../components/UpgradeBrowser'; +import Loading from '../../../components/Loading'; const ApdList = ({ apds, diff --git a/web/src/components/ApdList.test.js b/web/src/pages/dashboard/state-dashboard/ApdList.test.js similarity index 84% rename from web/src/components/ApdList.test.js rename to web/src/pages/dashboard/state-dashboard/ApdList.test.js index ce2e59bc5f..8a5e7439e9 100644 --- a/web/src/components/ApdList.test.js +++ b/web/src/pages/dashboard/state-dashboard/ApdList.test.js @@ -1,8 +1,8 @@ import React from 'react'; import ApdList from './ApdList'; -import { renderWithConnection } from '../shared/apd-testing-library'; -import mockAxios from '../util/api'; -import { AFFILIATION_STATUSES } from '../constants'; +import { renderWithConnection } from '../../../shared/apd-testing-library'; +import mockAxios from '../../../util/api'; +import { AFFILIATION_STATUSES } from '../../../constants'; jest.mock('../util/api', () => ({ get: jest.fn(), @@ -48,11 +48,8 @@ describe('', () => { user: { data: { state: { id: 'mo' }, - states: { 'mo': AFFILIATION_STATUSES.APPROVED }, - activities: [ - "view-document", - "edit-document", - ] + states: { mo: AFFILIATION_STATUSES.APPROVED }, + activities: ['view-document', 'edit-document'] } } } @@ -102,10 +99,7 @@ describe('', () => { data: { state: { id: 'mo' }, states: { state_id: AFFILIATION_STATUSES.APPROVED }, - activities: [ - "view-document", - "edit-document", - ] + activities: ['view-document', 'edit-document'] } }, apd: { @@ -149,10 +143,7 @@ describe('', () => { affiliations: [ { state_id: 'mo', status: AFFILIATION_STATUSES.APPROVED } ], - activities: [ - "not-view-document", - "not-edit-document", - ] + activities: ['not-view-document', 'not-edit-document'] } } } @@ -165,6 +156,6 @@ describe('', () => { }); }); -// Deleted tests here because the role is not the relevant factor. This is driven by -// activities, so changing those is more important than a specific role. + // Deleted tests here because the role is not the relevant factor. This is driven by + // activities, so changing those is more important than a specific role. }); diff --git a/web/src/containers/StateDashboard.js b/web/src/pages/dashboard/state-dashboard/StateDashboard.js similarity index 77% rename from web/src/containers/StateDashboard.js rename to web/src/pages/dashboard/state-dashboard/StateDashboard.js index f0a5db0857..3d3c01a39a 100644 --- a/web/src/containers/StateDashboard.js +++ b/web/src/pages/dashboard/state-dashboard/StateDashboard.js @@ -3,10 +3,10 @@ import React, { Fragment } from 'react'; import { connect } from 'react-redux'; import TagManager from 'react-gtm-module'; -import ApdList from '../components/ApdList'; -import AffiliationStatus from '../components/AffiliationStatus'; -import { getUserStateOrTerritoryStatus } from '../reducers/user.selector'; -import { AFFILIATION_STATUSES } from '../constants'; +import ApdList from './ApdList'; +import AffiliationStatus from './AffiliationStatus'; +import { getUserStateOrTerritoryStatus } from '../../../reducers/user.selector'; +import { AFFILIATION_STATUSES } from '../../../constants'; const StateDashboard = ({ state, role, approvalStatus }) => { TagManager.dataLayer({ @@ -34,7 +34,7 @@ StateDashboard.propTypes = { const mapStateToProps = state => ({ // Todo: Update this to have a better default state - state: state.user.data.state || {name: 'Loading', id: ''}, + state: state.user.data.state || { name: 'Loading', id: '' }, role: state.user.data.role || 'Pending Role', approvalStatus: getUserStateOrTerritoryStatus(state) || AFFILIATION_STATUSES.REQUESTED diff --git a/web/src/containers/StateDashboard.test.js b/web/src/pages/dashboard/state-dashboard/StateDashboard.test.js similarity index 81% rename from web/src/containers/StateDashboard.test.js rename to web/src/pages/dashboard/state-dashboard/StateDashboard.test.js index 036bf14ea8..960b545503 100644 --- a/web/src/containers/StateDashboard.test.js +++ b/web/src/pages/dashboard/state-dashboard/StateDashboard.test.js @@ -1,9 +1,9 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { AFFILIATION_STATUSES } from '../constants'; +import { AFFILIATION_STATUSES } from '../../../constants'; -import ApdList from '../components/ApdList'; -import AffiliationStatus from '../components/AffiliationStatus'; +import ApdList from './ApdList'; +import AffiliationStatus from './AffiliationStatus'; import { plain as StateDashboard } from './StateDashboard'; From f64001d03bfd219924f61bce38f8eb82fcf8cfd0 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 21 Mar 2022 10:35:23 -0400 Subject: [PATCH 04/29] update tests --- web/src/containers/Dashboard.js | 4 ++-- web/src/pages/dashboard/state-dashboard/ApdList.test.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/web/src/containers/Dashboard.js b/web/src/containers/Dashboard.js index 33925a77e0..9337b6b334 100644 --- a/web/src/containers/Dashboard.js +++ b/web/src/containers/Dashboard.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; import { getIsFederal } from '../reducers/user.selector'; -import FederalDashboard from './FederalDashboard'; -import StateDashboard from './StateDashboard'; +import FederalDashboard from '../pages/dashboard/fed-dashboard/FederalDashboard'; +import StateDashboard from '../pages/dashboard/state-dashboard/StateDashboard'; const Dashboard = ({ isFederal, ...rest }) => isFederal ? : ; diff --git a/web/src/pages/dashboard/state-dashboard/ApdList.test.js b/web/src/pages/dashboard/state-dashboard/ApdList.test.js index 8a5e7439e9..c808e0892e 100644 --- a/web/src/pages/dashboard/state-dashboard/ApdList.test.js +++ b/web/src/pages/dashboard/state-dashboard/ApdList.test.js @@ -4,7 +4,7 @@ import { renderWithConnection } from '../../../shared/apd-testing-library'; import mockAxios from '../../../util/api'; import { AFFILIATION_STATUSES } from '../../../constants'; -jest.mock('../util/api', () => ({ +jest.mock('../../../util/api', () => ({ get: jest.fn(), post: jest.fn(), patch: jest.fn(), From 88b5e1c58c21c48794a050f6347e9b349a941b67 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 21 Mar 2022 12:28:52 -0400 Subject: [PATCH 05/29] added login refactor --- .../login}/AuthenticationForm.js | 0 .../login}/AuthenticationForm.story.js | 2 +- .../login}/AuthenticationForm.test.js | 0 .../login}/ConsentBanner.js | 0 .../login}/ConsentBanner.story.js | 0 .../login}/ConsentBanner.test.js | 0 web/src/{containers => pages/login}/Login.js | 8 ++++---- .../{containers => pages/login}/Login.test.js | 2 +- .../{components => pages/login}/LoginForm.js | 0 .../login}/LoginForm.story.js | 2 +- .../login}/LoginForm.test.js | 0 .../login}/LoginGroupError.js | 2 +- .../login}/LoginGroupError.story.js | 0 .../login}/LoginGroupError.test.js | 0 .../login}/LoginLocked.js | 0 .../login}/LoginLocked.story.js | 0 .../login}/LoginLocked.test.js | 0 .../{containers => pages/login}/LoginMFA.js | 2 +- .../login}/LoginMFA.test.js | 0 .../login}/LoginMFAEnroll.js | 0 .../login}/LoginMFAEnroll.test.js | 0 .../login}/LoginMFAEnrollPhoneNumber.js | 0 .../login}/LoginMFAEnrollPhoneNumber.test.js | 0 .../login}/LoginMFAVerifyAuthApp.js | 0 .../login}/LoginMFAVerifyAuthApp.test.js | 0 .../login}/LoginPageRoutes.js | 20 +++++++++---------- .../login}/LoginPageRoutes.test.js | 0 web/src/{containers => pages/login}/Logout.js | 2 +- .../login}/Logout.test.js | 0 .../login}/SelectAffiliation.js | 8 ++++---- .../login}/SelectAffiliation.test.js | 0 .../login}/StateAccessRequest.js | 6 +++--- .../login}/StateAccessRequest.test.js | 0 .../login}/StateAccessRequestConfirmation.js | 0 .../StateAccessRequestConfirmation.test.js | 0 35 files changed, 27 insertions(+), 27 deletions(-) rename web/src/{components => pages/login}/AuthenticationForm.js (100%) rename web/src/{components => pages/login}/AuthenticationForm.story.js (91%) rename web/src/{components => pages/login}/AuthenticationForm.test.js (100%) rename web/src/{components => pages/login}/ConsentBanner.js (100%) rename web/src/{components => pages/login}/ConsentBanner.story.js (100%) rename web/src/{components => pages/login}/ConsentBanner.test.js (100%) rename web/src/{containers => pages/login}/Login.js (95%) rename web/src/{containers => pages/login}/Login.test.js (99%) rename web/src/{components => pages/login}/LoginForm.js (100%) rename web/src/{components => pages/login}/LoginForm.story.js (90%) rename web/src/{components => pages/login}/LoginForm.test.js (100%) rename web/src/{components => pages/login}/LoginGroupError.js (96%) rename web/src/{components => pages/login}/LoginGroupError.story.js (100%) rename web/src/{components => pages/login}/LoginGroupError.test.js (100%) rename web/src/{components => pages/login}/LoginLocked.js (100%) rename web/src/{components => pages/login}/LoginLocked.story.js (100%) rename web/src/{components => pages/login}/LoginLocked.test.js (100%) rename web/src/{containers => pages/login}/LoginMFA.js (96%) rename web/src/{containers => pages/login}/LoginMFA.test.js (100%) rename web/src/{components => pages/login}/LoginMFAEnroll.js (100%) rename web/src/{components => pages/login}/LoginMFAEnroll.test.js (100%) rename web/src/{components => pages/login}/LoginMFAEnrollPhoneNumber.js (100%) rename web/src/{components => pages/login}/LoginMFAEnrollPhoneNumber.test.js (100%) rename web/src/{components => pages/login}/LoginMFAVerifyAuthApp.js (100%) rename web/src/{components => pages/login}/LoginMFAVerifyAuthApp.test.js (100%) rename web/src/{containers => pages/login}/LoginPageRoutes.js (84%) rename web/src/{containers => pages/login}/LoginPageRoutes.test.js (100%) rename web/src/{containers => pages/login}/Logout.js (94%) rename web/src/{containers => pages/login}/Logout.test.js (100%) rename web/src/{containers => pages/login}/SelectAffiliation.js (93%) rename web/src/{containers => pages/login}/SelectAffiliation.test.js (100%) rename web/src/{containers => pages/login}/StateAccessRequest.js (98%) rename web/src/{containers => pages/login}/StateAccessRequest.test.js (100%) rename web/src/{containers => pages/login}/StateAccessRequestConfirmation.js (100%) rename web/src/{containers => pages/login}/StateAccessRequestConfirmation.test.js (100%) diff --git a/web/src/components/AuthenticationForm.js b/web/src/pages/login/AuthenticationForm.js similarity index 100% rename from web/src/components/AuthenticationForm.js rename to web/src/pages/login/AuthenticationForm.js diff --git a/web/src/components/AuthenticationForm.story.js b/web/src/pages/login/AuthenticationForm.story.js similarity index 91% rename from web/src/components/AuthenticationForm.story.js rename to web/src/pages/login/AuthenticationForm.story.js index b8d2a556d8..63305aa20d 100644 --- a/web/src/components/AuthenticationForm.story.js +++ b/web/src/pages/login/AuthenticationForm.story.js @@ -1,6 +1,6 @@ import React from 'react'; import AuthenticationForm from './AuthenticationForm'; -import * as CardFormStory from './CardForm.story'; +import * as CardFormStory from '../../components/CardForm.story'; export default { title: 'AuthenticationForm', diff --git a/web/src/components/AuthenticationForm.test.js b/web/src/pages/login/AuthenticationForm.test.js similarity index 100% rename from web/src/components/AuthenticationForm.test.js rename to web/src/pages/login/AuthenticationForm.test.js diff --git a/web/src/components/ConsentBanner.js b/web/src/pages/login/ConsentBanner.js similarity index 100% rename from web/src/components/ConsentBanner.js rename to web/src/pages/login/ConsentBanner.js diff --git a/web/src/components/ConsentBanner.story.js b/web/src/pages/login/ConsentBanner.story.js similarity index 100% rename from web/src/components/ConsentBanner.story.js rename to web/src/pages/login/ConsentBanner.story.js diff --git a/web/src/components/ConsentBanner.test.js b/web/src/pages/login/ConsentBanner.test.js similarity index 100% rename from web/src/components/ConsentBanner.test.js rename to web/src/pages/login/ConsentBanner.test.js diff --git a/web/src/containers/Login.js b/web/src/pages/login/Login.js similarity index 95% rename from web/src/containers/Login.js rename to web/src/pages/login/Login.js index e53881e360..05629084be 100644 --- a/web/src/containers/Login.js +++ b/web/src/pages/login/Login.js @@ -2,11 +2,11 @@ import { TextField, Alert } from '@cmsgov/design-system'; import PropTypes from 'prop-types'; import React, { useState, Fragment, useEffect } from 'react'; -import LoginForm from '../components/LoginForm'; -import Password from '../components/PasswordWithMeter'; -import UpgradeBrowser from '../components/UpgradeBrowser'; +import LoginForm from './LoginForm'; +import Password from '../../components/PasswordWithMeter'; +import UpgradeBrowser from '../../components/UpgradeBrowser'; -import axios, { apiUrl } from '../util/api'; +import axios, { apiUrl } from '../../util/api'; const Login = ({ hasEverLoggedOn, errorMessage, fetching, login }) => { const [username, setUsername] = useState(''); diff --git a/web/src/containers/Login.test.js b/web/src/pages/login/Login.test.js similarity index 99% rename from web/src/containers/Login.test.js rename to web/src/pages/login/Login.test.js index cac8a2c1be..67ef33d58a 100644 --- a/web/src/containers/Login.test.js +++ b/web/src/pages/login/Login.test.js @@ -9,7 +9,7 @@ import { import Login from './Login'; import MockAdapter from 'axios-mock-adapter'; -import axios from '../util/api'; +import axios from '../../util/api'; const defaultProps = { hasEverLoggedOn: false, diff --git a/web/src/components/LoginForm.js b/web/src/pages/login/LoginForm.js similarity index 100% rename from web/src/components/LoginForm.js rename to web/src/pages/login/LoginForm.js diff --git a/web/src/components/LoginForm.story.js b/web/src/pages/login/LoginForm.story.js similarity index 90% rename from web/src/components/LoginForm.story.js rename to web/src/pages/login/LoginForm.story.js index 47b56bcab1..b15beaa9ac 100644 --- a/web/src/components/LoginForm.story.js +++ b/web/src/pages/login/LoginForm.story.js @@ -1,6 +1,6 @@ import React from 'react'; import LoginForm from './LoginForm'; -import * as CardFormStory from './CardForm.story'; +import * as CardFormStory from '../../components/CardForm.story'; export default { title: 'LoginForm', diff --git a/web/src/components/LoginForm.test.js b/web/src/pages/login/LoginForm.test.js similarity index 100% rename from web/src/components/LoginForm.test.js rename to web/src/pages/login/LoginForm.test.js diff --git a/web/src/components/LoginGroupError.js b/web/src/pages/login/LoginGroupError.js similarity index 96% rename from web/src/components/LoginGroupError.js rename to web/src/pages/login/LoginGroupError.js index c80749caff..7a31b95afb 100644 --- a/web/src/components/LoginGroupError.js +++ b/web/src/pages/login/LoginGroupError.js @@ -1,7 +1,7 @@ import React from 'react'; import PropType from 'prop-types'; import { Button } from '@cmsgov/design-system'; -import { apiUrl } from '../util/api'; +import { apiUrl } from '../../util/api'; const LoginGroupError = ({ onCancel }) => { return ( diff --git a/web/src/components/LoginGroupError.story.js b/web/src/pages/login/LoginGroupError.story.js similarity index 100% rename from web/src/components/LoginGroupError.story.js rename to web/src/pages/login/LoginGroupError.story.js diff --git a/web/src/components/LoginGroupError.test.js b/web/src/pages/login/LoginGroupError.test.js similarity index 100% rename from web/src/components/LoginGroupError.test.js rename to web/src/pages/login/LoginGroupError.test.js diff --git a/web/src/components/LoginLocked.js b/web/src/pages/login/LoginLocked.js similarity index 100% rename from web/src/components/LoginLocked.js rename to web/src/pages/login/LoginLocked.js diff --git a/web/src/components/LoginLocked.story.js b/web/src/pages/login/LoginLocked.story.js similarity index 100% rename from web/src/components/LoginLocked.story.js rename to web/src/pages/login/LoginLocked.story.js diff --git a/web/src/components/LoginLocked.test.js b/web/src/pages/login/LoginLocked.test.js similarity index 100% rename from web/src/components/LoginLocked.test.js rename to web/src/pages/login/LoginLocked.test.js diff --git a/web/src/containers/LoginMFA.js b/web/src/pages/login/LoginMFA.js similarity index 96% rename from web/src/containers/LoginMFA.js rename to web/src/pages/login/LoginMFA.js index 45200d095d..97c0f91c35 100644 --- a/web/src/containers/LoginMFA.js +++ b/web/src/pages/login/LoginMFA.js @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React, { useState } from 'react'; -import AuthenticationForm from '../components/AuthenticationForm'; +import AuthenticationForm from './AuthenticationForm'; const LoginMFA = ({ saveAction, diff --git a/web/src/containers/LoginMFA.test.js b/web/src/pages/login/LoginMFA.test.js similarity index 100% rename from web/src/containers/LoginMFA.test.js rename to web/src/pages/login/LoginMFA.test.js diff --git a/web/src/components/LoginMFAEnroll.js b/web/src/pages/login/LoginMFAEnroll.js similarity index 100% rename from web/src/components/LoginMFAEnroll.js rename to web/src/pages/login/LoginMFAEnroll.js diff --git a/web/src/components/LoginMFAEnroll.test.js b/web/src/pages/login/LoginMFAEnroll.test.js similarity index 100% rename from web/src/components/LoginMFAEnroll.test.js rename to web/src/pages/login/LoginMFAEnroll.test.js diff --git a/web/src/components/LoginMFAEnrollPhoneNumber.js b/web/src/pages/login/LoginMFAEnrollPhoneNumber.js similarity index 100% rename from web/src/components/LoginMFAEnrollPhoneNumber.js rename to web/src/pages/login/LoginMFAEnrollPhoneNumber.js diff --git a/web/src/components/LoginMFAEnrollPhoneNumber.test.js b/web/src/pages/login/LoginMFAEnrollPhoneNumber.test.js similarity index 100% rename from web/src/components/LoginMFAEnrollPhoneNumber.test.js rename to web/src/pages/login/LoginMFAEnrollPhoneNumber.test.js diff --git a/web/src/components/LoginMFAVerifyAuthApp.js b/web/src/pages/login/LoginMFAVerifyAuthApp.js similarity index 100% rename from web/src/components/LoginMFAVerifyAuthApp.js rename to web/src/pages/login/LoginMFAVerifyAuthApp.js diff --git a/web/src/components/LoginMFAVerifyAuthApp.test.js b/web/src/pages/login/LoginMFAVerifyAuthApp.test.js similarity index 100% rename from web/src/components/LoginMFAVerifyAuthApp.test.js rename to web/src/pages/login/LoginMFAVerifyAuthApp.test.js diff --git a/web/src/containers/LoginPageRoutes.js b/web/src/pages/login/LoginPageRoutes.js similarity index 84% rename from web/src/containers/LoginPageRoutes.js rename to web/src/pages/login/LoginPageRoutes.js index 558fe33d43..86350e0273 100644 --- a/web/src/containers/LoginPageRoutes.js +++ b/web/src/pages/login/LoginPageRoutes.js @@ -6,16 +6,16 @@ import { useRouteMatch as actualUseRouteMatch } from 'react-router-dom'; -import Login from './Login'; -import LoginLocked from '../components/LoginLocked'; -import LoginGroupError from '../components/LoginGroupError'; -import LoginMFAEnroll from '../components/LoginMFAEnroll'; -import LoginMFAEnrollPhoneNumber from '../components/LoginMFAEnrollPhoneNumber'; -import LoginMFAVerifyAuthApp from '../components/LoginMFAVerifyAuthApp'; -import LoginMFA from './LoginMFA'; -import StateAccessRequest from './StateAccessRequest'; -import StateAccessRequestConfirmation from './StateAccessRequestConfirmation'; -import SelectAffiliation from './SelectAffiliation'; +import Login from '../../containers/Login'; +import LoginLocked from '../../components/LoginLocked'; +import LoginGroupError from '../../components/LoginGroupError'; +import LoginMFAEnroll from '../../components/LoginMFAEnroll'; +import LoginMFAEnrollPhoneNumber from '../../components/LoginMFAEnrollPhoneNumber'; +import LoginMFAVerifyAuthApp from '../../components/LoginMFAVerifyAuthApp'; +import LoginMFA from '../../containers/LoginMFA'; +import StateAccessRequest from '../../containers/StateAccessRequest'; +import StateAccessRequestConfirmation from '../../containers/StateAccessRequestConfirmation'; +import SelectAffiliation from '../../containers/SelectAffiliation'; const LoginPageRoutes = ({ useRouteMatch, diff --git a/web/src/containers/LoginPageRoutes.test.js b/web/src/pages/login/LoginPageRoutes.test.js similarity index 100% rename from web/src/containers/LoginPageRoutes.test.js rename to web/src/pages/login/LoginPageRoutes.test.js diff --git a/web/src/containers/Logout.js b/web/src/pages/login/Logout.js similarity index 94% rename from web/src/containers/Logout.js rename to web/src/pages/login/Logout.js index 7070f8ba49..eb69bfdf34 100644 --- a/web/src/containers/Logout.js +++ b/web/src/pages/login/Logout.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { useHistory } from 'react-router-dom'; -import { logout as dispatchLogout } from '../actions/auth'; +import { logout as dispatchLogout } from '../../actions/auth'; const Logout = ({ authenticated, logout }) => { const history = useHistory(); diff --git a/web/src/containers/Logout.test.js b/web/src/pages/login/Logout.test.js similarity index 100% rename from web/src/containers/Logout.test.js rename to web/src/pages/login/Logout.test.js diff --git a/web/src/containers/SelectAffiliation.js b/web/src/pages/login/SelectAffiliation.js similarity index 93% rename from web/src/containers/SelectAffiliation.js rename to web/src/pages/login/SelectAffiliation.js index c088bdad84..a71e683ac5 100644 --- a/web/src/containers/SelectAffiliation.js +++ b/web/src/pages/login/SelectAffiliation.js @@ -4,12 +4,12 @@ import { connect } from 'react-redux'; import { useHistory } from 'react-router-dom'; import { ChoiceList } from '@cmsgov/design-system'; -import CardForm from '../components/CardForm'; +import CardForm from '../../components/CardForm'; -import { STATES } from '../util/states'; -import axios from '../util/api'; +import { STATES } from '../../util/states'; +import axios from '../../util/api'; -import { selectAffiliation } from '../actions/auth'; +import { selectAffiliation } from '../../actions/auth'; const statesWithFederal = [...STATES, { id: 'fd', name: 'Federal' }]; diff --git a/web/src/containers/SelectAffiliation.test.js b/web/src/pages/login/SelectAffiliation.test.js similarity index 100% rename from web/src/containers/SelectAffiliation.test.js rename to web/src/pages/login/SelectAffiliation.test.js diff --git a/web/src/containers/StateAccessRequest.js b/web/src/pages/login/StateAccessRequest.js similarity index 98% rename from web/src/containers/StateAccessRequest.js rename to web/src/pages/login/StateAccessRequest.js index 7cd893c837..3bacb5b689 100644 --- a/web/src/containers/StateAccessRequest.js +++ b/web/src/pages/login/StateAccessRequest.js @@ -2,11 +2,11 @@ import PropTypes from 'prop-types'; import React, { useReducer, Fragment, useState, useEffect } from 'react'; import { Autocomplete, Badge, TextField } from '@cmsgov/design-system'; -import AuthenticationForm from '../components/AuthenticationForm'; +import AuthenticationForm from './AuthenticationForm'; -import { STATES } from '../util/states'; +import { STATES } from '../../util/states'; -import axios from '../util/api'; +import axios from '../../util/api'; const statesWithFederal = [...STATES, { id: 'fd', name: 'Federal' }]; diff --git a/web/src/containers/StateAccessRequest.test.js b/web/src/pages/login/StateAccessRequest.test.js similarity index 100% rename from web/src/containers/StateAccessRequest.test.js rename to web/src/pages/login/StateAccessRequest.test.js diff --git a/web/src/containers/StateAccessRequestConfirmation.js b/web/src/pages/login/StateAccessRequestConfirmation.js similarity index 100% rename from web/src/containers/StateAccessRequestConfirmation.js rename to web/src/pages/login/StateAccessRequestConfirmation.js diff --git a/web/src/containers/StateAccessRequestConfirmation.test.js b/web/src/pages/login/StateAccessRequestConfirmation.test.js similarity index 100% rename from web/src/containers/StateAccessRequestConfirmation.test.js rename to web/src/pages/login/StateAccessRequestConfirmation.test.js From c368ecedf88913697d7a55f665b58c090ac501a7 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 21 Mar 2022 12:59:01 -0400 Subject: [PATCH 06/29] updated tests --- web/src/containers/LoginApplication.js | 4 ++-- web/src/containers/admin/ManageAccount.js | 4 ++-- web/src/pages/login/LoginPageRoutes.js | 20 +++++++++---------- web/src/pages/login/SelectAffiliation.test.js | 2 +- .../pages/login/StateAccessRequest.test.js | 4 ++-- .../__snapshots__/ConsentBanner.test.js.snap | 0 web/src/routes.js | 16 +++++++++++---- 7 files changed, 29 insertions(+), 21 deletions(-) rename web/src/{components => pages/login}/__snapshots__/ConsentBanner.test.js.snap (100%) diff --git a/web/src/containers/LoginApplication.js b/web/src/containers/LoginApplication.js index 680bd04ab8..090164b072 100644 --- a/web/src/containers/LoginApplication.js +++ b/web/src/containers/LoginApplication.js @@ -4,8 +4,8 @@ import React, { useState, useEffect, Fragment } from 'react'; import { connect } from 'react-redux'; import { Redirect, useHistory, useLocation } from 'react-router-dom'; -import LoginPageRoutes from './LoginPageRoutes'; -import ConsentBanner from '../components/ConsentBanner'; +import LoginPageRoutes from '../pages/login/LoginPageRoutes'; +import ConsentBanner from '../pages/login/ConsentBanner'; import Loading from '../components/Loading'; import { MFA_FACTOR_TYPES } from '../constants'; diff --git a/web/src/containers/admin/ManageAccount.js b/web/src/containers/admin/ManageAccount.js index a901900c61..8ff3847811 100644 --- a/web/src/containers/admin/ManageAccount.js +++ b/web/src/containers/admin/ManageAccount.js @@ -9,8 +9,8 @@ import { completeAccessRequest as actualCompleteAccessRequest } from '../../actions/auth'; -import StateAccessRequest from '../StateAccessRequest'; -import StateAccessRequestConfirmation from '../StateAccessRequestConfirmation'; +import StateAccessRequest from '../../pages/login/StateAccessRequest'; +import StateAccessRequestConfirmation from '../../pages/login/StateAccessRequestConfirmation'; import { getIsFedAdmin } from '../../reducers/user.selector'; import { goToDashboard } from '../../actions/app'; import axios from '../../util/api'; diff --git a/web/src/pages/login/LoginPageRoutes.js b/web/src/pages/login/LoginPageRoutes.js index 86350e0273..11fcc1ecc3 100644 --- a/web/src/pages/login/LoginPageRoutes.js +++ b/web/src/pages/login/LoginPageRoutes.js @@ -6,16 +6,16 @@ import { useRouteMatch as actualUseRouteMatch } from 'react-router-dom'; -import Login from '../../containers/Login'; -import LoginLocked from '../../components/LoginLocked'; -import LoginGroupError from '../../components/LoginGroupError'; -import LoginMFAEnroll from '../../components/LoginMFAEnroll'; -import LoginMFAEnrollPhoneNumber from '../../components/LoginMFAEnrollPhoneNumber'; -import LoginMFAVerifyAuthApp from '../../components/LoginMFAVerifyAuthApp'; -import LoginMFA from '../../containers/LoginMFA'; -import StateAccessRequest from '../../containers/StateAccessRequest'; -import StateAccessRequestConfirmation from '../../containers/StateAccessRequestConfirmation'; -import SelectAffiliation from '../../containers/SelectAffiliation'; +import Login from './Login'; +import LoginLocked from './LoginLocked'; +import LoginGroupError from './LoginGroupError'; +import LoginMFAEnroll from './LoginMFAEnroll'; +import LoginMFAEnrollPhoneNumber from './LoginMFAEnrollPhoneNumber'; +import LoginMFAVerifyAuthApp from './LoginMFAVerifyAuthApp'; +import LoginMFA from './LoginMFA'; +import StateAccessRequest from './StateAccessRequest'; +import StateAccessRequestConfirmation from './StateAccessRequestConfirmation'; +import SelectAffiliation from './SelectAffiliation'; const LoginPageRoutes = ({ useRouteMatch, diff --git a/web/src/pages/login/SelectAffiliation.test.js b/web/src/pages/login/SelectAffiliation.test.js index f4cdf15acd..b4691e8a00 100644 --- a/web/src/pages/login/SelectAffiliation.test.js +++ b/web/src/pages/login/SelectAffiliation.test.js @@ -8,7 +8,7 @@ import { import SelectAffiliation from './SelectAffiliation'; import MockAdapter from 'axios-mock-adapter'; -import axios from '../util/api'; +import axios from '../../util/api'; const defaultProps = { currentStateId: 'md', diff --git a/web/src/pages/login/StateAccessRequest.test.js b/web/src/pages/login/StateAccessRequest.test.js index 7e82ce4c1a..dac3d17db4 100644 --- a/web/src/pages/login/StateAccessRequest.test.js +++ b/web/src/pages/login/StateAccessRequest.test.js @@ -5,10 +5,10 @@ import { axe, screen, waitFor -} from '../shared/apd-testing-library'; +} from '../../shared/apd-testing-library'; import StateAccessRequest from './StateAccessRequest'; import MockAdapter from 'axios-mock-adapter'; -import axios from '../util/api'; +import axios from '../../util/api'; const fetchMock = new MockAdapter(axios, { onNoMatch: 'throwException' }); const defaultProps = { diff --git a/web/src/components/__snapshots__/ConsentBanner.test.js.snap b/web/src/pages/login/__snapshots__/ConsentBanner.test.js.snap similarity index 100% rename from web/src/components/__snapshots__/ConsentBanner.test.js.snap rename to web/src/pages/login/__snapshots__/ConsentBanner.test.js.snap diff --git a/web/src/routes.js b/web/src/routes.js index aa7635a61b..05a1843e7b 100644 --- a/web/src/routes.js +++ b/web/src/routes.js @@ -6,8 +6,8 @@ import LoginApplication from './containers/LoginApplication'; import ManageAccount from './containers/admin/ManageAccount'; import StateAdmin from './containers/admin/StateAdmin'; import DelegateStateAdminForm from './containers/admin/DelegateStateAdminForm'; -import SelectAffiliation from './containers/SelectAffiliation'; -import Logout from './containers/Logout'; +import SelectAffiliation from './pages/login/SelectAffiliation'; +import Logout from './pages/login/Logout'; const routes = [ { path: '/', component: Dashboard, exact: true, isPublic: false }, @@ -26,9 +26,17 @@ const routes = [ { path: '/login', component: LoginApplication, isPublic: true, isCard: true }, { path: '/logout', component: Logout, isPublic: true }, { path: '/manage-account', component: ManageAccount, isPublic: false }, - { path: '/select-affiliation', component: SelectAffiliation, isPublic: false }, + { + path: '/select-affiliation', + component: SelectAffiliation, + isPublic: false + }, { path: '/state-admin', component: StateAdmin, isPublic: false }, - { path: '/delegate-state-admin', component: DelegateStateAdminForm, isAdmin: true }, + { + path: '/delegate-state-admin', + component: DelegateStateAdminForm, + isAdmin: true + }, { component: NoMatch, isPublic: true } ]; From 430cc7dcb5ddecc3165ba88451bf1dd231bceb0b Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 21 Mar 2022 16:18:44 -0400 Subject: [PATCH 07/29] added admin refactor --- .../ManageAllUsersTable.test.js.snap | 1046 ----------------- .../ManageRoleDialog.test.js.snap | 86 -- .../{containers => pages/admin}/AdminRoute.js | 4 +- .../admin}/AdminRoute.test.js | 0 .../admin/ConfirmationDialog.js | 0 .../admin/ConfirmationDialog.test.js | 0 .../admin/ManageRoleDialog.js | 0 .../admin/ManageRoleDialog.story.js | 0 .../admin/ManageRoleDialog.test.js | 0 .../fed-admin}/DelegateStateAdminForm.js | 10 +- .../admin/fed-admin}/FederalAdmin.js | 8 +- .../admin/fed-admin}/FederalAdmin.test.js | 0 .../admin/fed-admin}/ManageAllUsersTable.js | 0 .../fed-admin}/ManageAllUsersTable.test.js | 0 .../admin/fed-admin}/MatchStateAdminDialog.js | 4 +- .../admin/fed-admin}/StateAdminLetters.js | 6 +- .../admin/state-admin}/ManageAccount.js | 12 +- .../admin/state-admin}/ManageUserTable.js | 0 .../state-admin}/ManageUserTable.test.js | 0 .../admin/state-admin}/StateAdmin.js | 8 +- .../admin/state-admin}/StateAdmin.test.js | 0 21 files changed, 26 insertions(+), 1158 deletions(-) delete mode 100644 web/src/containers/admin/__snapshots__/ManageAllUsersTable.test.js.snap delete mode 100644 web/src/containers/admin/__snapshots__/ManageRoleDialog.test.js.snap rename web/src/{containers => pages/admin}/AdminRoute.js (91%) rename web/src/{containers => pages/admin}/AdminRoute.test.js (100%) rename web/src/{containers => pages}/admin/ConfirmationDialog.js (100%) rename web/src/{containers => pages}/admin/ConfirmationDialog.test.js (100%) rename web/src/{containers => pages}/admin/ManageRoleDialog.js (100%) rename web/src/{containers => pages}/admin/ManageRoleDialog.story.js (100%) rename web/src/{containers => pages}/admin/ManageRoleDialog.test.js (100%) rename web/src/{containers/admin => pages/admin/fed-admin}/DelegateStateAdminForm.js (94%) rename web/src/{containers/admin => pages/admin/fed-admin}/FederalAdmin.js (97%) rename web/src/{containers/admin => pages/admin/fed-admin}/FederalAdmin.test.js (100%) rename web/src/{containers/admin => pages/admin/fed-admin}/ManageAllUsersTable.js (100%) rename web/src/{containers/admin => pages/admin/fed-admin}/ManageAllUsersTable.test.js (100%) rename web/src/{containers/admin => pages/admin/fed-admin}/MatchStateAdminDialog.js (98%) rename web/src/{containers/admin => pages/admin/fed-admin}/StateAdminLetters.js (98%) rename web/src/{containers/admin => pages/admin/state-admin}/ManageAccount.js (88%) rename web/src/{containers/admin => pages/admin/state-admin}/ManageUserTable.js (100%) rename web/src/{containers/admin => pages/admin/state-admin}/ManageUserTable.test.js (100%) rename web/src/{containers/admin => pages/admin/state-admin}/StateAdmin.js (97%) rename web/src/{containers/admin => pages/admin/state-admin}/StateAdmin.test.js (100%) diff --git a/web/src/containers/admin/__snapshots__/ManageAllUsersTable.test.js.snap b/web/src/containers/admin/__snapshots__/ManageAllUsersTable.test.js.snap deleted file mode 100644 index 0ba48f0fe1..0000000000 --- a/web/src/containers/admin/__snapshots__/ManageAllUsersTable.test.js.snap +++ /dev/null @@ -1,1046 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` renders correctly for users with multiple affiliations 1`] = ` -Object { - "asFragment": [Function], - "baseElement": -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Role - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - LA - - eAPD State Contractor - -
    -
    -
    - , - "container":
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Role - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - LA - - eAPD State Contractor - -
    -
    -
    , - "debug": [Function], - "findAllByAltText": [Function], - "findAllByDisplayValue": [Function], - "findAllByLabelText": [Function], - "findAllByPlaceholderText": [Function], - "findAllByRole": [Function], - "findAllByTestId": [Function], - "findAllByText": [Function], - "findAllByTitle": [Function], - "findByAltText": [Function], - "findByDisplayValue": [Function], - "findByLabelText": [Function], - "findByPlaceholderText": [Function], - "findByRole": [Function], - "findByTestId": [Function], - "findByText": [Function], - "findByTitle": [Function], - "getAllByAltText": [Function], - "getAllByDisplayValue": [Function], - "getAllByLabelText": [Function], - "getAllByPlaceholderText": [Function], - "getAllByRole": [Function], - "getAllByTestId": [Function], - "getAllByText": [Function], - "getAllByTitle": [Function], - "getByAltText": [Function], - "getByDisplayValue": [Function], - "getByLabelText": [Function], - "getByPlaceholderText": [Function], - "getByRole": [Function], - "getByTestId": [Function], - "getByText": [Function], - "getByTitle": [Function], - "queryAllByAltText": [Function], - "queryAllByDisplayValue": [Function], - "queryAllByLabelText": [Function], - "queryAllByPlaceholderText": [Function], - "queryAllByRole": [Function], - "queryAllByTestId": [Function], - "queryAllByText": [Function], - "queryAllByTitle": [Function], - "queryByAltText": [Function], - "queryByDisplayValue": [Function], - "queryByLabelText": [Function], - "queryByPlaceholderText": [Function], - "queryByRole": [Function], - "queryByTestId": [Function], - "queryByText": [Function], - "queryByTitle": [Function], - "rerender": [Function], - "unmount": [Function], -} -`; - -exports[` renders correctly for users with single affiliations 1`] = ` -Object { - "asFragment": [Function], - "baseElement": -
    - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - -
    -
    -
    - , - "container":
    - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - -
    -
    -
    , - "debug": [Function], - "findAllByAltText": [Function], - "findAllByDisplayValue": [Function], - "findAllByLabelText": [Function], - "findAllByPlaceholderText": [Function], - "findAllByRole": [Function], - "findAllByTestId": [Function], - "findAllByText": [Function], - "findAllByTitle": [Function], - "findByAltText": [Function], - "findByDisplayValue": [Function], - "findByLabelText": [Function], - "findByPlaceholderText": [Function], - "findByRole": [Function], - "findByTestId": [Function], - "findByText": [Function], - "findByTitle": [Function], - "getAllByAltText": [Function], - "getAllByDisplayValue": [Function], - "getAllByLabelText": [Function], - "getAllByPlaceholderText": [Function], - "getAllByRole": [Function], - "getAllByTestId": [Function], - "getAllByText": [Function], - "getAllByTitle": [Function], - "getByAltText": [Function], - "getByDisplayValue": [Function], - "getByLabelText": [Function], - "getByPlaceholderText": [Function], - "getByRole": [Function], - "getByTestId": [Function], - "getByText": [Function], - "getByTitle": [Function], - "queryAllByAltText": [Function], - "queryAllByDisplayValue": [Function], - "queryAllByLabelText": [Function], - "queryAllByPlaceholderText": [Function], - "queryAllByRole": [Function], - "queryAllByTestId": [Function], - "queryAllByText": [Function], - "queryAllByTitle": [Function], - "queryByAltText": [Function], - "queryByDisplayValue": [Function], - "queryByLabelText": [Function], - "queryByPlaceholderText": [Function], - "queryByRole": [Function], - "queryByTestId": [Function], - "queryByText": [Function], - "queryByTitle": [Function], - "rerender": [Function], - "unmount": [Function], -} -`; - -exports[` renders correctly with both single and multi-affiliation users 1`] = ` -Object { - "asFragment": [Function], - "baseElement": -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Role - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - LA - - eAPD State Contractor - -
    -
    -
    - , - "container":
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Name - - Email - - Phone Number - - State - - Role - - Actions -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - Liz Lemon - - liz@lemon.com - - 4045555555 - - MD - - eAPD State Contractor - -
    -
    - LA - - eAPD State Contractor - -
    -
    -
    , - "debug": [Function], - "findAllByAltText": [Function], - "findAllByDisplayValue": [Function], - "findAllByLabelText": [Function], - "findAllByPlaceholderText": [Function], - "findAllByRole": [Function], - "findAllByTestId": [Function], - "findAllByText": [Function], - "findAllByTitle": [Function], - "findByAltText": [Function], - "findByDisplayValue": [Function], - "findByLabelText": [Function], - "findByPlaceholderText": [Function], - "findByRole": [Function], - "findByTestId": [Function], - "findByText": [Function], - "findByTitle": [Function], - "getAllByAltText": [Function], - "getAllByDisplayValue": [Function], - "getAllByLabelText": [Function], - "getAllByPlaceholderText": [Function], - "getAllByRole": [Function], - "getAllByTestId": [Function], - "getAllByText": [Function], - "getAllByTitle": [Function], - "getByAltText": [Function], - "getByDisplayValue": [Function], - "getByLabelText": [Function], - "getByPlaceholderText": [Function], - "getByRole": [Function], - "getByTestId": [Function], - "getByText": [Function], - "getByTitle": [Function], - "queryAllByAltText": [Function], - "queryAllByDisplayValue": [Function], - "queryAllByLabelText": [Function], - "queryAllByPlaceholderText": [Function], - "queryAllByRole": [Function], - "queryAllByTestId": [Function], - "queryAllByText": [Function], - "queryAllByTitle": [Function], - "queryByAltText": [Function], - "queryByDisplayValue": [Function], - "queryByLabelText": [Function], - "queryByPlaceholderText": [Function], - "queryByRole": [Function], - "queryByTestId": [Function], - "queryByText": [Function], - "queryByTitle": [Function], - "rerender": [Function], - "unmount": [Function], -} -`; diff --git a/web/src/containers/admin/__snapshots__/ManageRoleDialog.test.js.snap b/web/src/containers/admin/__snapshots__/ManageRoleDialog.test.js.snap deleted file mode 100644 index a3784a6c6c..0000000000 --- a/web/src/containers/admin/__snapshots__/ManageRoleDialog.test.js.snap +++ /dev/null @@ -1,86 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` matches snapshot 1`] = ` - - Save - , - , - ] - } - ariaCloseLabel="Close modal dialog" - closeButtonText="Close" - closeButtonVariation="transparent" - closeIcon={} - escapeExitDisabled={false} - escapeExits={true} - heading="Edit Role" - onExit={[MockFunction]} - underlayClickExits={false} -> -

    - - Name - - - Liz Lemon -

    -

    - - Phone Number - - - 4045555555 -

    -

    - - Email - - - liz@lemon.com -

    - -
    -`; diff --git a/web/src/containers/AdminRoute.js b/web/src/pages/admin/AdminRoute.js similarity index 91% rename from web/src/containers/AdminRoute.js rename to web/src/pages/admin/AdminRoute.js index b8ecc3676b..30ec883a20 100644 --- a/web/src/containers/AdminRoute.js +++ b/web/src/pages/admin/AdminRoute.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React from 'react'; import { Route, Redirect } from 'react-router-dom'; import { connect } from 'react-redux'; -import { getIsFedAdmin } from '../reducers/user.selector'; -import NoMatch from '../components/NoMatch'; +import { getIsFedAdmin } from '../../reducers/user.selector'; +import NoMatch from '../../components/NoMatch'; const AdminRoute = ({ authenticated, diff --git a/web/src/containers/AdminRoute.test.js b/web/src/pages/admin/AdminRoute.test.js similarity index 100% rename from web/src/containers/AdminRoute.test.js rename to web/src/pages/admin/AdminRoute.test.js diff --git a/web/src/containers/admin/ConfirmationDialog.js b/web/src/pages/admin/ConfirmationDialog.js similarity index 100% rename from web/src/containers/admin/ConfirmationDialog.js rename to web/src/pages/admin/ConfirmationDialog.js diff --git a/web/src/containers/admin/ConfirmationDialog.test.js b/web/src/pages/admin/ConfirmationDialog.test.js similarity index 100% rename from web/src/containers/admin/ConfirmationDialog.test.js rename to web/src/pages/admin/ConfirmationDialog.test.js diff --git a/web/src/containers/admin/ManageRoleDialog.js b/web/src/pages/admin/ManageRoleDialog.js similarity index 100% rename from web/src/containers/admin/ManageRoleDialog.js rename to web/src/pages/admin/ManageRoleDialog.js diff --git a/web/src/containers/admin/ManageRoleDialog.story.js b/web/src/pages/admin/ManageRoleDialog.story.js similarity index 100% rename from web/src/containers/admin/ManageRoleDialog.story.js rename to web/src/pages/admin/ManageRoleDialog.story.js diff --git a/web/src/containers/admin/ManageRoleDialog.test.js b/web/src/pages/admin/ManageRoleDialog.test.js similarity index 100% rename from web/src/containers/admin/ManageRoleDialog.test.js rename to web/src/pages/admin/ManageRoleDialog.test.js diff --git a/web/src/containers/admin/DelegateStateAdminForm.js b/web/src/pages/admin/fed-admin/DelegateStateAdminForm.js similarity index 94% rename from web/src/containers/admin/DelegateStateAdminForm.js rename to web/src/pages/admin/fed-admin/DelegateStateAdminForm.js index 287f35355a..f4106a833f 100644 --- a/web/src/containers/admin/DelegateStateAdminForm.js +++ b/web/src/pages/admin/fed-admin/DelegateStateAdminForm.js @@ -3,11 +3,11 @@ import { useHistory } from 'react-router-dom'; import { TextField, Dropdown, Button, ChoiceList } from '@cmsgov/design-system'; -import axios, { apiUrl } from '../../util/api'; -import { twoYears } from '../../util'; -import { STATES } from '../../util/states'; -import NumberField from '../../components/NumberField'; -import DocumentUpload from '../../components/DocumentUpload'; +import axios, { apiUrl } from '../../../util/api'; +import { twoYears } from '../../../util'; +import { STATES } from '../../../util/states'; +import NumberField from '../../../components/NumberField'; +import DocumentUpload from '../../../components/DocumentUpload'; const dropdownOptions = STATES.map(item => { return { diff --git a/web/src/containers/admin/FederalAdmin.js b/web/src/pages/admin/fed-admin/FederalAdmin.js similarity index 97% rename from web/src/containers/admin/FederalAdmin.js rename to web/src/pages/admin/fed-admin/FederalAdmin.js index 4602851a6b..a0bc6b114f 100644 --- a/web/src/containers/admin/FederalAdmin.js +++ b/web/src/pages/admin/fed-admin/FederalAdmin.js @@ -7,12 +7,12 @@ import { getRoleTypes, getAffiliations, updateAffiliation -} from '../../actions/admin'; +} from '../../../actions/admin'; -import { getUserStateOrTerritory } from '../../reducers/user.selector'; +import { getUserStateOrTerritory } from '../../../reducers/user.selector'; -import ManageRoleDialog from './ManageRoleDialog'; -import ConfirmationDialog from './ConfirmationDialog'; +import ManageRoleDialog from '../ManageRoleDialog'; +import ConfirmationDialog from '../ConfirmationDialog'; import ManageAllUsersTable from './ManageAllUsersTable'; import StateAdminLetters from './StateAdminLetters'; diff --git a/web/src/containers/admin/FederalAdmin.test.js b/web/src/pages/admin/fed-admin/FederalAdmin.test.js similarity index 100% rename from web/src/containers/admin/FederalAdmin.test.js rename to web/src/pages/admin/fed-admin/FederalAdmin.test.js diff --git a/web/src/containers/admin/ManageAllUsersTable.js b/web/src/pages/admin/fed-admin/ManageAllUsersTable.js similarity index 100% rename from web/src/containers/admin/ManageAllUsersTable.js rename to web/src/pages/admin/fed-admin/ManageAllUsersTable.js diff --git a/web/src/containers/admin/ManageAllUsersTable.test.js b/web/src/pages/admin/fed-admin/ManageAllUsersTable.test.js similarity index 100% rename from web/src/containers/admin/ManageAllUsersTable.test.js rename to web/src/pages/admin/fed-admin/ManageAllUsersTable.test.js diff --git a/web/src/containers/admin/MatchStateAdminDialog.js b/web/src/pages/admin/fed-admin/MatchStateAdminDialog.js similarity index 98% rename from web/src/containers/admin/MatchStateAdminDialog.js rename to web/src/pages/admin/fed-admin/MatchStateAdminDialog.js index 2345deb529..8e8ef6ce77 100644 --- a/web/src/containers/admin/MatchStateAdminDialog.js +++ b/web/src/pages/admin/fed-admin/MatchStateAdminDialog.js @@ -3,8 +3,8 @@ import React, { useEffect, useState } from 'react'; import { Dialog, Dropdown, Button } from '@cmsgov/design-system'; -import axios from '../../util/api'; -import { STATES } from '../../util/states'; +import axios from '../../../util/api'; +import { STATES } from '../../../util/states'; const MatchStateAdminDialog = ({ certification, hideModal }) => { const [stateAffiliations, setStateAffiliations] = useState([]); diff --git a/web/src/containers/admin/StateAdminLetters.js b/web/src/pages/admin/fed-admin/StateAdminLetters.js similarity index 98% rename from web/src/containers/admin/StateAdminLetters.js rename to web/src/pages/admin/fed-admin/StateAdminLetters.js index fe64bf8be9..c9acb4db92 100644 --- a/web/src/containers/admin/StateAdminLetters.js +++ b/web/src/pages/admin/fed-admin/StateAdminLetters.js @@ -22,12 +22,12 @@ import { TextField } from '@cmsgov/design-system'; -import axios from '../../util/api'; +import axios from '../../../util/api'; import MatchStateAdminDialog from './MatchStateAdminDialog'; -import DeleteModal from '../../components/DeleteModal'; -import { PDFFileBlue } from '../../components/Icons'; +import DeleteModal from '../../../components/DeleteModal'; +import { PDFFileBlue } from '../../../components/Icons'; const certificationRow = record => { const calculateStatus = (affiliationId, potentialMatches) => { diff --git a/web/src/containers/admin/ManageAccount.js b/web/src/pages/admin/state-admin/ManageAccount.js similarity index 88% rename from web/src/containers/admin/ManageAccount.js rename to web/src/pages/admin/state-admin/ManageAccount.js index 8ff3847811..ce9eb85304 100644 --- a/web/src/containers/admin/ManageAccount.js +++ b/web/src/pages/admin/state-admin/ManageAccount.js @@ -7,13 +7,13 @@ import { useHistory } from 'react-router-dom'; import { createAccessRequest as actualCreateAccessRequest, completeAccessRequest as actualCompleteAccessRequest -} from '../../actions/auth'; +} from '../../../actions/auth'; -import StateAccessRequest from '../../pages/login/StateAccessRequest'; -import StateAccessRequestConfirmation from '../../pages/login/StateAccessRequestConfirmation'; -import { getIsFedAdmin } from '../../reducers/user.selector'; -import { goToDashboard } from '../../actions/app'; -import axios from '../../util/api'; +import StateAccessRequest from '../../login/StateAccessRequest'; +import StateAccessRequestConfirmation from '../../login/StateAccessRequestConfirmation'; +import { getIsFedAdmin } from '../../../reducers/user.selector'; +import { goToDashboard } from '../../../actions/app'; +import axios from '../../../util/api'; const ManageAccount = ({ createAccessRequest, diff --git a/web/src/containers/admin/ManageUserTable.js b/web/src/pages/admin/state-admin/ManageUserTable.js similarity index 100% rename from web/src/containers/admin/ManageUserTable.js rename to web/src/pages/admin/state-admin/ManageUserTable.js diff --git a/web/src/containers/admin/ManageUserTable.test.js b/web/src/pages/admin/state-admin/ManageUserTable.test.js similarity index 100% rename from web/src/containers/admin/ManageUserTable.test.js rename to web/src/pages/admin/state-admin/ManageUserTable.test.js diff --git a/web/src/containers/admin/StateAdmin.js b/web/src/pages/admin/state-admin/StateAdmin.js similarity index 97% rename from web/src/containers/admin/StateAdmin.js rename to web/src/pages/admin/state-admin/StateAdmin.js index e1c5e6802e..9c355187a1 100644 --- a/web/src/containers/admin/StateAdmin.js +++ b/web/src/pages/admin/state-admin/StateAdmin.js @@ -7,12 +7,12 @@ import { getRoleTypes, getAffiliations, updateAffiliation -} from '../../actions/admin'; +} from '../../../actions/admin'; -import { getUserStateOrTerritory } from '../../reducers/user.selector'; +import { getUserStateOrTerritory } from '../../../reducers/user.selector'; -import ManageRoleDialog from './ManageRoleDialog'; -import ConfirmationDialog from './ConfirmationDialog'; +import ManageRoleDialog from '../ManageRoleDialog'; +import ConfirmationDialog from '../ConfirmationDialog'; import ManageUserTable from './ManageUserTable'; const StateAdmin = ({ diff --git a/web/src/containers/admin/StateAdmin.test.js b/web/src/pages/admin/state-admin/StateAdmin.test.js similarity index 100% rename from web/src/containers/admin/StateAdmin.test.js rename to web/src/pages/admin/state-admin/StateAdmin.test.js From b0833565f45e301041e5c880cb30880db49d3807 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 09:35:34 -0400 Subject: [PATCH 08/29] updated tests --- web/src/components/Routes.js | 2 +- .../__snapshots__/AdminRoute.test.js.snap | 0 .../ManageRoleDialog.test.js.snap | 86 ++ .../admin/fed-admin/FederalAdmin.test.js | 2 +- .../ManageAllUsersTable.test.js.snap | 1046 +++++++++++++++++ .../admin/state-admin/StateAdmin.test.js | 4 +- .../fed-dashboard/FederalDashboard.js | 2 +- .../fed-dashboard/FederalDashboard.test.js | 2 +- web/src/routes.js | 6 +- 9 files changed, 1141 insertions(+), 9 deletions(-) rename web/src/{containers => pages/admin}/__snapshots__/AdminRoute.test.js.snap (100%) create mode 100644 web/src/pages/admin/__snapshots__/ManageRoleDialog.test.js.snap create mode 100644 web/src/pages/admin/fed-admin/__snapshots__/ManageAllUsersTable.test.js.snap diff --git a/web/src/components/Routes.js b/web/src/components/Routes.js index b02481bd19..bc05f7f5b2 100644 --- a/web/src/components/Routes.js +++ b/web/src/components/Routes.js @@ -2,7 +2,7 @@ import React from 'react'; import { Route as PublicRoute, Switch } from 'react-router-dom'; import routes from '../routes'; -import AdminRoute from '../containers/AdminRoute'; +import AdminRoute from '../pages/admin/AdminRoute'; import PrivateRoute from '../containers/PrivateRoute'; const Routes = () => ( diff --git a/web/src/containers/__snapshots__/AdminRoute.test.js.snap b/web/src/pages/admin/__snapshots__/AdminRoute.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/AdminRoute.test.js.snap rename to web/src/pages/admin/__snapshots__/AdminRoute.test.js.snap diff --git a/web/src/pages/admin/__snapshots__/ManageRoleDialog.test.js.snap b/web/src/pages/admin/__snapshots__/ManageRoleDialog.test.js.snap new file mode 100644 index 0000000000..a3784a6c6c --- /dev/null +++ b/web/src/pages/admin/__snapshots__/ManageRoleDialog.test.js.snap @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` matches snapshot 1`] = ` + + Save + , + , + ] + } + ariaCloseLabel="Close modal dialog" + closeButtonText="Close" + closeButtonVariation="transparent" + closeIcon={} + escapeExitDisabled={false} + escapeExits={true} + heading="Edit Role" + onExit={[MockFunction]} + underlayClickExits={false} +> +

    + + Name + + + Liz Lemon +

    +

    + + Phone Number + + + 4045555555 +

    +

    + + Email + + + liz@lemon.com +

    + +
    +`; diff --git a/web/src/pages/admin/fed-admin/FederalAdmin.test.js b/web/src/pages/admin/fed-admin/FederalAdmin.test.js index a899001576..b12c531fae 100644 --- a/web/src/pages/admin/fed-admin/FederalAdmin.test.js +++ b/web/src/pages/admin/fed-admin/FederalAdmin.test.js @@ -9,7 +9,7 @@ import { } from 'apd-testing-library'; import MockAdapter from 'axios-mock-adapter'; -import axios from '../../util/api'; +import axios from '../../../util/api'; import FederalAdmin from './FederalAdmin'; const fetchMock = new MockAdapter(axios, { onNoMatch: 'throwException' }); diff --git a/web/src/pages/admin/fed-admin/__snapshots__/ManageAllUsersTable.test.js.snap b/web/src/pages/admin/fed-admin/__snapshots__/ManageAllUsersTable.test.js.snap new file mode 100644 index 0000000000..0ba48f0fe1 --- /dev/null +++ b/web/src/pages/admin/fed-admin/__snapshots__/ManageAllUsersTable.test.js.snap @@ -0,0 +1,1046 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` renders correctly for users with multiple affiliations 1`] = ` +Object { + "asFragment": [Function], + "baseElement": +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Role + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + LA + + eAPD State Contractor + +
    +
    +
    + , + "container":
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Role + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + LA + + eAPD State Contractor + +
    +
    +
    , + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "unmount": [Function], +} +`; + +exports[` renders correctly for users with single affiliations 1`] = ` +Object { + "asFragment": [Function], + "baseElement": +
    + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + +
    +
    +
    + , + "container":
    + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + +
    +
    +
    , + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "unmount": [Function], +} +`; + +exports[` renders correctly with both single and multi-affiliation users 1`] = ` +Object { + "asFragment": [Function], + "baseElement": +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Role + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + LA + + eAPD State Contractor + +
    +
    +
    + , + "container":
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Name + + Email + + Phone Number + + State + + Role + + Actions +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + Liz Lemon + + liz@lemon.com + + 4045555555 + + MD + + eAPD State Contractor + +
    +
    + LA + + eAPD State Contractor + +
    +
    +
    , + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "unmount": [Function], +} +`; diff --git a/web/src/pages/admin/state-admin/StateAdmin.test.js b/web/src/pages/admin/state-admin/StateAdmin.test.js index 51de49ad05..3d34a09edd 100644 --- a/web/src/pages/admin/state-admin/StateAdmin.test.js +++ b/web/src/pages/admin/state-admin/StateAdmin.test.js @@ -9,13 +9,13 @@ import { } from 'apd-testing-library'; import MockAdapter from 'axios-mock-adapter'; -import axios from '../../util/api'; +import axios from '../../../util/api'; import StateAdmin, { mapStateToProps, mapDispatchToProps } from './StateAdmin'; import { getAffiliations, updateAffiliation, getRoleTypes -} from '../../actions/admin'; +} from '../../../actions/admin'; const fetchMock = new MockAdapter(axios, { onNoMatch: 'throwException' }); diff --git a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js index fab9a7300b..4fa2c58a5d 100644 --- a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js @@ -2,7 +2,7 @@ import PropType from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import FederalAdmin from '../../../containers/admin/FederalAdmin'; +import FederalAdmin from '../../admin/fed-admin/FederalAdmin'; import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; import { getUserStateOrTerritoryStatus } from '../../../reducers/user.selector'; diff --git a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js index 5f0be2e8b6..4332dc703c 100644 --- a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js @@ -2,7 +2,7 @@ import { shallow } from 'enzyme'; import React from 'react'; import { AFFILIATION_STATUSES } from '../../../constants'; -import FederalAdmin from '../../../containers/admin/FederalAdmin'; +import FederalAdmin from '../../admin/fed-admin/FederalAdmin'; import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; import { plain as FederalDashboard } from './FederalDashboard'; diff --git a/web/src/routes.js b/web/src/routes.js index 05a1843e7b..969ba32651 100644 --- a/web/src/routes.js +++ b/web/src/routes.js @@ -3,9 +3,9 @@ import Dashboard from './containers/Dashboard'; import ApdApplication from './containers/ApdApplication'; import ApdViewOnly from './containers/viewOnly/Apd'; import LoginApplication from './containers/LoginApplication'; -import ManageAccount from './containers/admin/ManageAccount'; -import StateAdmin from './containers/admin/StateAdmin'; -import DelegateStateAdminForm from './containers/admin/DelegateStateAdminForm'; +import ManageAccount from './pages/admin/state-admin/ManageAccount'; +import StateAdmin from './pages/admin/state-admin/StateAdmin'; +import DelegateStateAdminForm from './pages/admin/fed-admin/DelegateStateAdminForm'; import SelectAffiliation from './pages/login/SelectAffiliation'; import Logout from './pages/login/Logout'; From 9f9faa6f91721da73444aba06e5fa1e3f30d2198 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 09:52:25 -0400 Subject: [PATCH 09/29] route refactor --- web/src/components/Routes.js | 23 ------------------- web/src/routes.js | 43 ------------------------------------ 2 files changed, 66 deletions(-) delete mode 100644 web/src/components/Routes.js delete mode 100644 web/src/routes.js diff --git a/web/src/components/Routes.js b/web/src/components/Routes.js deleted file mode 100644 index bc05f7f5b2..0000000000 --- a/web/src/components/Routes.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { Route as PublicRoute, Switch } from 'react-router-dom'; - -import routes from '../routes'; -import AdminRoute from '../pages/admin/AdminRoute'; -import PrivateRoute from '../containers/PrivateRoute'; - -const Routes = () => ( - - {routes.map(({ isAdmin, isPublic, path, ...routeProps }) => { - const key = path || 'no-match'; - if (isPublic) { - return ; - } - if (isAdmin) { - return ; - } - return ; - })} - -); - -export default Routes; diff --git a/web/src/routes.js b/web/src/routes.js deleted file mode 100644 index 969ba32651..0000000000 --- a/web/src/routes.js +++ /dev/null @@ -1,43 +0,0 @@ -import NoMatch from './components/NoMatch'; -import Dashboard from './containers/Dashboard'; -import ApdApplication from './containers/ApdApplication'; -import ApdViewOnly from './containers/viewOnly/Apd'; -import LoginApplication from './containers/LoginApplication'; -import ManageAccount from './pages/admin/state-admin/ManageAccount'; -import StateAdmin from './pages/admin/state-admin/StateAdmin'; -import DelegateStateAdminForm from './pages/admin/fed-admin/DelegateStateAdminForm'; -import SelectAffiliation from './pages/login/SelectAffiliation'; -import Logout from './pages/login/Logout'; - -const routes = [ - { path: '/', component: Dashboard, exact: true, isPublic: false }, - { - path: '/apd/:apdId', - component: ApdApplication, - exact: false, - isPublic: false - }, - { - path: '/print/:apdId', - component: ApdViewOnly, - exact: true, - isPublic: false - }, - { path: '/login', component: LoginApplication, isPublic: true, isCard: true }, - { path: '/logout', component: Logout, isPublic: true }, - { path: '/manage-account', component: ManageAccount, isPublic: false }, - { - path: '/select-affiliation', - component: SelectAffiliation, - isPublic: false - }, - { path: '/state-admin', component: StateAdmin, isPublic: false }, - { - path: '/delegate-state-admin', - component: DelegateStateAdminForm, - isAdmin: true - }, - { component: NoMatch, isPublic: true } -]; - -export default routes; From 8670f0cc5b3d92300980dd1e746c65d8c04a8db8 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 09:53:00 -0400 Subject: [PATCH 10/29] route refactor to /pages/ --- web/src/pages/Route.js | 23 ++++++++++++++++++++++ web/src/pages/routes.js | 43 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 web/src/pages/Route.js create mode 100644 web/src/pages/routes.js diff --git a/web/src/pages/Route.js b/web/src/pages/Route.js new file mode 100644 index 0000000000..ec70980533 --- /dev/null +++ b/web/src/pages/Route.js @@ -0,0 +1,23 @@ +import React from 'react'; +import { Route as PublicRoute, Switch } from 'react-router-dom'; + +import routes from './routes'; +import AdminRoute from './admin/AdminRoute'; +import PrivateRoute from '../containers/PrivateRoute'; + +const Routes = () => ( + + {routes.map(({ isAdmin, isPublic, path, ...routeProps }) => { + const key = path || 'no-match'; + if (isPublic) { + return ; + } + if (isAdmin) { + return ; + } + return ; + })} + +); + +export default Routes; diff --git a/web/src/pages/routes.js b/web/src/pages/routes.js new file mode 100644 index 0000000000..982cd4ffb9 --- /dev/null +++ b/web/src/pages/routes.js @@ -0,0 +1,43 @@ +import NoMatch from '../components/NoMatch'; +import Dashboard from '../containers/Dashboard'; +import ApdApplication from '../containers/ApdApplication'; +import ApdViewOnly from '../containers/viewOnly/Apd'; +import LoginApplication from '../containers/LoginApplication'; +import ManageAccount from './admin/state-admin/ManageAccount'; +import StateAdmin from './admin/state-admin/StateAdmin'; +import DelegateStateAdminForm from './admin/fed-admin/DelegateStateAdminForm'; +import SelectAffiliation from './login/SelectAffiliation'; +import Logout from './login/Logout'; + +const routes = [ + { path: '/', component: Dashboard, exact: true, isPublic: false }, + { + path: '/apd/:apdId', + component: ApdApplication, + exact: false, + isPublic: false + }, + { + path: '/print/:apdId', + component: ApdViewOnly, + exact: true, + isPublic: false + }, + { path: '/login', component: LoginApplication, isPublic: true, isCard: true }, + { path: '/logout', component: Logout, isPublic: true }, + { path: '/manage-account', component: ManageAccount, isPublic: false }, + { + path: '/select-affiliation', + component: SelectAffiliation, + isPublic: false + }, + { path: '/state-admin', component: StateAdmin, isPublic: false }, + { + path: '/delegate-state-admin', + component: DelegateStateAdminForm, + isAdmin: true + }, + { component: NoMatch, isPublic: true } +]; + +export default routes; From 1a0ccf10770546ddc95e3cace8d4928e45faa0ff Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 11:20:09 -0400 Subject: [PATCH 11/29] updated tests (not finishes yet) --- web/src/components/App.js | 2 +- web/src/components/Wrapper.js | 2 +- web/src/{components => pages}/Routes.test.js | 2 +- .../pages/__snapshots__/Routes.test.js.snap | 115 ++++++++++++++++++ 4 files changed, 118 insertions(+), 3 deletions(-) rename web/src/{components => pages}/Routes.test.js (88%) create mode 100644 web/src/pages/__snapshots__/Routes.test.js.snap diff --git a/web/src/components/App.js b/web/src/components/App.js index 9246436afb..4b14838998 100644 --- a/web/src/components/App.js +++ b/web/src/components/App.js @@ -1,6 +1,6 @@ import React from 'react'; -import Routes from './Routes'; +import Routes from '../pages/Route'; import Wrapper from './Wrapper'; import Broadcast from './Broadcast'; import AriaAnnounce from '../containers/AriaAnnounce'; diff --git a/web/src/components/Wrapper.js b/web/src/components/Wrapper.js index 9939a24a0c..6679bc2cd8 100644 --- a/web/src/components/Wrapper.js +++ b/web/src/components/Wrapper.js @@ -3,7 +3,7 @@ import React from 'react'; import { withRouter } from 'react-router'; import Header from '../layout/header/Header'; import Footer from '../layout/footer/Footer'; -import routes from '../routes'; +import routes from '../pages/Route'; import SessionEndingAlert from '../containers/SessionEndingAlert'; const cardRoutes = routes.filter(r => r.isCard).map(r => r.path); diff --git a/web/src/components/Routes.test.js b/web/src/pages/Routes.test.js similarity index 88% rename from web/src/components/Routes.test.js rename to web/src/pages/Routes.test.js index 9a48d90ed5..66e169d0c5 100644 --- a/web/src/components/Routes.test.js +++ b/web/src/pages/Routes.test.js @@ -1,7 +1,7 @@ import { shallow } from 'enzyme'; import React from 'react'; -import Routes from './Routes'; +import Routes from './Route'; describe('Routes component', () => { test('renders correctly', () => { diff --git a/web/src/pages/__snapshots__/Routes.test.js.snap b/web/src/pages/__snapshots__/Routes.test.js.snap new file mode 100644 index 0000000000..c08c443bb8 --- /dev/null +++ b/web/src/pages/__snapshots__/Routes.test.js.snap @@ -0,0 +1,115 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Routes component renders correctly 1`] = ` + + + + + + + + + + + + +`; From e15bdb911fb2711632b875811c323ce36e7cb76c Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 15:05:31 -0400 Subject: [PATCH 12/29] apd components refactor --- .../apd}/ApdPageRoutes.js | 22 +++++++++---------- .../apd}/ApdPageRoutes.test.js | 0 .../Apd.js => pages/apd/ApdReadOnly.js} | 18 +++++++-------- 3 files changed, 20 insertions(+), 20 deletions(-) rename web/src/{containers => pages/apd}/ApdPageRoutes.js (70%) rename web/src/{containers => pages/apd}/ApdPageRoutes.test.js (100%) rename web/src/{containers/viewOnly/Apd.js => pages/apd/ApdReadOnly.js} (86%) diff --git a/web/src/containers/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js similarity index 70% rename from web/src/containers/ApdPageRoutes.js rename to web/src/pages/apd/ApdPageRoutes.js index 30098fd85e..87f9bb7b58 100644 --- a/web/src/containers/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -7,17 +7,17 @@ import { useRouteMatch as actualUseRouteMatch } from 'react-router-dom'; -import ApdHeader from '../layout/header/ApdHeader'; -import Activities from './activity/All'; -import EntryPage from './activity/EntryPage'; -import AssurancesAndCompliance from './AssurancesAndCompliance'; -import Export from './ApdExport'; -import ApdSummary from './ApdSummary'; -import ExecutiveSummary from './ExecutiveSummary'; -import PreviousActivities from './PreviousActivities'; -import ProposedBudget from './ProposedBudget'; -import ScheduleSummary from './ScheduleSummary'; -import StateProfile from '../components/ApdStateProfile'; +import ApdHeader from '../../layout/header/ApdHeader'; +import Activities from '../../containers/activity/All'; +import EntryPage from '../../containers/activity/EntryPage'; +import AssurancesAndCompliance from '../../containers/AssurancesAndCompliance'; +import Export from '../../containers/ApdExport'; +import ApdSummary from '../../containers/ApdSummary'; +import ExecutiveSummary from '../../containers/ExecutiveSummary'; +import PreviousActivities from '../../containers/PreviousActivities'; +import ProposedBudget from '../../containers/ProposedBudget'; +import ScheduleSummary from '../../containers/ScheduleSummary'; +import StateProfile from '../../components/ApdStateProfile'; const ApdPageRoutes = ({ apdId, useRouteMatch }) => { const { path } = useRouteMatch(); diff --git a/web/src/containers/ApdPageRoutes.test.js b/web/src/pages/apd/ApdPageRoutes.test.js similarity index 100% rename from web/src/containers/ApdPageRoutes.test.js rename to web/src/pages/apd/ApdPageRoutes.test.js diff --git a/web/src/containers/viewOnly/Apd.js b/web/src/pages/apd/ApdReadOnly.js similarity index 86% rename from web/src/containers/viewOnly/Apd.js rename to web/src/pages/apd/ApdReadOnly.js index 5bd11efbb4..1872861b4d 100644 --- a/web/src/containers/viewOnly/Apd.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -12,15 +12,15 @@ import { selectApdData } from '../../reducers/apd.selectors'; import { selectBudget } from '../../reducers/budget.selectors'; import { getAPDYearRange } from '../../reducers/apd'; import { getUserStateOrTerritory } from '../../reducers/user.selector'; -import ApdStateProfile from './ApdStateProfile'; -import ApdSummary from './ApdSummary'; -import PreviousActivities from './PreviousActivities'; -import Activities from './activities/All'; -import ScheduleSummary from './ScheduleSummary'; -import ProposedBudget from './ProposedBudget'; -import AssuranceAndCompliance from './AssurancesAndCompliance'; -import ExecutiveSummary from './ExecutiveSummary'; -import ExportInstructions from './Export'; +import ApdStateProfile from '../../containers/viewOnly/ApdStateProfile'; +import ApdSummary from '../../containers/viewOnly/ApdSummary'; +import PreviousActivities from '../../containers/viewOnly/PreviousActivities'; +import Activities from '../../containers/viewOnly/activities/All'; +import ScheduleSummary from '../../containers/viewOnly/ScheduleSummary'; +import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; +import AssuranceAndCompliance from '../../containers/viewOnly/AssurancesAndCompliance'; +import ExecutiveSummary from '../../containers/viewOnly/ExecutiveSummary'; +import ExportInstructions from '../../containers/viewOnly/Export'; import Loading from '../../components/Loading'; const ApdViewOnly = ({ From 5045cab2baa66b3e996b7552826ee44fc6089ad7 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Tue, 22 Mar 2022 15:13:18 -0400 Subject: [PATCH 13/29] updated tests (route still causing issues) --- .../__snapshots__/Routes.test.js.snap | 115 ------------------ web/src/containers/ApdApplication.js | 2 +- web/src/pages/apd/ApdPageRoutes.test.js | 4 +- web/src/pages/routes.js | 2 +- 4 files changed, 4 insertions(+), 119 deletions(-) delete mode 100644 web/src/components/__snapshots__/Routes.test.js.snap diff --git a/web/src/components/__snapshots__/Routes.test.js.snap b/web/src/components/__snapshots__/Routes.test.js.snap deleted file mode 100644 index c08c443bb8..0000000000 --- a/web/src/components/__snapshots__/Routes.test.js.snap +++ /dev/null @@ -1,115 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Routes component renders correctly 1`] = ` - - - - - - - - - - - - -`; diff --git a/web/src/containers/ApdApplication.js b/web/src/containers/ApdApplication.js index 3c3ed78859..3abd008c9b 100644 --- a/web/src/containers/ApdApplication.js +++ b/web/src/containers/ApdApplication.js @@ -13,7 +13,7 @@ import Sidebar from '../layout/nav/Sidebar'; import UnexpectedError from './UnexpectedError'; import { setApdToSelectOnLoad, selectApd } from '../actions/app'; -import ApdPageRoutes from './ApdPageRoutes'; +import ApdPageRoutes from '../pages/apd/ApdPageRoutes'; import Loading from '../components/Loading'; import { getAPDId } from '../reducers/apd'; diff --git a/web/src/pages/apd/ApdPageRoutes.test.js b/web/src/pages/apd/ApdPageRoutes.test.js index 13d83a668c..2170edda51 100644 --- a/web/src/pages/apd/ApdPageRoutes.test.js +++ b/web/src/pages/apd/ApdPageRoutes.test.js @@ -1,8 +1,8 @@ import React from 'react'; import { renderWithConnection, screen } from 'apd-testing-library'; import ApdPageRoutes from './ApdPageRoutes'; -import apd from '../fixtures/ak-apd.json'; -import budget from '../fixtures/ak-budget.json'; +import apd from '../../fixtures/ak-apd.json'; +import budget from '../../fixtures/ak-budget.json'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), diff --git a/web/src/pages/routes.js b/web/src/pages/routes.js index 982cd4ffb9..a9a26ce3d8 100644 --- a/web/src/pages/routes.js +++ b/web/src/pages/routes.js @@ -1,7 +1,7 @@ import NoMatch from '../components/NoMatch'; import Dashboard from '../containers/Dashboard'; import ApdApplication from '../containers/ApdApplication'; -import ApdViewOnly from '../containers/viewOnly/Apd'; +import ApdViewOnly from './apd/ApdReadOnly'; import LoginApplication from '../containers/LoginApplication'; import ManageAccount from './admin/state-admin/ManageAccount'; import StateAdmin from './admin/state-admin/StateAdmin'; From c8223d0033f4a9b730f08a2886b7a9bb46008793 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 24 Mar 2022 09:38:30 -0400 Subject: [PATCH 14/29] updated tests --- .../__snapshots__/Routes.test.js.snap | 115 ------------------ 1 file changed, 115 deletions(-) delete mode 100644 web/src/components/__snapshots__/Routes.test.js.snap diff --git a/web/src/components/__snapshots__/Routes.test.js.snap b/web/src/components/__snapshots__/Routes.test.js.snap deleted file mode 100644 index c08c443bb8..0000000000 --- a/web/src/components/__snapshots__/Routes.test.js.snap +++ /dev/null @@ -1,115 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Routes component renders correctly 1`] = ` - - - - - - - - - - - - -`; From 41b1baff4d653aa923438aaf91a49e59ec5f2e43 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 24 Mar 2022 10:39:29 -0400 Subject: [PATCH 15/29] update tests, all pass now --- web/src/components/Wrapper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/Wrapper.js b/web/src/components/Wrapper.js index 6679bc2cd8..9a338714a4 100644 --- a/web/src/components/Wrapper.js +++ b/web/src/components/Wrapper.js @@ -3,7 +3,7 @@ import React from 'react'; import { withRouter } from 'react-router'; import Header from '../layout/header/Header'; import Footer from '../layout/footer/Footer'; -import routes from '../pages/Route'; +import routes from '../pages/routes'; import SessionEndingAlert from '../containers/SessionEndingAlert'; const cardRoutes = routes.filter(r => r.isCard).map(r => r.path); From e175909b58cbc943aa15892e6e596920040662f5 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 24 Mar 2022 14:00:48 -0400 Subject: [PATCH 16/29] fixed merge conflicts --- web/src/pages/dashboard/fed-dashboard/FederalDashboard.js | 4 ---- .../pages/dashboard/fed-dashboard/FederalDashboard.test.js | 4 ---- 2 files changed, 8 deletions(-) diff --git a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js index b2d1e463d8..4fa2c58a5d 100644 --- a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.js @@ -2,11 +2,7 @@ import PropType from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -<<<<<<< HEAD:web/src/pages/dashboard/fed-dashboard/FederalDashboard.js import FederalAdmin from '../../admin/fed-admin/FederalAdmin'; -======= -import FederalAdmin from '../../../containers/admin/FederalAdmin'; ->>>>>>> 886da3951acbe1d7ffdbd7d636ac4e66de9a1d0f:web/src/containers/FederalDashboard.js import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; import { getUserStateOrTerritoryStatus } from '../../../reducers/user.selector'; diff --git a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js index 8785eef03c..4332dc703c 100644 --- a/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js +++ b/web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js @@ -2,11 +2,7 @@ import { shallow } from 'enzyme'; import React from 'react'; import { AFFILIATION_STATUSES } from '../../../constants'; -<<<<<<< HEAD:web/src/pages/dashboard/fed-dashboard/FederalDashboard.test.js import FederalAdmin from '../../admin/fed-admin/FederalAdmin'; -======= -import FederalAdmin from '../../../containers/admin/FederalAdmin'; ->>>>>>> 886da3951acbe1d7ffdbd7d636ac4e66de9a1d0f:web/src/containers/FederalDashboard.test.js import { ApprovalStatus } from '../state-dashboard/AffiliationStatus'; import { plain as FederalDashboard } from './FederalDashboard'; From 7bd59f14bcb8b874739f562fe5a07e9e97107e9d Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 24 Mar 2022 14:15:26 -0400 Subject: [PATCH 17/29] relocated apd overview components --- .../apd/apd-overview}/ApdSummary.js | 14 +++++++------- .../apd/apd-overview}/ApdSummary.test.js | 0 2 files changed, 7 insertions(+), 7 deletions(-) rename web/src/{containers => pages/apd/apd-overview}/ApdSummary.js (93%) rename web/src/{containers => pages/apd/apd-overview}/ApdSummary.test.js (100%) diff --git a/web/src/containers/ApdSummary.js b/web/src/pages/apd/apd-overview/ApdSummary.js similarity index 93% rename from web/src/containers/ApdSummary.js rename to web/src/pages/apd/apd-overview/ApdSummary.js index 4ae5beaf81..a7c3b47ffc 100644 --- a/web/src/containers/ApdSummary.js +++ b/web/src/pages/apd/apd-overview/ApdSummary.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React, { useState } from 'react'; import { Alert, ChoiceList, TextField } from '@cmsgov/design-system'; import { connect } from 'react-redux'; -import DeleteModal from '../components/DeleteModal'; +import DeleteModal from '../../../components/DeleteModal'; import { addYear, @@ -12,12 +12,12 @@ import { setNarrativeForHIT, setNarrativeForMMIS, setProgramOverview -} from '../actions/editApd'; -import RichText from '../components/RichText'; -import Instruction from '../components/Instruction'; -import { Section } from '../components/Section'; -import { t } from '../i18n'; -import { selectSummary } from '../reducers/apd.selectors'; +} from '../../../actions/editApd'; +import RichText from '../../../components/RichText'; +import Instruction from '../../../components/Instruction'; +import { Section } from '../../../components/Section'; +import { t } from '../../../i18n'; +import { selectSummary } from '../../../reducers/apd.selectors'; const ApdSummary = ({ addApdYear, diff --git a/web/src/containers/ApdSummary.test.js b/web/src/pages/apd/apd-overview/ApdSummary.test.js similarity index 100% rename from web/src/containers/ApdSummary.test.js rename to web/src/pages/apd/apd-overview/ApdSummary.test.js From 556b0229ca0ebebe8726d6a48e213944785ec0d5 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 24 Mar 2022 14:34:51 -0400 Subject: [PATCH 18/29] updated tests and renamed to ApdOverview --- web/src/pages/apd/ApdPageRoutes.js | 18 ++---------------- .../{ApdSummary.js => ApdOverview.js} | 8 ++++---- ...{ApdSummary.test.js => ApdOverview.test.js} | 4 ++-- 3 files changed, 8 insertions(+), 22 deletions(-) rename web/src/pages/apd/apd-overview/{ApdSummary.js => ApdOverview.js} (96%) rename web/src/pages/apd/apd-overview/{ApdSummary.test.js => ApdOverview.test.js} (98%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index d16dadfcf2..488c93b7e8 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -7,31 +7,17 @@ import { useRouteMatch as actualUseRouteMatch } from 'react-router-dom'; -<<<<<<< HEAD:web/src/pages/apd/ApdPageRoutes.js import ApdHeader from '../../layout/header/ApdHeader'; import Activities from '../../containers/activity/All'; import EntryPage from '../../containers/activity/EntryPage'; import AssurancesAndCompliance from '../../containers/AssurancesAndCompliance'; import Export from '../../containers/ApdExport'; -import ApdSummary from '../../containers/ApdSummary'; +import ApdOverview from './apd-overview/ApdOverview'; import ExecutiveSummary from '../../containers/ExecutiveSummary'; import PreviousActivities from '../../containers/PreviousActivities'; import ProposedBudget from '../../containers/ProposedBudget'; import ScheduleSummary from '../../containers/ScheduleSummary'; import StateProfile from '../../components/ApdStateProfile'; -======= -import ApdHeader from '../layout/header/ApdHeader'; -import Activities from './activity/All'; -import EntryPage from './activity/EntryPage'; -import AssurancesAndCompliance from './AssurancesAndCompliance'; -import Export from './ApdExport'; -import ApdSummary from './ApdSummary'; -import ExecutiveSummary from './ExecutiveSummary'; -import PreviousActivities from './PreviousActivities'; -import ProposedBudget from './ProposedBudget'; -import ScheduleSummary from './ScheduleSummary'; -import StateProfile from '../components/ApdStateProfile'; ->>>>>>> 886da3951acbe1d7ffdbd7d636ac4e66de9a1d0f:web/src/containers/ApdPageRoutes.js const ApdPageRoutes = ({ apdId, useRouteMatch }) => { const { path } = useRouteMatch(); @@ -54,7 +40,7 @@ const ApdPageRoutes = ({ apdId, useRouteMatch }) => { - + diff --git a/web/src/pages/apd/apd-overview/ApdSummary.js b/web/src/pages/apd/apd-overview/ApdOverview.js similarity index 96% rename from web/src/pages/apd/apd-overview/ApdSummary.js rename to web/src/pages/apd/apd-overview/ApdOverview.js index a7c3b47ffc..fbe18e0131 100644 --- a/web/src/pages/apd/apd-overview/ApdSummary.js +++ b/web/src/pages/apd/apd-overview/ApdOverview.js @@ -19,7 +19,7 @@ import { Section } from '../../../components/Section'; import { t } from '../../../i18n'; import { selectSummary } from '../../../reducers/apd.selectors'; -const ApdSummary = ({ +const ApdOverview = ({ addApdYear, name, narrativeHIE, @@ -173,7 +173,7 @@ const ApdSummary = ({ ); }; -ApdSummary.propTypes = { +ApdOverview.propTypes = { addApdYear: PropTypes.func.isRequired, removeApdYear: PropTypes.func.isRequired, name: PropTypes.string.isRequired, @@ -202,6 +202,6 @@ const mapDispatchToProps = { setOverview: setProgramOverview }; -export default connect(mapStateToProps, mapDispatchToProps)(ApdSummary); +export default connect(mapStateToProps, mapDispatchToProps)(ApdOverview); -export { ApdSummary as plain, mapStateToProps, mapDispatchToProps }; +export { ApdOverview as plain, mapStateToProps, mapDispatchToProps }; diff --git a/web/src/pages/apd/apd-overview/ApdSummary.test.js b/web/src/pages/apd/apd-overview/ApdOverview.test.js similarity index 98% rename from web/src/pages/apd/apd-overview/ApdSummary.test.js rename to web/src/pages/apd/apd-overview/ApdOverview.test.js index 46b82bb8d9..efe6177250 100644 --- a/web/src/pages/apd/apd-overview/ApdSummary.test.js +++ b/web/src/pages/apd/apd-overview/ApdOverview.test.js @@ -2,9 +2,9 @@ import React from 'react'; import { renderWithConnection, screen } from 'apd-testing-library'; import userEvent from '@testing-library/user-event'; -import ApdSummary from './ApdSummary'; +import ApdSummary from './ApdOverview'; -jest.mock('../util/api', () => ({ +jest.mock('../../../util/api', () => ({ get: jest.fn(), post: jest.fn(), patch: jest.fn(), From 0bfb0eec922c3f7ee2f33a4692ec5de145fa1b17 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Fri, 25 Mar 2022 09:47:04 -0400 Subject: [PATCH 19/29] key state refactor --- .../ApdKeyPersonForm.test.js.snap | 564 ------------------ .../ApdKeyPersonReview.test.js.snap | 160 ----- web/src/containers/ApdKeyPerson/index.js | 4 - .../key-state-personnel}/ApdKeyPersonForm.js | 6 +- .../ApdKeyPersonForm.test.js | 0 .../ApdKeyPersonReview.js | 4 +- .../ApdKeyPersonReview.test.js | 0 .../ApdStateKeyPersonnel.js | 25 +- .../ApdStateKeyPersonnel.test.js | 0 .../ApdStateProfileMedicaidOffice.js | 18 +- .../ApdStateProfileMedicaidOffice.test.js | 0 .../key-state-personnel/KeyStatePersonnel.js} | 12 +- .../KeyStatePersonnelReadOnly.js} | 2 +- .../KeyStatePersonnelReadOnly.test.js} | 2 +- 14 files changed, 38 insertions(+), 759 deletions(-) delete mode 100644 web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonForm.test.js.snap delete mode 100644 web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonReview.test.js.snap delete mode 100644 web/src/containers/ApdKeyPerson/index.js rename web/src/{containers/ApdKeyPerson => pages/apd/key-state-personnel}/ApdKeyPersonForm.js (96%) rename web/src/{containers/ApdKeyPerson => pages/apd/key-state-personnel}/ApdKeyPersonForm.test.js (100%) rename web/src/{containers/ApdKeyPerson => pages/apd/key-state-personnel}/ApdKeyPersonReview.js (96%) rename web/src/{containers/ApdKeyPerson => pages/apd/key-state-personnel}/ApdKeyPersonReview.test.js (100%) rename web/src/{containers => pages/apd/key-state-personnel}/ApdStateKeyPersonnel.js (78%) rename web/src/{containers => pages/apd/key-state-personnel}/ApdStateKeyPersonnel.test.js (100%) rename web/src/{containers => pages/apd/key-state-personnel}/ApdStateProfileMedicaidOffice.js (92%) rename web/src/{containers => pages/apd/key-state-personnel}/ApdStateProfileMedicaidOffice.test.js (100%) rename web/src/{components/ApdStateProfile.js => pages/apd/key-state-personnel/KeyStatePersonnel.js} (66%) rename web/src/{containers/viewOnly/ApdStateProfile.js => pages/apd/key-state-personnel/KeyStatePersonnelReadOnly.js} (98%) rename web/src/{containers/viewOnly/ApdStateProfile.test.js => pages/apd/key-state-personnel/KeyStatePersonnelReadOnly.test.js} (97%) diff --git a/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonForm.test.js.snap b/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonForm.test.js.snap deleted file mode 100644 index 3c151292b0..0000000000 --- a/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonForm.test.js.snap +++ /dev/null @@ -1,564 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`the ApdKeyPersonForm component renders correctly 1`] = ` - -
    -

    - Additional Key Personnel -

    -

    - Provide the name, email, and role for this key personnel. If applicable, provide the individual's total annual cost (including benefits) and their allocation to the overall project work. -

    - - -
    - - - - - - -
    -
    -
    - - -
    - - - - - - -
    -
    -
    - - -
    - - - - - - -
    -
    -
    - , - "label": "Yes", - "value": "yes", - }, - Object { - "checked": false, - "label": "No", - "value": "no", - }, - ] - } - label="Does this person have costs directly attributable to this program?" - name="apd-state-profile-hascosts1" - onChange={[Function]} - type="radio" - > - -
    - - - - Does this person have costs directly attributable to this program? - - - - - } - inputClassName="" - inputRef={[Function]} - key="yes" - label="Yes" - name="apd-state-profile-hascosts1" - onChange={[Function]} - type="radio" - value="yes" - > -
    - - - - -
    -
    - -
    - - - - -
    -
    -
    -
    -
    - -
    -
    -`; - -exports[`the ApdKeyPersonForm component renders correctly if the person does not have costs 1`] = ` -
    -

    - Additional Key Personnel -

    -

    - Provide the name, email, and role for this key personnel. If applicable, provide the individual's total annual cost (including benefits) and their allocation to the overall project work. -

    - - - - , - "label": "Yes", - "value": "yes", - }, - Object { - "checked": false, - "label": "No", - "value": "no", - }, - ] - } - label="Does this person have costs directly attributable to this program?" - name="apd-state-profile-hascosts1" - onChange={[Function]} - type="radio" - /> - - -`; - -exports[`the ApdKeyPersonForm component renders correctly if the person is a primary contact 1`] = ` -
    -

    - Primary APD Point of Contact -

    -

    - Personnel listed in this section must be assigned to APD by name, role, time commitment, and cost, where applicable. -

    - - - - , - "label": "Yes", - "value": "yes", - }, - Object { - "checked": false, - "label": "No", - "value": "no", - }, - ] - } - label="Does this person have costs directly attributable to this program?" - name="apd-state-profile-hascosts0" - onChange={[Function]} - type="radio" - /> - - -`; diff --git a/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonReview.test.js.snap b/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonReview.test.js.snap deleted file mode 100644 index f44b59970f..0000000000 --- a/web/src/containers/ApdKeyPerson/__snapshots__/ApdKeyPersonReview.test.js.snap +++ /dev/null @@ -1,160 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`the ApdKeyPersonReview component renders correctly 1`] = ` - -
    - -
      -
    • - The Builder -
    • -
    -
    -
    - - FFY - 1992 - Cost: - - - 100 - - | - - FTE: - - 0.32 - | - - Total: - - - 32 - -
    -
    - - FFY - 1993 - Cost: - - - 300 - - | - - FTE: - - 0.84 - | - - Total: - - - 252 - -
    -
    -
    -
    -
    - -
      -
    • - The Builder -
    • -
    • - email address -
    • -
    -
    -
    - - FFY - 1992 - Cost: - - - 100 - - | - - FTE: - - 0.32 - | - - Total: - - - 32 - -
    -
    - - FFY - 1993 - Cost: - - - 300 - - | - - FTE: - - 0.84 - | - - Total: - - - 252 - -
    -
    -
    -
    -
    -`; diff --git a/web/src/containers/ApdKeyPerson/index.js b/web/src/containers/ApdKeyPerson/index.js deleted file mode 100644 index 7734913c7e..0000000000 --- a/web/src/containers/ApdKeyPerson/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import ApdKeyPersonForm from './ApdKeyPersonForm'; -import ApdKeyPersonReview from './ApdKeyPersonReview'; - -export { ApdKeyPersonForm, ApdKeyPersonReview }; diff --git a/web/src/containers/ApdKeyPerson/ApdKeyPersonForm.js b/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.js similarity index 96% rename from web/src/containers/ApdKeyPerson/ApdKeyPersonForm.js rename to web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.js index fe286ec2ff..3a99e149b2 100644 --- a/web/src/containers/ApdKeyPerson/ApdKeyPersonForm.js +++ b/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.js @@ -4,11 +4,11 @@ import React, { forwardRef, useReducer } from 'react'; import { connect } from 'react-redux'; import { titleCase } from 'title-case'; -import { t } from '../../i18n'; +import { t } from '../../../i18n'; -import PersonCostForm from '../../components/PersonCostForm'; +import PersonCostForm from '../../../components/PersonCostForm'; -import { saveKeyPersonnel } from '../../actions/editApd'; +import { saveKeyPersonnel } from '../../../actions/editApd'; const tRoot = 'apd.stateProfile.keyPersonnel'; diff --git a/web/src/containers/ApdKeyPerson/ApdKeyPersonForm.test.js b/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js similarity index 100% rename from web/src/containers/ApdKeyPerson/ApdKeyPersonForm.test.js rename to web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js diff --git a/web/src/containers/ApdKeyPerson/ApdKeyPersonReview.js b/web/src/pages/apd/key-state-personnel/ApdKeyPersonReview.js similarity index 96% rename from web/src/containers/ApdKeyPerson/ApdKeyPersonReview.js rename to web/src/pages/apd/key-state-personnel/ApdKeyPersonReview.js index 4d467824dc..9d25ada52c 100644 --- a/web/src/containers/ApdKeyPerson/ApdKeyPersonReview.js +++ b/web/src/pages/apd/key-state-personnel/ApdKeyPersonReview.js @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React, { Fragment, useMemo } from 'react'; -import Dollars from '../../components/Dollars'; -import Review from '../../components/Review'; +import Dollars from '../../../components/Dollars'; +import Review from '../../../components/Review'; const ApdStateKeyPerson = ({ expand, diff --git a/web/src/containers/ApdKeyPerson/ApdKeyPersonReview.test.js b/web/src/pages/apd/key-state-personnel/ApdKeyPersonReview.test.js similarity index 100% rename from web/src/containers/ApdKeyPerson/ApdKeyPersonReview.test.js rename to web/src/pages/apd/key-state-personnel/ApdKeyPersonReview.test.js diff --git a/web/src/containers/ApdStateKeyPersonnel.js b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js similarity index 78% rename from web/src/containers/ApdStateKeyPersonnel.js rename to web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js index 12ff2a806e..15f4f8df16 100644 --- a/web/src/containers/ApdStateKeyPersonnel.js +++ b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js @@ -2,31 +2,36 @@ import PropTypes from 'prop-types'; import React, { useState, useEffect } from 'react'; import { connect } from 'react-redux'; -import { ApdKeyPersonForm, ApdKeyPersonReview } from './ApdKeyPerson'; -import FormAndReviewList from '../components/FormAndReviewList'; -import { selectApdYears, selectKeyPersonnel } from '../reducers/apd.selectors'; +import { + ApdKeyPersonForm, + ApdKeyPersonReview +} from '../../../containers/ApdKeyPerson'; +import FormAndReviewList from '../../../components/FormAndReviewList'; +import { + selectApdYears, + selectKeyPersonnel +} from '../../../reducers/apd.selectors'; -import { removeKeyPersonnel } from '../actions/editApd'; -import { getKeyPersonnel } from '../reducers/apd'; +import { removeKeyPersonnel } from '../../../actions/editApd'; +import { getKeyPersonnel } from '../../../reducers/apd'; const ApdStateKeyPersonnel = ({ remove, list, years }) => { - const [localList, setLocalList] = useState(list); useEffect(() => { - setLocalList(list) - }, [list]) + setLocalList(list); + }, [list]); const addClick = () => { const isPrimary = list.length === 0; const newListItem = getKeyPersonnel(years, isPrimary); setLocalList([...localList, newListItem]); }; - + const onCancel = () => { setLocalList(list); }; - + return ( { const { medicaidDirector, medicaidOffice } = stateProfile; - const handleChange = action => ({ target: { value } }) => { - action(value); - }; + const handleChange = + action => + ({ target: { value } }) => { + action(value); + }; return ( diff --git a/web/src/containers/ApdStateProfileMedicaidOffice.test.js b/web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js similarity index 100% rename from web/src/containers/ApdStateProfileMedicaidOffice.test.js rename to web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js diff --git a/web/src/components/ApdStateProfile.js b/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js similarity index 66% rename from web/src/components/ApdStateProfile.js rename to web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js index 953f94b7a4..d28e7420a6 100644 --- a/web/src/components/ApdStateProfile.js +++ b/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js @@ -1,15 +1,15 @@ import React from 'react'; -import { Section, Subsection } from './Section'; -import MedicaidOffice from '../containers/ApdStateProfileMedicaidOffice'; -import KeyPersonnel from '../containers/ApdStateKeyPersonnel'; -import Waypoint from '../containers/ConnectedWaypoint'; -import AlertMissingFFY from './AlertMissingFFY'; +import { Section, Subsection } from '../../../components/Section'; +import MedicaidOffice from './ApdStateProfileMedicaidOffice'; +import KeyPersonnel from './ApdStateKeyPersonnel'; +import Waypoint from '../../../containers/ConnectedWaypoint'; +import AlertMissingFFY from '../../../components/AlertMissingFFY'; const ApdStateProfile = () => ( - +
    { const costByYear = person => diff --git a/web/src/containers/viewOnly/ApdStateProfile.test.js b/web/src/pages/apd/key-state-personnel/KeyStatePersonnelReadOnly.test.js similarity index 97% rename from web/src/containers/viewOnly/ApdStateProfile.test.js rename to web/src/pages/apd/key-state-personnel/KeyStatePersonnelReadOnly.test.js index d39415f7fa..c6e3c74572 100644 --- a/web/src/containers/viewOnly/ApdStateProfile.test.js +++ b/web/src/pages/apd/key-state-personnel/KeyStatePersonnelReadOnly.test.js @@ -1,7 +1,7 @@ import React from 'react'; import { render, screen } from 'apd-testing-library'; -import ApdStateProfile from './ApdStateProfile'; +import ApdStateProfile from './KeyStatePersonnelReadOnly'; describe('APD Summary/viewOnly component', () => { test('renders the correct message when no key personnel are provided', () => { From 42428bf751a903a5bfc259fc34307d8e559ca6e2 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Fri, 25 Mar 2022 10:10:03 -0400 Subject: [PATCH 20/29] updated tests --- web/src/pages/apd/ApdPageRoutes.js | 4 +- web/src/pages/apd/ApdReadOnly.js | 4 +- .../ApdKeyPersonForm.test.js | 6 +- .../ApdStateKeyPersonnel.js | 6 +- .../ApdStateKeyPersonnel.test.js | 2 +- .../ApdStateProfileMedicaidOffice.test.js | 2 +- .../key-state-personnel/KeyStatePersonnel.js | 4 +- .../ApdKeyPersonForm.test.js.snap | 564 ++++++++++++++++++ .../ApdKeyPersonReview.test.js.snap | 160 +++++ .../ApdStateKeyPersonnel.test.js.snap | 0 ...ApdStateProfileMedicaidOffice.test.js.snap | 0 11 files changed, 736 insertions(+), 16 deletions(-) create mode 100644 web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonForm.test.js.snap create mode 100644 web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonReview.test.js.snap rename web/src/{containers => pages/apd/key-state-personnel}/__snapshots__/ApdStateKeyPersonnel.test.js.snap (100%) rename web/src/{containers => pages/apd/key-state-personnel}/__snapshots__/ApdStateProfileMedicaidOffice.test.js.snap (100%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index 488c93b7e8..c6d6821e69 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -17,7 +17,7 @@ import ExecutiveSummary from '../../containers/ExecutiveSummary'; import PreviousActivities from '../../containers/PreviousActivities'; import ProposedBudget from '../../containers/ProposedBudget'; import ScheduleSummary from '../../containers/ScheduleSummary'; -import StateProfile from '../../components/ApdStateProfile'; +import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; const ApdPageRoutes = ({ apdId, useRouteMatch }) => { const { path } = useRouteMatch(); @@ -36,7 +36,7 @@ const ApdPageRoutes = ({ apdId, useRouteMatch }) => { - + diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index 1872861b4d..8c9ead6ab8 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -12,7 +12,7 @@ import { selectApdData } from '../../reducers/apd.selectors'; import { selectBudget } from '../../reducers/budget.selectors'; import { getAPDYearRange } from '../../reducers/apd'; import { getUserStateOrTerritory } from '../../reducers/user.selector'; -import ApdStateProfile from '../../containers/viewOnly/ApdStateProfile'; +import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; import ApdSummary from '../../containers/viewOnly/ApdSummary'; import PreviousActivities from '../../containers/viewOnly/PreviousActivities'; import Activities from '../../containers/viewOnly/activities/All'; @@ -106,7 +106,7 @@ const ApdViewOnly = ({

    - diff --git a/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js b/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js index e9e3836024..dfbfc71f92 100644 --- a/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js +++ b/web/src/pages/apd/key-state-personnel/ApdKeyPersonForm.test.js @@ -3,7 +3,7 @@ import React from 'react'; import { plain as KeyPersonForm, mapDispatchToProps } from './ApdKeyPersonForm'; -import { saveKeyPersonnel } from '../../actions/editApd'; +import { saveKeyPersonnel } from '../../../actions/editApd'; describe('the ApdKeyPersonForm component', () => { const props = { @@ -53,9 +53,7 @@ describe('the ApdKeyPersonForm component', () => { describe('events', () => { it('handles submitting the form', () => { - component - .find('form') - .simulate('submit'); + component.find('form').simulate('submit'); expect(props.savePerson).toHaveBeenCalled(); }); diff --git a/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js index 15f4f8df16..ab5c0c5542 100644 --- a/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js +++ b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.js @@ -2,10 +2,8 @@ import PropTypes from 'prop-types'; import React, { useState, useEffect } from 'react'; import { connect } from 'react-redux'; -import { - ApdKeyPersonForm, - ApdKeyPersonReview -} from '../../../containers/ApdKeyPerson'; +import ApdKeyPersonForm from './ApdKeyPersonForm'; +import ApdKeyPersonReview from './ApdKeyPersonReview'; import FormAndReviewList from '../../../components/FormAndReviewList'; import { selectApdYears, diff --git a/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.test.js b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.test.js index c5bf6cc120..eee87913ca 100644 --- a/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.test.js +++ b/web/src/pages/apd/key-state-personnel/ApdStateKeyPersonnel.test.js @@ -6,7 +6,7 @@ import { mapStateToProps, mapDispatchToProps } from './ApdStateKeyPersonnel'; -import { removeKeyPersonnel } from '../actions/editApd'; +import { removeKeyPersonnel } from '../../../actions/editApd'; describe('apd state profile, Medicaid office component', () => { const props = { diff --git a/web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js b/web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js index 7aa1b9bfe5..f2c69297f2 100644 --- a/web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js +++ b/web/src/pages/apd/key-state-personnel/ApdStateProfileMedicaidOffice.test.js @@ -16,7 +16,7 @@ import { setMedicaidOfficeCity, setMedicaidOfficeState, setMedicaidOfficeZip -} from '../actions/editApd'; +} from '../../../actions/editApd'; describe('apd state profile, Medicaid office component', () => { const props = { diff --git a/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js b/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js index d28e7420a6..9bf983a486 100644 --- a/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js +++ b/web/src/pages/apd/key-state-personnel/KeyStatePersonnel.js @@ -6,7 +6,7 @@ import KeyPersonnel from './ApdStateKeyPersonnel'; import Waypoint from '../../../containers/ConnectedWaypoint'; import AlertMissingFFY from '../../../components/AlertMissingFFY'; -const ApdStateProfile = () => ( +const KeyStatePersonnel = () => ( @@ -30,4 +30,4 @@ const ApdStateProfile = () => ( ); -export default ApdStateProfile; +export default KeyStatePersonnel; diff --git a/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonForm.test.js.snap b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonForm.test.js.snap new file mode 100644 index 0000000000..3c151292b0 --- /dev/null +++ b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonForm.test.js.snap @@ -0,0 +1,564 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`the ApdKeyPersonForm component renders correctly 1`] = ` + +
    +

    + Additional Key Personnel +

    +

    + Provide the name, email, and role for this key personnel. If applicable, provide the individual's total annual cost (including benefits) and their allocation to the overall project work. +

    + + +
    + + + + + + +
    +
    +
    + + +
    + + + + + + +
    +
    +
    + + +
    + + + + + + +
    +
    +
    + , + "label": "Yes", + "value": "yes", + }, + Object { + "checked": false, + "label": "No", + "value": "no", + }, + ] + } + label="Does this person have costs directly attributable to this program?" + name="apd-state-profile-hascosts1" + onChange={[Function]} + type="radio" + > + +
    + + + + Does this person have costs directly attributable to this program? + + + + + } + inputClassName="" + inputRef={[Function]} + key="yes" + label="Yes" + name="apd-state-profile-hascosts1" + onChange={[Function]} + type="radio" + value="yes" + > +
    + + + + +
    +
    + +
    + + + + +
    +
    +
    +
    +
    + +
    +
    +`; + +exports[`the ApdKeyPersonForm component renders correctly if the person does not have costs 1`] = ` +
    +

    + Additional Key Personnel +

    +

    + Provide the name, email, and role for this key personnel. If applicable, provide the individual's total annual cost (including benefits) and their allocation to the overall project work. +

    + + + + , + "label": "Yes", + "value": "yes", + }, + Object { + "checked": false, + "label": "No", + "value": "no", + }, + ] + } + label="Does this person have costs directly attributable to this program?" + name="apd-state-profile-hascosts1" + onChange={[Function]} + type="radio" + /> + + +`; + +exports[`the ApdKeyPersonForm component renders correctly if the person is a primary contact 1`] = ` +
    +

    + Primary APD Point of Contact +

    +

    + Personnel listed in this section must be assigned to APD by name, role, time commitment, and cost, where applicable. +

    + + + + , + "label": "Yes", + "value": "yes", + }, + Object { + "checked": false, + "label": "No", + "value": "no", + }, + ] + } + label="Does this person have costs directly attributable to this program?" + name="apd-state-profile-hascosts0" + onChange={[Function]} + type="radio" + /> + + +`; diff --git a/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonReview.test.js.snap b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonReview.test.js.snap new file mode 100644 index 0000000000..f44b59970f --- /dev/null +++ b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdKeyPersonReview.test.js.snap @@ -0,0 +1,160 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`the ApdKeyPersonReview component renders correctly 1`] = ` + +
    + +
      +
    • + The Builder +
    • +
    +
    +
    + + FFY + 1992 + Cost: + + + 100 + + | + + FTE: + + 0.32 + | + + Total: + + + 32 + +
    +
    + + FFY + 1993 + Cost: + + + 300 + + | + + FTE: + + 0.84 + | + + Total: + + + 252 + +
    +
    +
    +
    +
    + +
      +
    • + The Builder +
    • +
    • + email address +
    • +
    +
    +
    + + FFY + 1992 + Cost: + + + 100 + + | + + FTE: + + 0.32 + | + + Total: + + + 32 + +
    +
    + + FFY + 1993 + Cost: + + + 300 + + | + + FTE: + + 0.84 + | + + Total: + + + 252 + +
    +
    +
    +
    +
    +`; diff --git a/web/src/containers/__snapshots__/ApdStateKeyPersonnel.test.js.snap b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdStateKeyPersonnel.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdStateKeyPersonnel.test.js.snap rename to web/src/pages/apd/key-state-personnel/__snapshots__/ApdStateKeyPersonnel.test.js.snap diff --git a/web/src/containers/__snapshots__/ApdStateProfileMedicaidOffice.test.js.snap b/web/src/pages/apd/key-state-personnel/__snapshots__/ApdStateProfileMedicaidOffice.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdStateProfileMedicaidOffice.test.js.snap rename to web/src/pages/apd/key-state-personnel/__snapshots__/ApdStateProfileMedicaidOffice.test.js.snap From b7f5f08a30567bc847b9176784f75a552eccfdfe Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 11:03:14 -0400 Subject: [PATCH 21/29] previous activity restructure --- .../ApdPreviousActivityTable.js | 28 +++++++++++-------- .../ApdPreviousActivityTable.test.js | 2 +- .../ApdPreviousActivityTableMMIS.js | 10 +++---- .../ApdPreviousActivityTableMMIS.test.js | 2 +- .../ApdPreviousActivityTableTotal.js | 6 ++-- .../ApdPreviousActivityTableTotal.test.js | 0 .../PreviousActivities.js | 14 +++++----- .../PreviousActivities.test.js | 2 +- .../PreviousActivitiesReadOnly.js} | 8 +++--- 9 files changed, 38 insertions(+), 34 deletions(-) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTable.js (90%) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTable.test.js (98%) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTableMMIS.js (96%) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTableMMIS.test.js (99%) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTableTotal.js (90%) rename web/src/{containers => pages/apd/previous-activities}/ApdPreviousActivityTableTotal.test.js (100%) rename web/src/{containers => pages/apd/previous-activities}/PreviousActivities.js (82%) rename web/src/{containers => pages/apd/previous-activities}/PreviousActivities.test.js (93%) rename web/src/{containers/viewOnly/PreviousActivities.js => pages/apd/previous-activities/PreviousActivitiesReadOnly.js} (74%) diff --git a/web/src/containers/ApdPreviousActivityTable.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTable.js similarity index 90% rename from web/src/containers/ApdPreviousActivityTable.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTable.js index 296abc4d73..ff5719b430 100644 --- a/web/src/containers/ApdPreviousActivityTable.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTable.js @@ -2,15 +2,15 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import DollarField from '../components/DollarField'; -import Dollars from '../components/Dollars'; +import DollarField from '../../../components/DollarField'; +import Dollars from '../../../components/Dollars'; import { setPreviousActivityApprovedExpenseForHITandHIE, setPreviousActivityFederalActualExpenseForHITandHIE -} from '../actions/editApd'; -import { TABLE_HEADERS } from '../constants'; +} from '../../../actions/editApd'; +import { TABLE_HEADERS } from '../../../constants'; -import { selectPreviousHITHIEActivities } from '../reducers/apd.selectors'; +import { selectPreviousHITHIEActivities } from '../../../reducers/apd.selectors'; const ApdPreviousActivityTable = ({ isViewOnly, @@ -20,13 +20,17 @@ const ApdPreviousActivityTable = ({ }) => { const years = Object.keys(previousActivityExpenses); - const getActualsHandler = year => ({ target: { value } }) => { - setActual(year, value); - }; - - const getApprovedHandler = year => ({ target: { value } }) => { - setApproved(year, value); - }; + const getActualsHandler = + year => + ({ target: { value } }) => { + setActual(year, value); + }; + + const getApprovedHandler = + year => + ({ target: { value } }) => { + setApproved(year, value); + }; return ( diff --git a/web/src/containers/ApdPreviousActivityTable.test.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTable.test.js similarity index 98% rename from web/src/containers/ApdPreviousActivityTable.test.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTable.test.js index f79ded3532..21402845f0 100644 --- a/web/src/containers/ApdPreviousActivityTable.test.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTable.test.js @@ -10,7 +10,7 @@ import { import { setPreviousActivityApprovedExpenseForHITandHIE, setPreviousActivityFederalActualExpenseForHITandHIE -} from '../actions/editApd'; +} from '../../../actions/editApd'; describe('apd previous activity table, mmis component', () => { const props = { diff --git a/web/src/containers/ApdPreviousActivityTableMMIS.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.js similarity index 96% rename from web/src/containers/ApdPreviousActivityTableMMIS.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.js index f05342232e..df77373613 100644 --- a/web/src/containers/ApdPreviousActivityTableMMIS.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React, { Fragment } from 'react'; import { connect } from 'react-redux'; -import DollarField from '../components/DollarField'; -import Dollars from '../components/Dollars'; +import DollarField from '../../../components/DollarField'; +import Dollars from '../../../components/Dollars'; import { setPreviousActivityApprovedExpenseforMMIS50FFP, setPreviousActivityApprovedExpenseforMMIS75FFP, @@ -11,9 +11,9 @@ import { setPreviousActivityFederalActualExpenseforMMIS50FFP, setPreviousActivityFederalActualExpenseforMMIS75FFP, setPreviousActivityFederalActualExpenseforMMIS90FFP -} from '../actions/editApd'; -import { TABLE_HEADERS } from '../constants'; -import { selectPreviousMMISActivities } from '../reducers/apd.selectors'; +} from '../../../actions/editApd'; +import { TABLE_HEADERS } from '../../../constants'; +import { selectPreviousMMISActivities } from '../../../reducers/apd.selectors'; const ApdPreviousActivityTableMMIS = ({ isViewOnly, diff --git a/web/src/containers/ApdPreviousActivityTableMMIS.test.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.test.js similarity index 99% rename from web/src/containers/ApdPreviousActivityTableMMIS.test.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.test.js index a324f6552b..a0d5191225 100644 --- a/web/src/containers/ApdPreviousActivityTableMMIS.test.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableMMIS.test.js @@ -14,7 +14,7 @@ import { setPreviousActivityFederalActualExpenseforMMIS50FFP, setPreviousActivityFederalActualExpenseforMMIS75FFP, setPreviousActivityFederalActualExpenseforMMIS90FFP -} from '../actions/editApd'; +} from '../../../actions/editApd'; describe('apd previous activity table, mmis component', () => { const props = { diff --git a/web/src/containers/ApdPreviousActivityTableTotal.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.js similarity index 90% rename from web/src/containers/ApdPreviousActivityTableTotal.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.js index 40f555a599..4335088bb9 100644 --- a/web/src/containers/ApdPreviousActivityTableTotal.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.js @@ -2,9 +2,9 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import Dollars from '../components/Dollars'; -import { TABLE_HEADERS } from '../constants'; -import { selectPreviousActivityExpensesTotals } from '../reducers/apd.selectors'; +import Dollars from '../../../components/Dollars'; +import { TABLE_HEADERS } from '../../../constants'; +import { selectPreviousActivityExpensesTotals } from '../../../reducers/apd.selectors'; const ApdPreviousActivityTableMMIS = ({ totals }) => { const years = Object.keys(totals); diff --git a/web/src/containers/ApdPreviousActivityTableTotal.test.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js similarity index 100% rename from web/src/containers/ApdPreviousActivityTableTotal.test.js rename to web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js diff --git a/web/src/containers/PreviousActivities.js b/web/src/pages/apd/previous-activities/PreviousActivities.js similarity index 82% rename from web/src/containers/PreviousActivities.js rename to web/src/pages/apd/previous-activities/PreviousActivities.js index 7ee593ab53..42ce7eafa7 100644 --- a/web/src/containers/PreviousActivities.js +++ b/web/src/pages/apd/previous-activities/PreviousActivities.js @@ -6,13 +6,13 @@ import { titleCase } from 'title-case'; import ApdPreviousActivityTableHI from './ApdPreviousActivityTable'; import ApdPreviousActivityTableMMIS from './ApdPreviousActivityTableMMIS'; import ApdPreviousActivityTableTotal from './ApdPreviousActivityTableTotal'; -import Waypoint from './ConnectedWaypoint'; -import { setPreviousActivitySummary } from '../actions/editApd'; -import RichText from '../components/RichText'; -import { Section, Subsection } from '../components/Section'; -import { t } from '../i18n'; -import { selectPreviousActivitySummary } from '../reducers/apd.selectors'; -import AlertMissingFFY from '../components/AlertMissingFFY'; +import Waypoint from '../../../containers/ConnectedWaypoint'; +import { setPreviousActivitySummary } from '../../../actions/editApd'; +import RichText from '../../../components/RichText'; +import { Section, Subsection } from '../../../components/Section'; +import { t } from '../../../i18n'; +import { selectPreviousActivitySummary } from '../../../reducers/apd.selectors'; +import AlertMissingFFY from '../../../components/AlertMissingFFY'; const PreviousActivities = ({ previousActivitySummary, setSummary }) => { const onChange = value => setSummary(value); diff --git a/web/src/containers/PreviousActivities.test.js b/web/src/pages/apd/previous-activities/PreviousActivities.test.js similarity index 93% rename from web/src/containers/PreviousActivities.test.js rename to web/src/pages/apd/previous-activities/PreviousActivities.test.js index 87e72ed87a..377ca651b1 100644 --- a/web/src/containers/PreviousActivities.test.js +++ b/web/src/pages/apd/previous-activities/PreviousActivities.test.js @@ -7,7 +7,7 @@ import { mapDispatchToProps } from './PreviousActivities'; -import { setPreviousActivitySummary } from '../actions/editApd'; +import { setPreviousActivitySummary } from '../../../actions/editApd'; describe('previous activities component', () => { const props = { diff --git a/web/src/containers/viewOnly/PreviousActivities.js b/web/src/pages/apd/previous-activities/PreviousActivitiesReadOnly.js similarity index 74% rename from web/src/containers/viewOnly/PreviousActivities.js rename to web/src/pages/apd/previous-activities/PreviousActivitiesReadOnly.js index 73361e3c3c..8cccff1687 100644 --- a/web/src/containers/viewOnly/PreviousActivities.js +++ b/web/src/pages/apd/previous-activities/PreviousActivitiesReadOnly.js @@ -2,11 +2,11 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import ApdPreviousActivityTableHI from '../ApdPreviousActivityTable'; -import ApdPreviousActivityTableMMIS from '../ApdPreviousActivityTableMMIS'; -import ApdPreviousActivityTableTotal from '../ApdPreviousActivityTableTotal'; +import ApdPreviousActivityTableHI from './ApdPreviousActivityTable'; +import ApdPreviousActivityTableMMIS from './ApdPreviousActivityTableMMIS'; +import ApdPreviousActivityTableTotal from './ApdPreviousActivityTableTotal'; -import { selectPreviousActivitySummary } from '../../reducers/apd.selectors'; +import { selectPreviousActivitySummary } from '../../../reducers/apd.selectors'; const PreviousActivities = ({ previousActivitySummary }) => { /* eslint-disable react/no-danger */ From aaa28f46c2049f1930e30315fa644ef88e084a73 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 11:16:52 -0400 Subject: [PATCH 22/29] updated tests --- web/src/pages/apd/ApdPageRoutes.js | 2 +- web/src/pages/apd/ApdReadOnly.js | 2 +- .../__snapshots__/ApdPreviousActivityTable.test.js.snap | 0 .../__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap | 0 .../__snapshots__/ApdPreviousActivityTableTotal.test.js.snap | 0 .../__snapshots__/PreviousActivities.test.js.snap | 0 6 files changed, 2 insertions(+), 2 deletions(-) rename web/src/{containers => pages/apd/previous-activities}/__snapshots__/ApdPreviousActivityTable.test.js.snap (100%) rename web/src/{containers => pages/apd/previous-activities}/__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap (100%) rename web/src/{containers => pages/apd/previous-activities}/__snapshots__/ApdPreviousActivityTableTotal.test.js.snap (100%) rename web/src/{containers => pages/apd/previous-activities}/__snapshots__/PreviousActivities.test.js.snap (100%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index c6d6821e69..7cf2f5ae02 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -14,7 +14,7 @@ import AssurancesAndCompliance from '../../containers/AssurancesAndCompliance'; import Export from '../../containers/ApdExport'; import ApdOverview from './apd-overview/ApdOverview'; import ExecutiveSummary from '../../containers/ExecutiveSummary'; -import PreviousActivities from '../../containers/PreviousActivities'; +import PreviousActivities from './previous-activities/PreviousActivities'; import ProposedBudget from '../../containers/ProposedBudget'; import ScheduleSummary from '../../containers/ScheduleSummary'; import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index 8c9ead6ab8..c5228ddc7b 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -14,7 +14,7 @@ import { getAPDYearRange } from '../../reducers/apd'; import { getUserStateOrTerritory } from '../../reducers/user.selector'; import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; import ApdSummary from '../../containers/viewOnly/ApdSummary'; -import PreviousActivities from '../../containers/viewOnly/PreviousActivities'; +import PreviousActivities from './previous-activities/PreviousActivities'; import Activities from '../../containers/viewOnly/activities/All'; import ScheduleSummary from '../../containers/viewOnly/ScheduleSummary'; import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; diff --git a/web/src/containers/__snapshots__/ApdPreviousActivityTable.test.js.snap b/web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTable.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdPreviousActivityTable.test.js.snap rename to web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTable.test.js.snap diff --git a/web/src/containers/__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap b/web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap rename to web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTableMMIS.test.js.snap diff --git a/web/src/containers/__snapshots__/ApdPreviousActivityTableTotal.test.js.snap b/web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTableTotal.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ApdPreviousActivityTableTotal.test.js.snap rename to web/src/pages/apd/previous-activities/__snapshots__/ApdPreviousActivityTableTotal.test.js.snap diff --git a/web/src/containers/__snapshots__/PreviousActivities.test.js.snap b/web/src/pages/apd/previous-activities/__snapshots__/PreviousActivities.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/PreviousActivities.test.js.snap rename to web/src/pages/apd/previous-activities/__snapshots__/PreviousActivities.test.js.snap From 3e284d5c0a70a5bc32f8faad5bc042e48ab1efef Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 11:40:15 -0400 Subject: [PATCH 23/29] schedule summary refactor --- web/src/pages/apd/ApdPageRoutes.js | 2 +- web/src/pages/apd/ApdReadOnly.js | 2 +- .../apd/schedule-summary}/ScheduleSummary.js | 36 ++++++++++--------- .../schedule-summary}/ScheduleSummary.test.js | 0 .../ScheduleSummaryReadOnly.js} | 4 +-- .../ScheduleSummaryReadOnly.test.js} | 2 +- 6 files changed, 25 insertions(+), 21 deletions(-) rename web/src/{containers => pages/apd/schedule-summary}/ScheduleSummary.js (75%) rename web/src/{containers => pages/apd/schedule-summary}/ScheduleSummary.test.js (100%) rename web/src/{containers/viewOnly/ScheduleSummary.js => pages/apd/schedule-summary/ScheduleSummaryReadOnly.js} (96%) rename web/src/{containers/viewOnly/ScheduleSummary.test.js => pages/apd/schedule-summary/ScheduleSummaryReadOnly.test.js} (95%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index 7cf2f5ae02..5bd3886ba8 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -16,7 +16,7 @@ import ApdOverview from './apd-overview/ApdOverview'; import ExecutiveSummary from '../../containers/ExecutiveSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; import ProposedBudget from '../../containers/ProposedBudget'; -import ScheduleSummary from '../../containers/ScheduleSummary'; +import ScheduleSummary from './schedule-summary/ScheduleSummary'; import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; const ApdPageRoutes = ({ apdId, useRouteMatch }) => { diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index c5228ddc7b..fa5fd381c3 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -16,7 +16,7 @@ import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; import ApdSummary from '../../containers/viewOnly/ApdSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; import Activities from '../../containers/viewOnly/activities/All'; -import ScheduleSummary from '../../containers/viewOnly/ScheduleSummary'; +import ScheduleSummary from '../../containers/viewOnly/ScheduleSummaryReadOnly'; import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; import AssuranceAndCompliance from '../../containers/viewOnly/AssurancesAndCompliance'; import ExecutiveSummary from '../../containers/viewOnly/ExecutiveSummary'; diff --git a/web/src/containers/ScheduleSummary.js b/web/src/pages/apd/schedule-summary/ScheduleSummary.js similarity index 75% rename from web/src/containers/ScheduleSummary.js rename to web/src/pages/apd/schedule-summary/ScheduleSummary.js index 260dca3b4c..48405f34c6 100644 --- a/web/src/containers/ScheduleSummary.js +++ b/web/src/pages/apd/schedule-summary/ScheduleSummary.js @@ -2,16 +2,16 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import { t } from '../i18n'; -import { Section, Subsection } from '../components/Section'; -import { selectActivitySchedule } from '../reducers/activities.selectors'; -import Waypoint from './ConnectedWaypoint'; -import AlertMissingFFY from '../components/AlertMissingFFY'; +import { t } from '../../../i18n'; +import { Section, Subsection } from '../../../components/Section'; +import { selectActivitySchedule } from '../../../reducers/activities.selectors'; +import Waypoint from '../../../containers/ConnectedWaypoint'; +import AlertMissingFFY from '../../../components/AlertMissingFFY'; const ScheduleSummary = ({ activities }) => ( {/* Waypoint w/o id indicates top of page */} - +
    {activities.length === 0 ? ( @@ -38,7 +38,7 @@ const ScheduleSummary = ({ activities }) => ( className="ds-u-font-weight--bold ds-u-border-right--0" style={{ width: '70%' }} > - Activity {i + 1}: {activityName || "Untitled"} Milestones + Activity {i + 1}: {activityName || 'Untitled'} Milestones
    - {milestones.map(({ end: milestoneEnd, name: milestoneName }) => ( - - - - - ))} + {milestones.map( + ({ end: milestoneEnd, name: milestoneName }) => ( + + + + + ) + )}
    {dateRange} @@ -74,19 +74,23 @@ const ScheduleSummary = ({ activities }) => ( className="ds-u-font-weight--bold ds-u-border-right--0" colSpan={2} > - Activity {i + 1}: {activityName || "Untitled"} Milestones + Activity {i + 1}: {activityName || 'Untitled'} Milestones
    {milestoneName || 'Milestone not specified'} - {milestoneEnd} -
    + {milestoneName || 'Milestone not specified'} + + {milestoneEnd} +
    )) diff --git a/web/src/containers/ScheduleSummary.test.js b/web/src/pages/apd/schedule-summary/ScheduleSummary.test.js similarity index 100% rename from web/src/containers/ScheduleSummary.test.js rename to web/src/pages/apd/schedule-summary/ScheduleSummary.test.js diff --git a/web/src/containers/viewOnly/ScheduleSummary.js b/web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.js similarity index 96% rename from web/src/containers/viewOnly/ScheduleSummary.js rename to web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.js index 649fa7a529..2ed5193797 100644 --- a/web/src/containers/viewOnly/ScheduleSummary.js +++ b/web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import { t } from '../../i18n'; -import { selectActivitySchedule } from '../../reducers/activities.selectors'; +import { t } from '../../../i18n'; +import { selectActivitySchedule } from '../../../reducers/activities.selectors'; const ScheduleSummary = ({ activities }) => (
    diff --git a/web/src/containers/viewOnly/ScheduleSummary.test.js b/web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.test.js similarity index 95% rename from web/src/containers/viewOnly/ScheduleSummary.test.js rename to web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.test.js index 60a93e2db2..b7c36825b9 100644 --- a/web/src/containers/viewOnly/ScheduleSummary.test.js +++ b/web/src/pages/apd/schedule-summary/ScheduleSummaryReadOnly.test.js @@ -1,7 +1,7 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { plain as ScheduleSummary } from './ScheduleSummary'; +import { plain as ScheduleSummary } from './ScheduleSummaryReadOnly'; const activities = [ { From 9c1cef352c31ebc00e7fb0abfb73eba685fd8185 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 11:51:50 -0400 Subject: [PATCH 24/29] update tests --- web/src/pages/apd/ApdReadOnly.js | 2 +- .../__snapshots__/ScheduleSummary.test.js.snap | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename web/src/{containers => pages/apd/schedule-summary}/__snapshots__/ScheduleSummary.test.js.snap (100%) diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index fa5fd381c3..ae2c8f9dc4 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -16,7 +16,7 @@ import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; import ApdSummary from '../../containers/viewOnly/ApdSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; import Activities from '../../containers/viewOnly/activities/All'; -import ScheduleSummary from '../../containers/viewOnly/ScheduleSummaryReadOnly'; +import ScheduleSummary from './schedule-summary/ScheduleSummaryReadOnly'; import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; import AssuranceAndCompliance from '../../containers/viewOnly/AssurancesAndCompliance'; import ExecutiveSummary from '../../containers/viewOnly/ExecutiveSummary'; diff --git a/web/src/containers/__snapshots__/ScheduleSummary.test.js.snap b/web/src/pages/apd/schedule-summary/__snapshots__/ScheduleSummary.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ScheduleSummary.test.js.snap rename to web/src/pages/apd/schedule-summary/__snapshots__/ScheduleSummary.test.js.snap From 3c1e2af888ad60bf8e5f4ded0dcaf7ebe4ea577d Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 12:07:11 -0400 Subject: [PATCH 25/29] executive summary restructure --- .../apd/executive-summary}/ExecutiveSummary.js | 16 ++++++++-------- .../executive-summary}/ExecutiveSummary.test.js | 0 .../executive-summary}/ExecutiveSummaryBudget.js | 4 ++-- .../ExecutiveSummaryBudget.test.js | 0 .../ExecutiveSummaryReadOnly.js} | 12 ++++++------ 5 files changed, 16 insertions(+), 16 deletions(-) rename web/src/{containers => pages/apd/executive-summary}/ExecutiveSummary.js (90%) rename web/src/{containers => pages/apd/executive-summary}/ExecutiveSummary.test.js (100%) rename web/src/{containers => pages/apd/executive-summary}/ExecutiveSummaryBudget.js (99%) rename web/src/{containers => pages/apd/executive-summary}/ExecutiveSummaryBudget.test.js (100%) rename web/src/{containers/viewOnly/ExecutiveSummary.js => pages/apd/executive-summary/ExecutiveSummaryReadOnly.js} (92%) diff --git a/web/src/containers/ExecutiveSummary.js b/web/src/pages/apd/executive-summary/ExecutiveSummary.js similarity index 90% rename from web/src/containers/ExecutiveSummary.js rename to web/src/pages/apd/executive-summary/ExecutiveSummary.js index 47ce864e54..0a6d33d1e0 100644 --- a/web/src/containers/ExecutiveSummary.js +++ b/web/src/pages/apd/executive-summary/ExecutiveSummary.js @@ -4,17 +4,17 @@ import { connect } from 'react-redux'; import { useParams } from 'react-router-dom'; import ExecutiveSummaryBudget from './ExecutiveSummaryBudget'; -import Waypoint from './ConnectedWaypoint'; -import Dollars from '../components/Dollars'; -import Review from '../components/Review'; -import { Section, Subsection } from '../components/Section'; +import Waypoint from '../../../containers/ConnectedWaypoint'; +import Dollars from '../../../components/Dollars'; +import Review from '../../../components/Review'; +import { Section, Subsection } from '../../../components/Section'; -import { selectApdYears } from '../reducers/apd.selectors'; +import { selectApdYears } from '../../../reducers/apd.selectors'; import { selectBudgetExecutiveSummary, selectBudgetGrandTotal -} from '../reducers/budget.selectors'; -import AlertMissingFFY from '../components/AlertMissingFFY'; +} from '../../../reducers/budget.selectors'; +import AlertMissingFFY from '../../../components/AlertMissingFFY'; const ExecutiveSummary = ({ data, total, years }) => { const { apdId } = useParams(); @@ -33,7 +33,7 @@ const ExecutiveSummary = ({ data, total, years }) => { key={activity.key} heading={ - Activity {i + 1}: {activity.name || "Untitled"} + Activity {i + 1}: {activity.name || 'Untitled'} } headingLevel="4" diff --git a/web/src/containers/ExecutiveSummary.test.js b/web/src/pages/apd/executive-summary/ExecutiveSummary.test.js similarity index 100% rename from web/src/containers/ExecutiveSummary.test.js rename to web/src/pages/apd/executive-summary/ExecutiveSummary.test.js diff --git a/web/src/containers/ExecutiveSummaryBudget.js b/web/src/pages/apd/executive-summary/ExecutiveSummaryBudget.js similarity index 99% rename from web/src/containers/ExecutiveSummaryBudget.js rename to web/src/pages/apd/executive-summary/ExecutiveSummaryBudget.js index 30eb28163e..a81d572f7a 100644 --- a/web/src/containers/ExecutiveSummaryBudget.js +++ b/web/src/pages/apd/executive-summary/ExecutiveSummaryBudget.js @@ -3,8 +3,8 @@ import React, { Fragment } from 'react'; import { connect } from 'react-redux'; import { titleCase } from 'title-case'; -import Dollars from '../components/Dollars'; -import { t } from '../i18n'; +import Dollars from '../../../components/Dollars'; +import { t } from '../../../i18n'; const thId = (program, share) => `program-budget-table-${program}${share ? `-${share}` : ''}`; diff --git a/web/src/containers/ExecutiveSummaryBudget.test.js b/web/src/pages/apd/executive-summary/ExecutiveSummaryBudget.test.js similarity index 100% rename from web/src/containers/ExecutiveSummaryBudget.test.js rename to web/src/pages/apd/executive-summary/ExecutiveSummaryBudget.test.js diff --git a/web/src/containers/viewOnly/ExecutiveSummary.js b/web/src/pages/apd/executive-summary/ExecutiveSummaryReadOnly.js similarity index 92% rename from web/src/containers/viewOnly/ExecutiveSummary.js rename to web/src/pages/apd/executive-summary/ExecutiveSummaryReadOnly.js index 1c2c25a709..da305c7147 100644 --- a/web/src/containers/viewOnly/ExecutiveSummary.js +++ b/web/src/pages/apd/executive-summary/ExecutiveSummaryReadOnly.js @@ -3,16 +3,16 @@ import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import { titleCase } from 'title-case'; -import ExecutiveSummaryBudget from '../ExecutiveSummaryBudget'; -import Dollars from '../../components/Dollars'; -import Review from '../../components/Review'; -import { t } from '../../i18n'; +import ExecutiveSummaryBudget from './ExecutiveSummaryBudget'; +import Dollars from '../../../components/Dollars'; +import Review from '../../../components/Review'; +import { t } from '../../../i18n'; -import { selectApdYears } from '../../reducers/apd.selectors'; +import { selectApdYears } from '../../../reducers/apd.selectors'; import { selectBudgetExecutiveSummary, selectBudgetGrandTotal -} from '../../reducers/budget.selectors'; +} from '../../../reducers/budget.selectors'; class ExecutiveSummary extends PureComponent { render() { From 91d401ce33dda6f3a56dfa3728573b7d7a973c7e Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 12:15:41 -0400 Subject: [PATCH 26/29] updated tests --- web/src/pages/apd/ApdPageRoutes.js | 2 +- web/src/pages/apd/ApdReadOnly.js | 2 +- .../__snapshots__/ExecutiveSummary.test.js.snap | 0 .../__snapshots__/ExecutiveSummaryBudget.test.js.snap | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename web/src/{containers => pages/apd/executive-summary}/__snapshots__/ExecutiveSummary.test.js.snap (100%) rename web/src/{containers => pages/apd/executive-summary}/__snapshots__/ExecutiveSummaryBudget.test.js.snap (100%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index 5bd3886ba8..f53fa217f7 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -13,7 +13,7 @@ import EntryPage from '../../containers/activity/EntryPage'; import AssurancesAndCompliance from '../../containers/AssurancesAndCompliance'; import Export from '../../containers/ApdExport'; import ApdOverview from './apd-overview/ApdOverview'; -import ExecutiveSummary from '../../containers/ExecutiveSummary'; +import ExecutiveSummary from './executive-summary/ExecutiveSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; import ProposedBudget from '../../containers/ProposedBudget'; import ScheduleSummary from './schedule-summary/ScheduleSummary'; diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index ae2c8f9dc4..8958231fc3 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -19,7 +19,7 @@ import Activities from '../../containers/viewOnly/activities/All'; import ScheduleSummary from './schedule-summary/ScheduleSummaryReadOnly'; import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; import AssuranceAndCompliance from '../../containers/viewOnly/AssurancesAndCompliance'; -import ExecutiveSummary from '../../containers/viewOnly/ExecutiveSummary'; +import ExecutiveSummary from './executive-summary/ExecutiveSummary'; import ExportInstructions from '../../containers/viewOnly/Export'; import Loading from '../../components/Loading'; diff --git a/web/src/containers/__snapshots__/ExecutiveSummary.test.js.snap b/web/src/pages/apd/executive-summary/__snapshots__/ExecutiveSummary.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ExecutiveSummary.test.js.snap rename to web/src/pages/apd/executive-summary/__snapshots__/ExecutiveSummary.test.js.snap diff --git a/web/src/containers/__snapshots__/ExecutiveSummaryBudget.test.js.snap b/web/src/pages/apd/executive-summary/__snapshots__/ExecutiveSummaryBudget.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ExecutiveSummaryBudget.test.js.snap rename to web/src/pages/apd/executive-summary/__snapshots__/ExecutiveSummaryBudget.test.js.snap From ef0741211829b6ca28d2c03da71ec8f907dbcbd8 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 12:28:21 -0400 Subject: [PATCH 27/29] proposed budget refactor --- .../apd/proposed-budget}/BudgetSummary.js | 4 ++-- .../apd/proposed-budget}/BudgetSummary.test.js | 0 .../apd/proposed-budget}/IncentivePayments.js | 14 +++++++------- .../apd/proposed-budget}/IncentivePayments.test.js | 2 +- .../apd/proposed-budget}/ProposedBudget.js | 8 ++++---- .../apd/proposed-budget}/ProposedBudget.test.js | 0 .../apd/proposed-budget/ProposedBudgetReadOnly.js} | 8 ++++---- .../apd/proposed-budget}/QuarterlyBudgetSummary.js | 4 ++-- .../QuarterlyBudgetSummary.test.js | 0 .../proposed-budget}/SummaryActivityBreakdown.js | 4 ++-- .../SummaryActivityBreakdown.test.js | 0 .../proposed-budget}/SummaryBudgetByActivity.js | 4 ++-- .../SummaryBudgetByActivity.test.js | 0 13 files changed, 24 insertions(+), 24 deletions(-) rename web/src/{containers => pages/apd/proposed-budget}/BudgetSummary.js (97%) rename web/src/{containers => pages/apd/proposed-budget}/BudgetSummary.test.js (100%) rename web/src/{containers => pages/apd/proposed-budget}/IncentivePayments.js (96%) rename web/src/{containers => pages/apd/proposed-budget}/IncentivePayments.test.js (99%) rename web/src/{containers => pages/apd/proposed-budget}/ProposedBudget.js (85%) rename web/src/{containers => pages/apd/proposed-budget}/ProposedBudget.test.js (100%) rename web/src/{containers/viewOnly/ProposedBudget.js => pages/apd/proposed-budget/ProposedBudgetReadOnly.js} (65%) rename web/src/{containers => pages/apd/proposed-budget}/QuarterlyBudgetSummary.js (98%) rename web/src/{containers => pages/apd/proposed-budget}/QuarterlyBudgetSummary.test.js (100%) rename web/src/{containers => pages/apd/proposed-budget}/SummaryActivityBreakdown.js (94%) rename web/src/{containers => pages/apd/proposed-budget}/SummaryActivityBreakdown.test.js (100%) rename web/src/{containers => pages/apd/proposed-budget}/SummaryBudgetByActivity.js (97%) rename web/src/{containers => pages/apd/proposed-budget}/SummaryBudgetByActivity.test.js (100%) diff --git a/web/src/containers/BudgetSummary.js b/web/src/pages/apd/proposed-budget/BudgetSummary.js similarity index 97% rename from web/src/containers/BudgetSummary.js rename to web/src/pages/apd/proposed-budget/BudgetSummary.js index 660f2f94c8..9581ba4c3e 100644 --- a/web/src/containers/BudgetSummary.js +++ b/web/src/pages/apd/proposed-budget/BudgetSummary.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React, { Fragment } from 'react'; import { connect } from 'react-redux'; -import Dollars from '../components/Dollars'; -import { selectBudgetActivitiesByFundingSource } from '../reducers/budget.selectors'; +import Dollars from '../../../components/Dollars'; +import { selectBudgetActivitiesByFundingSource } from '../../../reducers/budget.selectors'; const categories = [ { category: 'statePersonnel', title: 'State Staff' }, diff --git a/web/src/containers/BudgetSummary.test.js b/web/src/pages/apd/proposed-budget/BudgetSummary.test.js similarity index 100% rename from web/src/containers/BudgetSummary.test.js rename to web/src/pages/apd/proposed-budget/BudgetSummary.test.js diff --git a/web/src/containers/IncentivePayments.js b/web/src/pages/apd/proposed-budget/IncentivePayments.js similarity index 96% rename from web/src/containers/IncentivePayments.js rename to web/src/pages/apd/proposed-budget/IncentivePayments.js index 0e92933458..394a5ec822 100644 --- a/web/src/containers/IncentivePayments.js +++ b/web/src/pages/apd/proposed-budget/IncentivePayments.js @@ -7,17 +7,17 @@ import { setIncentiveEPCount, setIncentiveEHPayment, setIncentiveEPPayment -} from '../actions/editApd'; -import DollarField from '../components/DollarField'; -import Dollars from '../components/Dollars'; -import NumberField from '../components/NumberField'; -import { t } from '../i18n'; +} from '../../../actions/editApd'; +import DollarField from '../../../components/DollarField'; +import Dollars from '../../../components/Dollars'; +import NumberField from '../../../components/NumberField'; +import { t } from '../../../i18n'; import { selectApdYears, selectIncentivePayments, selectIncentivePaymentTotals -} from '../reducers/apd.selectors'; -import { formatNum } from '../util/formats'; +} from '../../../reducers/apd.selectors'; +import { formatNum } from '../../../util/formats'; const QUARTERS = [1, 2, 3, 4]; diff --git a/web/src/containers/IncentivePayments.test.js b/web/src/pages/apd/proposed-budget/IncentivePayments.test.js similarity index 99% rename from web/src/containers/IncentivePayments.test.js rename to web/src/pages/apd/proposed-budget/IncentivePayments.test.js index 163248372f..50425edc3c 100644 --- a/web/src/containers/IncentivePayments.test.js +++ b/web/src/pages/apd/proposed-budget/IncentivePayments.test.js @@ -12,7 +12,7 @@ import { setIncentiveEPCount, setIncentiveEHPayment, setIncentiveEPPayment -} from '../actions/editApd'; +} from '../../../actions/editApd'; describe('incentive payments component', () => { const props = { diff --git a/web/src/containers/ProposedBudget.js b/web/src/pages/apd/proposed-budget/ProposedBudget.js similarity index 85% rename from web/src/containers/ProposedBudget.js rename to web/src/pages/apd/proposed-budget/ProposedBudget.js index 52efa72c1f..e22c0b7914 100644 --- a/web/src/containers/ProposedBudget.js +++ b/web/src/pages/apd/proposed-budget/ProposedBudget.js @@ -1,17 +1,17 @@ import React from 'react'; -import { Section, Subsection } from '../components/Section'; +import { Section, Subsection } from '../../../components/Section'; import SummaryBudgetByActivity from './SummaryBudgetByActivity'; import BudgetSummary from './BudgetSummary'; -import Waypoint from './ConnectedWaypoint'; +import Waypoint from '../../../containers/ConnectedWaypoint'; import IncentivePayments from './IncentivePayments'; import QuarterlyBudgetSummary from './QuarterlyBudgetSummary'; -import AlertMissingFFY from '../components/AlertMissingFFY'; +import AlertMissingFFY from '../../../components/AlertMissingFFY'; const ProposedBudget = () => ( - +
    (
    diff --git a/web/src/containers/QuarterlyBudgetSummary.js b/web/src/pages/apd/proposed-budget/QuarterlyBudgetSummary.js similarity index 98% rename from web/src/containers/QuarterlyBudgetSummary.js rename to web/src/pages/apd/proposed-budget/QuarterlyBudgetSummary.js index 6bccfd35e2..62c66e686a 100644 --- a/web/src/containers/QuarterlyBudgetSummary.js +++ b/web/src/pages/apd/proposed-budget/QuarterlyBudgetSummary.js @@ -2,8 +2,8 @@ import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; -import Dollars from '../components/Dollars'; -import { t } from '../i18n'; +import Dollars from '../../../components/Dollars'; +import { t } from '../../../i18n'; const FUNDING_SOURCES = [ ['hitAndHie', 'HIT and HIE'], diff --git a/web/src/containers/QuarterlyBudgetSummary.test.js b/web/src/pages/apd/proposed-budget/QuarterlyBudgetSummary.test.js similarity index 100% rename from web/src/containers/QuarterlyBudgetSummary.test.js rename to web/src/pages/apd/proposed-budget/QuarterlyBudgetSummary.test.js diff --git a/web/src/containers/SummaryActivityBreakdown.js b/web/src/pages/apd/proposed-budget/SummaryActivityBreakdown.js similarity index 94% rename from web/src/containers/SummaryActivityBreakdown.js rename to web/src/pages/apd/proposed-budget/SummaryActivityBreakdown.js index bf581913cb..450baba30a 100644 --- a/web/src/containers/SummaryActivityBreakdown.js +++ b/web/src/pages/apd/proposed-budget/SummaryActivityBreakdown.js @@ -4,8 +4,8 @@ import { connect } from 'react-redux'; import { selectActivityCostSummary, selectActivityByIndex -} from '../reducers/activities.selectors'; -import CostAllocationRows from './activity/CostAllocationRows'; +} from '../../../reducers/activities.selectors'; +import CostAllocationRows from '../../../containers/activity/CostAllocationRows'; const SummaryActivityBreakdownTable = ({ ffy, diff --git a/web/src/containers/SummaryActivityBreakdown.test.js b/web/src/pages/apd/proposed-budget/SummaryActivityBreakdown.test.js similarity index 100% rename from web/src/containers/SummaryActivityBreakdown.test.js rename to web/src/pages/apd/proposed-budget/SummaryActivityBreakdown.test.js diff --git a/web/src/containers/SummaryBudgetByActivity.js b/web/src/pages/apd/proposed-budget/SummaryBudgetByActivity.js similarity index 97% rename from web/src/containers/SummaryBudgetByActivity.js rename to web/src/pages/apd/proposed-budget/SummaryBudgetByActivity.js index f2c1d72114..a98d122792 100644 --- a/web/src/containers/SummaryBudgetByActivity.js +++ b/web/src/pages/apd/proposed-budget/SummaryBudgetByActivity.js @@ -1,9 +1,9 @@ import PropTypes from 'prop-types'; import React, { Fragment } from 'react'; import { connect } from 'react-redux'; -import Instruction from '../components/Instruction'; +import Instruction from '../../../components/Instruction'; import SummaryActivityBreakdownTable from './SummaryActivityBreakdown'; -import Dollars from '../components/Dollars'; +import Dollars from '../../../components/Dollars'; const categories = [ { category: 'statePersonnel', title: 'State Staff Total' }, diff --git a/web/src/containers/SummaryBudgetByActivity.test.js b/web/src/pages/apd/proposed-budget/SummaryBudgetByActivity.test.js similarity index 100% rename from web/src/containers/SummaryBudgetByActivity.test.js rename to web/src/pages/apd/proposed-budget/SummaryBudgetByActivity.test.js From 5c0d02ccf9b4d3b7534ec77a680db400bbcd3726 Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Mon, 28 Mar 2022 12:34:27 -0400 Subject: [PATCH 28/29] updated tests --- web/src/pages/apd/ApdPageRoutes.js | 2 +- web/src/pages/apd/ApdReadOnly.js | 2 +- .../proposed-budget}/__snapshots__/BudgetSummary.test.js.snap | 0 .../__snapshots__/IncentivePayments.test.js.snap | 0 .../proposed-budget}/__snapshots__/ProposedBudget.test.js.snap | 0 .../__snapshots__/QuarterlyBudgetSummary.test.js.snap | 0 .../__snapshots__/SummaryActivityBreakdown.test.js.snap | 0 .../__snapshots__/SummaryBudgetByActivity.test.js.snap | 0 8 files changed, 2 insertions(+), 2 deletions(-) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/BudgetSummary.test.js.snap (100%) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/IncentivePayments.test.js.snap (100%) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/ProposedBudget.test.js.snap (100%) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/QuarterlyBudgetSummary.test.js.snap (100%) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/SummaryActivityBreakdown.test.js.snap (100%) rename web/src/{containers => pages/apd/proposed-budget}/__snapshots__/SummaryBudgetByActivity.test.js.snap (100%) diff --git a/web/src/pages/apd/ApdPageRoutes.js b/web/src/pages/apd/ApdPageRoutes.js index f53fa217f7..0e388d9714 100644 --- a/web/src/pages/apd/ApdPageRoutes.js +++ b/web/src/pages/apd/ApdPageRoutes.js @@ -15,7 +15,7 @@ import Export from '../../containers/ApdExport'; import ApdOverview from './apd-overview/ApdOverview'; import ExecutiveSummary from './executive-summary/ExecutiveSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; -import ProposedBudget from '../../containers/ProposedBudget'; +import ProposedBudget from './proposed-budget/ProposedBudget'; import ScheduleSummary from './schedule-summary/ScheduleSummary'; import KeyStatePersonnel from './key-state-personnel/KeyStatePersonnel'; diff --git a/web/src/pages/apd/ApdReadOnly.js b/web/src/pages/apd/ApdReadOnly.js index 8958231fc3..1e1abdf267 100644 --- a/web/src/pages/apd/ApdReadOnly.js +++ b/web/src/pages/apd/ApdReadOnly.js @@ -17,7 +17,7 @@ import ApdSummary from '../../containers/viewOnly/ApdSummary'; import PreviousActivities from './previous-activities/PreviousActivities'; import Activities from '../../containers/viewOnly/activities/All'; import ScheduleSummary from './schedule-summary/ScheduleSummaryReadOnly'; -import ProposedBudget from '../../containers/viewOnly/ProposedBudget'; +import ProposedBudget from './proposed-budget/ProposedBudget'; import AssuranceAndCompliance from '../../containers/viewOnly/AssurancesAndCompliance'; import ExecutiveSummary from './executive-summary/ExecutiveSummary'; import ExportInstructions from '../../containers/viewOnly/Export'; diff --git a/web/src/containers/__snapshots__/BudgetSummary.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/BudgetSummary.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/BudgetSummary.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/BudgetSummary.test.js.snap diff --git a/web/src/containers/__snapshots__/IncentivePayments.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/IncentivePayments.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/IncentivePayments.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/IncentivePayments.test.js.snap diff --git a/web/src/containers/__snapshots__/ProposedBudget.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/ProposedBudget.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/ProposedBudget.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/ProposedBudget.test.js.snap diff --git a/web/src/containers/__snapshots__/QuarterlyBudgetSummary.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/QuarterlyBudgetSummary.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/QuarterlyBudgetSummary.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/QuarterlyBudgetSummary.test.js.snap diff --git a/web/src/containers/__snapshots__/SummaryActivityBreakdown.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/SummaryActivityBreakdown.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/SummaryActivityBreakdown.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/SummaryActivityBreakdown.test.js.snap diff --git a/web/src/containers/__snapshots__/SummaryBudgetByActivity.test.js.snap b/web/src/pages/apd/proposed-budget/__snapshots__/SummaryBudgetByActivity.test.js.snap similarity index 100% rename from web/src/containers/__snapshots__/SummaryBudgetByActivity.test.js.snap rename to web/src/pages/apd/proposed-budget/__snapshots__/SummaryBudgetByActivity.test.js.snap From 54f30ae6f5d9f2bb270c260ef43efa89d37b741c Mon Sep 17 00:00:00 2001 From: Darren Mirano Date: Thu, 7 Apr 2022 11:59:08 -0400 Subject: [PATCH 29/29] updated failing tests --- .../ApdPreviousActivityTableTotal.test.js | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js index d5a4238d02..e520ce82f8 100644 --- a/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js +++ b/web/src/pages/apd/previous-activities/ApdPreviousActivityTableTotal.test.js @@ -10,44 +10,46 @@ describe('apd previous activity table, grand total component', () => { const state = { apd: { data: { - previousActivityExpenses: { - 1: { - hithie: { - federalActual: 1000, - totalApproved: 2000 - }, - mmis: { - 90: { - federalActual: 10, - totalApproved: 20 - }, - 75: { - federalActual: 30, - totalApproved: 40 + previousActivities: { + actualExpenditures: { + 1: { + hithie: { + federalActual: 1000, + totalApproved: 2000 }, - 50: { - federalActual: 50, - totalApproved: 60 + mmis: { + 90: { + federalActual: 10, + totalApproved: 20 + }, + 75: { + federalActual: 30, + totalApproved: 40 + }, + 50: { + federalActual: 50, + totalApproved: 60 + } } - } - }, - 2: { - hithie: { - federalActual: 3000, - totalApproved: 4000 }, - mmis: { - 90: { - federalActual: 100, - totalApproved: 200 - }, - 75: { - federalActual: 300, - totalApproved: 400 + 2: { + hithie: { + federalActual: 3000, + totalApproved: 4000 }, - 50: { - federalActual: 500, - totalApproved: 600 + mmis: { + 90: { + federalActual: 100, + totalApproved: 200 + }, + 75: { + federalActual: 300, + totalApproved: 400 + }, + 50: { + federalActual: 500, + totalApproved: 600 + } } } }