Giter Club home page Giter Club logo

range-web's Introduction

img

About My Range Application (MyRangeBC) for Web

The Range Mobile Pathfinder project is developing a suite of applications to support the sustainable management of cattle range on crown lands in British Columbia. Learn more about the Range Program

The goal is to move important crown land management documents from paper to digital, and to make this information accessible in the field through disconnected mobile devices. This also supports a new and consistent process for Range staff across the province to support decision making processes.

An Agile Scrum team developed the Alpha product to test basic fuctions and was done March 31, 2018. Future releases by the Kamloops Range team at Kamloops Innovation Centre will lead towards an application that can be used by staff and public range use agreement holders, on multiple platforms.

For the Alpha Release, the web application documented here allows Range Branch Staff to view Range Use Plans that have been created in the iOS application. Soon, Range Officers will also be able to create and maintain records on web, but the offline abilities remain an iOS only feature for the time being. It also enables users to assign staff to a set of agreements they are responsible for managing.

Related MyRangeBc Documentation

Folder Structure

root/
  .eslintrc           // Displaying Lint Output in the Editor
  LICENSE
  README.md
  package.json
  semantic.json       // Semantic UI build settings for gulp
  coverage/           // Test coverage
  openshift/
  public/             // Images, index.html etc...
  semantic/           // Semantic UI custum styling definitions and overrides
  src/
    actionCreators/   // Network related Redux actions
    actions/          // Redux actions
    components/       // React components
    constants/        // Variables, strings, etc...
    reducers/         // Redux reducers
    semantic/         // Minified Semantic UI
    styles/           // All the Sass files
    tests/            // Integration and Unit testing
    utils/            // Helper functions
    index.js

For the project to build, these files must exist with exact filenames:

  • public/index.html is the page template;
  • src/index.js is the JavaScript entry point.

Environment variables

REACT_APP_SSO_REALM_NAME= # Realm name for SSo
REACT_APP_SSO_CLIENT_ID= # Client ID for SSO
REACT_APP_API_URL= # API URL. Hosted dev API is at https://web-range-myra-dev.pathfinder.gov.bc.ca/api.

There are example environment variables in .env.example that you can copy into .env.

Available Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode. Open http://localhost:3000 to view it in the browser.

npm test

Launches the test runner in the interactive watch mode.

npm test -- --coverage

Launches the test runner with a coverage report.

npm run build

Builds the app for production to the build folder. It correctly bundles React in production mode and optimizes the build for the best performance.

In /semantic directory, you can also run:

Running E2E tests with Cypress

To begin, start the E2E API. This is a separate docker-compose environment from what you may use normally for local development, and must be running for the end-to-end tests to work.

npm run test:e2e:api:start

If you want to completely remove the end-to-end API, you can run npm run test:e2e:api:clean.

Then, to open Cypress in development mode:

npm run test:e2e:dev

Alternatively, if you just want to run the E2E tests in a headless environment:

npm run test:e2e:run

gulp build

Builds all files for Semantic UI including js, css, and assets. Build tool settings are stored in semantic.json.

Create React App

The application was built on top of Create-React-App with Redux selector pattern for state management and React Router v4 for routing & code splitting. The project was ejected once to add more plugins and make changes in Webpack configuration, then it was switched back to the unejected state with the newer version since it took care of all the demands.

Routing & Code Splitting

This project takes advantage of React Router v4 to acheive many things such as authentication, authorizing users based on their roles, code splitting, dynamic route matching and so on.

Create React App allows us to dynamically import parts of our app using the import() proposal to reduce initial load time. Related reference can be found here.

Styling

  • Semantic UI React was chosen for the main css framework. It includes Gulp build tools so the project can preserve its own theme changes, allowing us to customise the style variables. Detailed documentation on theming in Semantic UI can be found here.

  • BEM(Block Element Modifier) methodology was chosen for naming convention.

  • Integration with Sass

  • Post-Processing CSS

    .App {
      display: flex;
    }

    becomes this:

    .App {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
    }

Openshift Deployment Cheatsheet:

  • image-stream: range-myra-web

  • app build-config: range-myra-web-dev-build

  • outputs to: range-myra-web:latest

  • image-stream: range-myra-web-caddy

  • caddy build-config: range-myra-web-caddy-dev-build

  • input image stream tag: range-myra-web:latest

  • output image stream tag: range-myra-web-caddy:latest

  • deploy-config: range-myra-web-caddy

  • trigger: range-myra-web-caddy:test

License

Copyright 2018 Province of British Columbia

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Creative Commons Licence
range-web by the Province of Britich Columbia is licensed under a Creative Commons Attribution 4.0 International License.

range-web's People

Contributors

brijesh-amin avatar calebissharp avatar cvarjao avatar dependabot[bot] avatar gdalcengio avatar heatherremacle avatar jleach avatar jonotron avatar kyubinhan avatar lmullane avatar mccullochk avatar micheal-w-wells avatar okanji avatar plasticviking avatar repo-mountie[bot] avatar shellyxuehan avatar snyk-bot avatar twostoryrobotrange avatar zoesimon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

range-web's Issues

Staff can edit in AH_Draft status

Staff should only be able to edit content when the status is one that staff "own":

  • staff_draft
  • submitted_for_review
  • pending (if this is still a status in use)

NavBar highlighting could use some refinement

Highlighting of the element which maps to the form section the user is viewing doesn't scroll down to the last two elements if the form is not filled out. I assume this is because those parts of the form don't get high enough on the screen and is therefore arguably correct behaviour. However, it still doesn't highlight them even when the anchor tag is set to that section which I do think is broken behaviour.

image

CollapsibleBox does not render correctly

Component is not being styled as intended.

image

The css class used on this line should be collaspible-boxes instead of collaspible-box

This change will render the component like so:

image

Also, "collaspible" is spelled incorrectly but used throughout the code so does not cause any problems but should probably be corrected anyway (should be "collapsible")

Plant Community Actions | "Add Plant Community" button mislabelled

Should be "Add Action"
Careful you get the one under the "Plant Community Actions" heading as the one higher up looks the same and is correct.

In CRUD edit content event though it relates to an "Add" button because it is a confusing mislabel and would make editing confusing.

No option to delete an existing pasture

Requirements

  • delete option visible
  • reminder popup that delete is permanent
  • reminder popup that all related plant communities, monitoring areas and criteria will also be deleted
  • reminder popup that schedule rows with that pasture will be impacted
  • pasture (including associated plant communities, monitoring areas and criteria) is deleted
  • schedule rows having that pasture are deleted

#Definition of Done

  • pasture and related content deletes and no errors arise in schedule

Pasture | Add pasture did not prompt for a pasture name

Used "Add Pasture" button. New pasture added but did not prompt me for a pasture name. I then added a name in the blank field that had been generated by the "Pasture:" label. Should always prompt for a new pasture name and show that name beside the pasture label.

The Plan End Date on the RUPs is displaying the wrong date

When a user submits a date way in the future (many years) through the api on a create, it renders in web as a much earlier date.

image

It's displaying as the last day of the Agreement Date so there is mostly like a check on the component that restricts it to only allow the date to be as late as the end of Agreement Date.

Make Range Use Plan editable in Staff Draft

Fields that need to be editable:

  • Range Name
  • Business Name
  • Plan Information Start Date
  • Plan Information End Date
  • Create/Update/Delete Pastures
  • Create/Update/Delete Plant Communities
  • Create/Update/Delete Yearly Schedules
  • Create/Update/Delete Minister's Issues and Actions
  • Update Invasive Species checklist
  • Create/Update/Delete Additional Requirements
  • Create/Update/Delete Management Considerations

still unable to load plans in test after refactor

Steps to reproduce (was done in Range (test) openshift project):

  1. Login as range officer
  2. Click on an existing RUP
  3. Plan fails to load. See below error:

image

@calebissharp message if you need a plan that looks like the one having an issue or if you need any assistance/access testing in the env it gets deployed to.

CRUD: As a staff person I want to delete a complete pasture so that only those pastures currently in the RUP area are visible

Requirements

  • delete option visible
  • reminder popup that delete is permanent
  • reminder popup that all related plant communities, monitoring areas and criteria will also be deleted
  • reminder popup that schedule rows with that pasture will be impacted
  • pasture (including associated plant communities, monitoring areas and criteria) is deleted
  • schedule rows having that pasture are deleted

#Definition of Done

  • pasture and related content deletes and no errors arise in schedule

As a staff person I want to add a plant community and update all information so the RUP content is complete

Requirements

  • required fields are identifiable (approved by minister, Plant Community Description) #162
  • "Add Plant Community" option visible
  • prompt to select plant community
  • if "other" selected from prompt second prompt for "name" triggers
  • name of new plant community displays
  • if "other" was selected the name entered in the prompt is displayed
  • view and update Aspect
  • elevation options display
  • update Elevation
  • update Approved By Minister toggle
  • Update Plant Community Description #142
  • Update Community URL
  • Update Purpose of Action to either establish or maintain
  • Plant Community Actions section not visible if Purpose of Action is "none"
  • Update Purpose of Action back to blank

Add version browsing components

We are going to add some form of versioning to the application. We've decided that some version browsing components are necessary for selecting previous versions of the RUP.

Create components to display a list of previous versions for a given RUP.

image

The designs are fairly rough, but the technical requirements are fairly clear:

  • display a list of previous versions
  • highlight approved previous versions
  • collapse all other status of previous versions

When no action has been selected yet the field is showing the top action of the dropdown list

Right now in staff view the top option of the drop down list for the fields below is displayed in grey. It isn't clear that you can:

  1. select from the list
  2. type to filter the list
  3. type something other than on the list for "other"

Default text (visible until field has been entered) should be something like "Type or select"
Related Fields

  • Actions (Plant Communities)
  • Indicator Species - Readiness
  • Indicator Species - Stubble Height

Refactor main RUP form to use formik instead of redux and add CRUD capabilities

Formik is a state container and handles a lot of the state updating on it's own. It will essentially remove the need for redux to handle the form data.

The RUP also needs CRUD capabilities; we want the plan to be editable on the web the same way it is on the iPad. Because of the way Formik works this is a relatively easy thing to add in at the same time as the form refactoring.

tests now failing in dev after #123

After merging #123 we now get the following errors in the pipeline:

`
PASS src/tests/reducers/plansReducer.test.js (43.579s)
PASS src/tests/reducers/planReducer.test.js (43.751s)
PASS src/tests/utils/localStorage.test.js (46.016s)
PASS src/tests/intergration/LoginPage.test.js (86.118s)
PASS src/tests/intergration/ManageClientPage.test.js (88.598s)
PASS src/tests/intergration/SelectRangeUsePlanPage.test.js (89.096s)
FAIL src/tests/intergration/ManageZonePage.test.js (90.391s)
● Integration testing › Select each option in two dropdowns and see if the update button is enabled

expect(received).toHaveLength(length)

Expected value to have length:
  1
Received:
  {Symbol(enzyme.__renderer__): {"batchedUpdates": [Function batchedUpdates], "getNode": [Function getNode], "getWrappingComponentRenderer": [Function getWrappingComponentRenderer], "render": [Function render], "simulateError": [Function simulateError], "simulateEvent": [Function simulateEvent], "unmount": [Function unmount]}, Symbol(enzyme.__root__): {Symbol(enzyme.__renderer__): {"batchedUpdates": [Function batchedUpdates], "getNode": [Function getNode], "getWrappingComponentRenderer": [Function getWrappingComponentRenderer], "render": [Function render], "simulateError": [Function simulateError], "simulateEvent": [Function simulateEvent], "unmount": [Function unmount]}, Symbol(enzyme.__root__): [Circular], Symbol(enzyme.__node__): {"instance": null, "key": undefined, "nodeType": "function", "props": {"children": <MemoryRouter initialEntries={[Array]}><withRouter(Connect(Base)) … /></MemoryRouter>, "store": {"dispatch": [Function anonymous], "getState": [Function getState], "replaceReducer": [Function replaceReducer], "subscribe": [Function subscribe], Symbol(observable): [Function observable]}}, "ref": null, "rendered": {"instance": {"_reactInternalFiber": [FiberNode], "_reactInternalInstance": [Object], "context": [Object], "history": [Object], "props": [Object], "refs": [Object], "state": null, "updater": [Object]}, "key": undefined, "nodeType": "class", "props": {"children": <withRouter(Connect(Base)) … />, "initialEntries": [Array]}, "ref": null, "rendered": {"instance": [Router], "key": undefined, "nodeType": "class", "props": [Object], "ref": null, "rendered": [Object], "type": [Function Router]}, "type": [Function MemoryRouter]}, "type": [Function Provider]}, Symbol(enzyme.__nodes__): [{"instance": null, "key": undefined, "nodeType": "function", "props": {"children": <MemoryRouter … />, "store": [Object]}, "ref": null, "rendered": {"instance": [MemoryRouter], "key": undefined, "nodeType": "class", "props": [Object], "ref": null, "rendered": [Object], "type": [Function MemoryRouter]}, "type": [Function Provider]}], Symbol(enzyme.__options__): {"adapter": {"options": {"enableComponentDidUpdateOnSetState": true, "legacyContextMode": "parent", "lifecycles": [Object]}}}, Symbol(enzyme.__linkedRoots__): [], Symbol(enzyme.__unrendered__): <Provider store={{"dispatch": [Function anonymous], "getState": [Function getState], "replaceReducer": [Function replaceReducer], "subscribe": [Function subscribe], Symbol(observable): [Function observable]}}><MemoryRouter initialEntries={["manage-zone"]}><withRouter(Connect(Base)) /></MemoryRouter></Provider>, Symbol(enzyme.__updatedBy__): null}, Symbol(enzyme.__node__): undefined, Symbol(enzyme.__nodes__): [], Symbol(enzyme.__rootNodes__): [{"instance": null, "key": undefined, "nodeType": "function", "props": {"children": <MemoryRouter initialEntries={[Array]}><withRouter(Connect(Base)) … /></MemoryRouter>, "store": {"dispatch": [Function anonymous], "getState": [Function getState], "replaceReducer": [Function replaceReducer], "subscribe": [Function subscribe], Symbol(observable): [Function observable]}}, "ref": null, "rendered": {"instance": {"_reactInternalFiber": [FiberNode], "_reactInternalInstance": [Object], "context": [Object], "history": [Object], "props": [Object], "refs": [Object], "state": null, "updater": [Object]}, "key": undefined, "nodeType": "class", "props": {"children": <withRouter(Connect(Base)) … />, "initialEntries": [Array]}, "ref": null, "rendered": {"instance": [Router], "key": undefined, "nodeType": "class", "props": [Object], "ref": null, "rendered": [Object], "type": [Function Router]}, "type": [Function MemoryRouter]}, "type": [Function Provider]}], Symbol(enzyme.__options__): {"adapter": {"options": {"enableComponentDidUpdateOnSetState": true, "legacyContextMode": "parent", "lifecycles": {"componentDidUpdate": [Object], "getChildContext": [Object], "getDerivedStateFromError": true, "getDerivedStateFromProps": [Object], "getSnapshotBeforeUpdate": true, "setState": [Object]}}}}, Symbol(enzyme.__linkedRoots__): [], Symbol(enzyme.__unrendered__): [], Symbol(enzyme.__updatedBy__): null}
received.length:
  0

  91 |       role: 'button'
  92 |     }
> 93 |     expect(wrapper.find(updateButtonProp)).toHaveLength(1)
     |                                            ^
  94 | 
  95 |     // select a zone and a contact in dropdowns
  96 |     const zoneOption = getZoneOption(mockZone)

  at Object.toHaveLength (src/tests/intergration/ManageZonePage.test.js:93:44)

PASS src/tests/intergration/OfficerRupPage.test.js (99.981s)
● Console

console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/OfficerRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/OfficerRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/OfficerRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)

PASS src/tests/intergration/AdminRupPage.test.js (100.006s)
● Console

console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AdminRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AdminRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AdminRupPage.test.js:46:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)

PASS src/tests/intergration/AHRupPage.test.js (99.988s)
● Console

console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AHRupPage.test.js:47:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AHRupPage.test.js:47:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)
console.error src/components/rangeUsePlanPage/index.js:310
  TypeError: Cannot read property 'access_token' of undefined
      at access_token (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/utils/authentication.js:41:41)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:72:9)
      at fetchPlan (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/components/rangeUsePlanPage/index.js:85:5)
      at commitHookEffectList (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:19986:26)
      at commitPassiveHookEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:20016:11)
      at HTMLUnknownElement.callCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:347:14)
      at invokeEventListeners (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
      at HTMLUnknownElementImpl._dispatch (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
      at HTMLUnknownElementImpl.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
      at HTMLUnknownElement.dispatchEvent (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
      at Object.invokeGuardedCallbackDev (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:397:16)
      at invokeGuardedCallback (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:454:31)
      at flushPassiveEffectsImpl (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22868:7)
      at unstable_runWithPriority (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/scheduler/cjs/scheduler.development.js:643:12)
      at runWithPriority$2 (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:11305:10)
      at flushPassiveEffects (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom.development.js:22841:10)
      at Object.<anonymous>.flushWork (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:951:10)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1062:9)
      at Object.act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/react-dom/cjs/react-dom-test-utils.development.js:1418:12)
      at act (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:346:13)
      at Object.wrapAct [as render] (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme-adapter-react-16/src/ReactSixteenAdapter.js:415:16)
      at new render (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/ReactWrapper.js:115:16)
      at mount (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/enzyme/src/mount.js:10:10)
      at Object.it (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/src/tests/intergration/AHRupPage.test.js:47:21)
      at Object.asyncJestTest (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/jasmine_async.js:108:37)
      at resolve (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:56:12)
      at new Promise (<anonymous>)
      at mapper (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:43:19)
      at promise.then (/var/tmp/workspace/range-myra-tools/range-myra-tools-range-myra-web-dev-pipeline/node_modules/jest-jasmine2/build/queue_runner.js:87:41)
      at process._tickCallback (internal/process/next_tick.js:68:7)

Test Suites: 1 failed, 9 passed, 10 total
Tests: 1 failed, 20 passed, 21 total
Snapshots: 0 total
Time: 120.086s
Ran all test suites.
npm ERR! Test failed. See above for more details.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] test:ci: CI=true npm test
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] test:ci script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
`

Pasture | Allowable AUMs field error when new pasture created prevents saving draft

Immediately generated an error coloured field when pasture created (must think a number is REQUIRED)
Default (acceptable) needs to be blank (not a number)
Message is: pastures[1].allowableAum must be a 'number' type, but the final value was: 'NaN' (cast from the value'""'
Default to blank (no value) and text on screen "Not set"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.