From 0c8a5f4d55cb2966a5b69cc57d0650b15046a4ce Mon Sep 17 00:00:00 2001 From: Rajat Parashar Date: Fri, 6 Aug 2021 01:57:28 +0530 Subject: [PATCH] Rename Expensify.cash to NewExpensify --- CONTRIBUTING.md | 16 ++--- README.md | 38 +++++------ STORYBOOK.md | 4 +- STYLING.md | 4 +- android/app/src/main/AndroidManifest.xml | 6 ++ android/app/src/main/res/values/strings.xml | 2 +- config/electron.config.js | 6 +- desktop/README.md | 6 +- desktop/main.js | 7 +- fastlane/Fastfile | 8 +-- ios/ExpensifyCash.xcodeproj/project.pbxproj | 4 +- ios/ExpensifyCash/Chat.entitlements | 2 + package.json | 2 +- src/CONST.js | 2 +- src/libs/Navigation/linkingConfig.js | 2 +- src/libs/actions/IOU.js | 2 +- tests/README.md | 8 +-- tests/unit/GithubUtilsTest.js | 66 +++++++++---------- tests/unit/checkDeployBlockersTest.js | 8 +-- tests/unit/createOrUpdateStagingDeployTest.js | 46 ++++++------- web/index.html | 10 +-- 21 files changed, 129 insertions(+), 120 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4696009bd00c..e2cedbe4ce14 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,15 +2,15 @@ Welcome! Thanks for checking out the new Expensify app and for taking the time to contribute! ## Getting Started -If you would like to become an Expensify contributor, the first step is to read this document in its entirety. The second step is to review the README guidelines [here](https://github.com/Expensify/Expensify.cash/blob/main/README.md) for a general overview of the code repository (i.e. how to run the app locally, testing, storage, etc). Please read both documents before asking questions, as it may be covered within the documentation. +If you would like to become an Expensify contributor, the first step is to read this document in its entirety. The second step is to review the README guidelines [here](https://github.com/Expensify/App/blob/main/README.md) for a general overview of the code repository (i.e. how to run the app locally, testing, storage, etc). Please read both documents before asking questions, as it may be covered within the documentation. #### Test Accounts You can create as many accounts as needed in order to test your changes directly from [the app](https://new.expensify.com/). An initial account can be created when logging in for the first time, and additional accounts can be invited by entering a valid email or phone in the "Find or start a chat" input then tapping the avatar. -**Note**: When testing chat functionality in the app please do this between accounts you or your fellow contributors own - **do not test chatting with Concierge**, as this diverts to our customer support team. Thank you. +**Note**: When testing chat functionality in the app please do this between accounts you or your fellow contributors own - **do not test chatting with Concierge**, as this diverts to our customer support team. Thank you. ## Code of Conduct -This project and everyone participating in it is governed by the Expensify [Code of Conduct](https://github.com/Expensify/Expensify.cash/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [contributors@expensify.com](mailto:contributors@expensify.com). +This project and everyone participating in it is governed by the Expensify [Code of Conduct](https://github.com/Expensify/App/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [contributors@expensify.com](mailto:contributors@expensify.com). ## Restrictions At this time, we are not hiring contractors in Crimea, North Korea, Russia, Iran, Cuba, or Syria. @@ -34,14 +34,14 @@ This is the most common scenario for contributors. The Expensify team posts new #### Proposing a job that Expensify hasn’t posted -In this scenario, it’s possible that you found a bug or enhancement that we haven’t posted to the [Upwork job list](https://www.upwork.com/ab/jobs/search/?q=Expensify%20React%20Native&sort=recency&user_location_match=2) or [Github repository](https://github.com/Expensify/Expensify.cash/issues?q=is%3Aissue). This is an opportunity to propose a job, and (optionally) a solution. If it's a valid job proposal, we will compensate you for the solution and give an additional bonus of $250 for proactively proposing the job. In this case, please take the following steps: +In this scenario, it’s possible that you found a bug or enhancement that we haven’t posted to the [Upwork job list](https://www.upwork.com/ab/jobs/search/?q=Expensify%20React%20Native&sort=recency&user_location_match=2) or [Github repository](https://github.com/Expensify/App/issues?q=is%3Aissue). This is an opportunity to propose a job, and (optionally) a solution. If it's a valid job proposal, we will compensate you for the solution and give an additional bonus of $250 for proactively proposing the job. In this case, please take the following steps: 1. Check to ensure an issue does not already exist in the New Expensify Issue list or Upwork job list. Please use your best judgement to search for similar titles and issue descriptions. 2. If your bug or enhancement matches an existing issue, please feel free to comment on that GitHub issue with your findings if you think it’ll help solve a problem. 3. If there is no existing issue or Upwork job, create a new GitHub issue in the Expensify/App repo. 4. Make sure to fill out all the required information fields in the issue template. 5. Add the `AutoAssignerTriage` label to your issue. - 6. Before starting your PR to solve the bug or enhancement that you are proposing, please add a comment on your issue with a solution proposal. + 6. Before starting your PR to solve the bug or enhancement that you are proposing, please add a comment on your issue with a solution proposal. 7. Pause on this step until a member of the Expensify team responds on your issue with next steps. >**Note:** Our problem solving approach at Expensify is to focus on high value problems and avoid small optimizations with results that are difficult to measure. We also prefer to identify and solve problems at their root. Given that, please ensure all proposed jobs fix a specific problem in a measurable way with evidence so they are easy to evaluate. Here's an example of a good problem/solution: @@ -51,7 +51,7 @@ In this scenario, it’s possible that you found a bug or enhancement that we ha >**Solution:** Start up time will perceptibly decrease by 1042ms if we prevent the unnecessary re-renders of this component. ## Working on Expensify Jobs -*Reminder: For technical guidance please refer to the [README](https://github.com/Expensify/Expensify.cash/blob/main/README.md)*. +*Reminder: For technical guidance please refer to the [README](https://github.com/Expensify/App/blob/main/README.md)*. #### Express interest for the job on Upwork.com @@ -86,12 +86,12 @@ In this scenario, it’s possible that you found a bug or enhancement that we ha #### Submit your pull request for final request 12. When you are ready to submit your pull request for final review, make sure the following checks pass: - 1. CLA - You must sign our [Contributor License Agreement](https://github.com/Expensify/Expensify.cash/blob/main/CLA.md) by following the CLA bot instructions that will be posted on your PR + 1. CLA - You must sign our [Contributor License Agreement](https://github.com/Expensify/App/blob/main/CLA.md) by following the CLA bot instructions that will be posted on your PR 2. Tests - All tests must pass before a merge of a pull request 3. Lint - All code must pass lint checks before a merge of a pull request 13. Please never force push when a PR review has already started (because this messes with the PR review history) 14. Upon submission of a PR, please include a numbered list of explicit testing steps for each platform (Web, Desktop, iOS, and Android) to confirm the fix works as expected and there are no regressions. -15. Please add a screenshot of the app running on each platform (Web, Desktop, iOS, Android, Mobile Web). If you are unable to build to iOS/OSX due to using a Windows machine, please let the reviewers know so they can double check that platform themselves. +15. Please add a screenshot of the app running on each platform (Web, Desktop, iOS, Android, Mobile Web). If you are unable to build to iOS/OSX due to using a Windows machine, please let the reviewers know so they can double check that platform themselves. #### Timeline expectations and asking for help along the way - If you have made a change to your pull request and are ready for another review, leave a comment that says "Updated" on the pull request itself. diff --git a/README.md b/README.md index c3ee08137fc0..c8edfdf80a07 100644 --- a/README.md +++ b/README.md @@ -239,24 +239,24 @@ This application is built with the following principles. ---- # Internationalization -This application is built with Internationalization (I18n) / Localization (L10n) support, so it's important to always +This application is built with Internationalization (I18n) / Localization (L10n) support, so it's important to always localize the following types of data when presented to the user (even accessibility texts that are not rendered): -- Texts: See [translate method](https://github.com/Expensify/Expensify.cash/blob/655ba416d552d5c88e57977a6e0165fb7eb7ab58/src/libs/translate.js#L15) -- Date/time: see [DateUtils](https://github.com/Expensify/Expensify.cash/blob/f579946fbfbdc62acc5bd281dc75cabb803d9af0/src/libs/DateUtils.js) -- Numbers and amounts: see [numberFormat](https://github.com/Expensify/Expensify.cash/tree/965f92fc2a5a2a0d01e6114bf5aa8755b9d9fd1a/src/libs/numberFormat) -- Phones: see [LocalPhoneNumber](https://github.com/Expensify/Expensify.cash/blob/bdfbafe18ee2d60f766c697744f23fad64b62cad/src/libs/LocalePhoneNumber.js#L51-L52) +- Texts: See [translate method](https://github.com/Expensify/App/blob/655ba416d552d5c88e57977a6e0165fb7eb7ab58/src/libs/translate.js#L15) +- Date/time: see [DateUtils](https://github.com/Expensify/App/blob/f579946fbfbdc62acc5bd281dc75cabb803d9af0/src/libs/DateUtils.js) +- Numbers and amounts: see [numberFormat](https://github.com/Expensify/App/tree/965f92fc2a5a2a0d01e6114bf5aa8755b9d9fd1a/src/libs/numberFormat) +- Phones: see [LocalPhoneNumber](https://github.com/Expensify/App/blob/bdfbafe18ee2d60f766c697744f23fad64b62cad/src/libs/LocalePhoneNumber.js#L51-L52) -In most cases, you will be needing to localize data used in a component, if that's the case, there's a HOC [withLocalize](https://github.com/Expensify/Expensify.cash/blob/37465dbd07da1feab8347835d82ed3d2302cde4c/src/components/withLocalize.js). -It will abstract most of the logic you need (mostly subscribe to the [NVP_PREFERRED_LOCALE](https://github.com/Expensify/Expensify.cash/blob/6cf1a56df670a11bf61aa67eeb64c1f87161dea1/src/ONYXKEYS.js#L88) Onyx key) +In most cases, you will be needing to localize data used in a component, if that's the case, there's a HOC [withLocalize](https://github.com/Expensify/App/blob/37465dbd07da1feab8347835d82ed3d2302cde4c/src/components/withLocalize.js). +It will abstract most of the logic you need (mostly subscribe to the [NVP_PREFERRED_LOCALE](https://github.com/Expensify/App/blob/6cf1a56df670a11bf61aa67eeb64c1f87161dea1/src/ONYXKEYS.js#L88) Onyx key) and is the preferred way of localizing things inside components. Some pointers: -- All translations are stored in language files in [src/languages](https://github.com/Expensify/Expensify.cash/tree/b114bc86ff38e3feca764e75b3f5bf4f60fcd6fe/src/languages). +- All translations are stored in language files in [src/languages](https://github.com/Expensify/App/tree/b114bc86ff38e3feca764e75b3f5bf4f60fcd6fe/src/languages). - We try to group translations by their pages/components - A common rule of thumb is to move a common word/phrase to be shared when it's in 3 places -- Always prefer longer and more complex strings in the translation files. For example +- Always prefer longer and more complex strings in the translation files. For example if you need to generate the text `User has sent $20.00 to you on Oct 25th at 10:05am`, add just one key to the translation file and use the arrow function version, like so: `nameOfTheKey: ({amount, dateTime}) => "User has sent " + amount + " to you on " + dateTime,`. @@ -268,38 +268,38 @@ Some pointers: ## QA and deploy cycles We utilize a CI/CD deployment system built using [GitHub Actions](https://github.com/features/actions) to ensure that new code is automatically deployed to our users as fast as possible. As part of this process, all code is first deployed to our staging environments, where it undergoes quality assurance (QA) testing before it is deployed to production. Typically, pull requests are deployed to staging immediately after they are merged. -Every time a PR is deployed to staging, it is added to a [special tracking issue](https://github.com/Expensify/Expensify.cash/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) with the label `StagingDeployCash` (there will only ever be one open at a time). This tracking issue contains information about the new application version, a list of recently deployed pull requests, and any issues found on staging that are not present on production. Every weekday at 9am PST, our QA team adds the `🔐LockCashDeploys🔐` label to that tracking issue, and that signifies that they are starting their daily QA cycle. They will perform both regular regression testing and the QA steps listed for every pull request on the `StagingDeployCash` checklist. +Every time a PR is deployed to staging, it is added to a [special tracking issue](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) with the label `StagingDeployCash` (there will only ever be one open at a time). This tracking issue contains information about the new application version, a list of recently deployed pull requests, and any issues found on staging that are not present on production. Every weekday at 9am PST, our QA team adds the `🔐LockCashDeploys🔐` label to that tracking issue, and that signifies that they are starting their daily QA cycle. They will perform both regular regression testing and the QA steps listed for every pull request on the `StagingDeployCash` checklist. Once the `StagingDeployCash` is locked, we won't run any staging deploys until it is either unlocked, or we run a production deploy. If severe issues are found on staging that are not present on production, a new issue (or the PR that caused the issue) will be labeled with `DeployBlockerCash`, and added to the `StagingDeployCash` deploy checklist. If we want to resolve a deploy blocker by reverting a pull request or deploying a hotfix directly to the staging environment, we can merge a pull request with the `CP Staging` label. Once we have confirmed to the best of our ability that there are no deploy-blocking issues and that all our new features are working as expected on staging, we'll close the `StagingDeployCash`. That will automatically trigger a production deployment, open a new `StagingDeployCash` checklist, and deploy to staging any pull requests that were merged while the previous checklist was locked. ## Key GitHub workflows -These are some of the most central [GitHub Workflows](https://github.com/Expensify/Expensify.cash/tree/main/.github/workflows). There is more detailed information in the README [here](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/README.md). +These are some of the most central [GitHub Workflows](https://github.com/Expensify/App/tree/main/.github/workflows). There is more detailed information in the README [here](https://github.com/Expensify/App/blob/main/.github/workflows/README.md). ### preDeploy -The [preDeploy workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/preDeploy.yml) executes whenever a pull request is merged to `main`, and at a high level does the following: +The [preDeploy workflow](https://github.com/Expensify/App/blob/main/.github/workflows/preDeploy.yml) executes whenever a pull request is merged to `main`, and at a high level does the following: - If the `StagingDeployCash` is locked, comment on the merged PR that it will be deployed later. - Otherwise: - - Create a new version by triggering the [`createNewVersion` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/createNewVersion.yml) - - Use the [`updateProtectedBranch` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/updateProtectedBranch.yml) to update the `staging` branch. -- Also, if the pull request has the `CP Staging` label, it will execute the [`cherryPick` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/cherryPick.yml) to deploy the pull request directly to staging, even if the `StagingDeployCash` is locked + - Create a new version by triggering the [`createNewVersion` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/createNewVersion.yml) + - Use the [`updateProtectedBranch` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/updateProtectedBranch.yml) to update the `staging` branch. +- Also, if the pull request has the `CP Staging` label, it will execute the [`cherryPick` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/cherryPick.yml) to deploy the pull request directly to staging, even if the `StagingDeployCash` is locked ### deploy -The [`deploy` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/deploy.yml) is really quite simple. It runs when code is pushed to the `staging` or `production` branches, and: +The [`deploy` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/deploy.yml) is really quite simple. It runs when code is pushed to the `staging` or `production` branches, and: - If `staging` was updated, it creates a tag matching the new version, and pushes tags. - If `production` was updated, it creates a GitHub Release for the new version ### platformDeploy -The [`platformDeploy` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/platformDeploy.yml) is what actually runs the deployment on all four platforms (iOS, Android, Web, macOS Desktop). It runs a staging deploy whenever a new tag is pushed to GitHub, and runs a production deploy whenever a new release is created. +The [`platformDeploy` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/platformDeploy.yml) is what actually runs the deployment on all four platforms (iOS, Android, Web, macOS Desktop). It runs a staging deploy whenever a new tag is pushed to GitHub, and runs a production deploy whenever a new release is created. ### lockDeploys -The [`lockDeploys` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/lockDeploys.yml) executes when the `StagingDeployCash` is locked, and it prepares the staging branch for a production release by creating a new `PATCH` version (i.e: `1.0.57-5` -> `1.0.58.0`). +The [`lockDeploys` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/lockDeploys.yml) executes when the `StagingDeployCash` is locked, and it prepares the staging branch for a production release by creating a new `PATCH` version (i.e: `1.0.57-5` -> `1.0.58.0`). ### finishReleaseCycle -The [`finishReleaseCycle` workflow](https://github.com/Expensify/Expensify.cash/blob/main/.github/workflows/finishReleaseCycle.yml) executes when the `StagingDeployCash` is closed. It updates the `production` branch from `staging` (triggering a production deploy), deploys `main` to staging, and creates a new `StagingDeployCash` deploy checklist. +The [`finishReleaseCycle` workflow](https://github.com/Expensify/App/blob/main/.github/workflows/finishReleaseCycle.yml) executes when the `StagingDeployCash` is closed. It updates the `production` branch from `staging` (triggering a production deploy), deploys `main` to staging, and creates a new `StagingDeployCash` deploy checklist. ## Local production builds Sometimes it might be beneficial to generate a local production version instead of testing on production. Follow the steps below for each client: diff --git a/STORYBOOK.md b/STORYBOOK.md index 5093cac5e535..1950e839e877 100644 --- a/STORYBOOK.md +++ b/STORYBOOK.md @@ -6,7 +6,7 @@ At Expensify, we primarily use [Storybook](https://storybook.js.org/) to provide ### Building and Deploying Storybook -The Storybook docs deploy automatically so there's nothing extra to do here. Storybook is built to the `/dist` folder and lives at [`https://expensify.cash/docs/index.html`](https://expensify.cash/docs/index.html). +The Storybook docs deploy automatically so there's nothing extra to do here. Storybook is built to the `/dist` folder and lives at [`https://new.expensify.com/docs/index.html`](https://new.expensify.com/docs/index.html). To test a local build we can run @@ -63,4 +63,4 @@ Note that we did not need to write any of the descriptions for these props. This ### Does it work on React Native? -Not yet, but PRs are welcome! \ No newline at end of file +Not yet, but PRs are welcome! diff --git a/STYLING.md b/STYLING.md index cbaf14efab88..ea402f162373 100644 --- a/STYLING.md +++ b/STYLING.md @@ -94,7 +94,7 @@ const SettingsScreen = props => ( const SomeOtherScreen = props => ( - Expensify.cash + New Expensify ); @@ -111,7 +111,7 @@ const SettingsScreen = props => ( const SomeOtherScreen = props => ( - Expensify.cash + New Expensify ); diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6976c0f8c828..7862a8bd84e1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -57,6 +57,12 @@ + + + + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 192418e9fee2..ea9d58b49ab0 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - Expensify.cash + New Expensify diff --git a/config/electron.config.js b/config/electron.config.js index 90e4f7f8a0b5..eef59beebd55 100644 --- a/config/electron.config.js +++ b/config/electron.config.js @@ -1,6 +1,6 @@ module.exports = { appId: 'com.expensifyreactnative.chat', - productName: 'Expensify.cash', + productName: 'New Expensify', extraMetadata: { main: './desktop/main.js', }, @@ -13,8 +13,8 @@ module.exports = { type: 'distribution', }, dmg: { - title: 'Expensify.cash', - artifactName: 'Expensify.cash.dmg', + title: 'New Expensify', + artifactName: 'NewExpensify.dmg', internetEnabled: true, }, publish: [{ diff --git a/desktop/README.md b/desktop/README.md index dd38d03b1736..ff60cab89f60 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -40,13 +40,13 @@ mc policy set public electron-builder/electron-builder ## Local Changes to the App -Once you have Min.IO setup and running, the next step is to temporarily revert some changes from https://github.com/Expensify/Expensify.cash/commit/b640b3010fd7a40783d1c04faf4489836e98038d, specifically +Once you have Min.IO setup and running, the next step is to temporarily revert some changes from https://github.com/Expensify/App/commit/b640b3010fd7a40783d1c04faf4489836e98038d, specifically 1. Update the `desktop-build` command in package.json to add `--publish always` at the end 2. Update electron.config.js to re-add `afterSign: 'desktop/notarize.js',` 3. Update electron.config.js to replace the `publish` value with the following: -``` - publish: [{ +``` + publish: [{ provider: 's3', bucket: 'electron-builder', endpoint: 'http://localhost:9000', diff --git a/desktop/main.js b/desktop/main.js index 2f84fa5d24f3..ba6828781e00 100644 --- a/desktop/main.js +++ b/desktop/main.js @@ -42,6 +42,7 @@ autoUpdater.logger.transports.file.level = 'info'; // Send all Console logs to a log file: ~/Library/Logs/expensify.cash/main.log // See https://www.npmjs.com/package/electron-log Object.assign(console, log.functions); +console.debug(app.name); // setup Hot reload if (isDev) { @@ -119,8 +120,8 @@ const mainWindow = (() => { // Prod and staging set the icon in the electron-builder config, so only update it here for dev if (isDev) { - app.dock.setIcon(`${__dirname}/icon-dev.png`); - app.setName('New Expensify'); + // app.dock.setIcon(`${__dirname}/icon-dev.png`); + // app.setName('New Expensify'); } return app.whenReady() @@ -159,7 +160,7 @@ const mainWindow = (() => { })); const appMenu = systemMenu.items.find(item => item.role === 'appmenu'); - appMenu.submenu.insert(1, updateAppMenuItem); + // appMenu.submenu.insert(1, updateAppMenuItem); // On mac, pressing cmd++ actually sends a cmd+=. cmd++ is generally the zoom in shortcut, but this is // not properly listened for by electron. Adding in an invisible cmd+= listener fixes this. diff --git a/fastlane/Fastfile b/fastlane/Fastfile index f651153356e0..01fd4db2b223 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -114,15 +114,15 @@ platform :ios do upload_to_testflight( api_key_path: "./ios/ios-fastlane-json-key.json", # TODO: Remove skip_waiting_for_build_processing when https://github.com/fastlane/fastlane/issues/18408 is resolved - # See: https://github.com/Expensify/Expensify.cash/pull/1984 for more information + # See: https://github.com/Expensify/App/pull/1984 for more information skip_waiting_for_build_processing: true, # TODO: Set distribute_external back to true when https://github.com/fastlane/fastlane/issues/18408 is resolved - # See: https://github.com/Expensify/Expensify.cash/pull/1984 for more information + # See: https://github.com/Expensify/App/pull/1984 for more information distribute_external: false, # TODO: Set reject_build_waiting_for_review back to true when https://github.com/fastlane/fastlane/issues/18408 is resolved - # See: https://github.com/Expensify/Expensify.cash/pull/1984 for more information + # See: https://github.com/Expensify/App/pull/1984 for more information reject_build_waiting_for_review: false, - changelog: "Thank you for beta testing Expensify.cash, this version includes bug fixes and improvements.", + changelog: "Thank you for beta testing New Expensify, this version includes bug fixes and improvements.", groups: ["Beta"], demo_account_required: true, beta_app_review_info: { diff --git a/ios/ExpensifyCash.xcodeproj/project.pbxproj b/ios/ExpensifyCash.xcodeproj/project.pbxproj index 18e0eafb0d1f..282d842bc134 100644 --- a/ios/ExpensifyCash.xcodeproj/project.pbxproj +++ b/ios/ExpensifyCash.xcodeproj/project.pbxproj @@ -857,7 +857,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; - PRODUCT_NAME = Expensify.cash; + PRODUCT_NAME = "New Expensify"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; SWIFT_OBJC_BRIDGING_HEADER = "ExpensifyCash-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -889,7 +889,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; - PRODUCT_NAME = Expensify.cash; + PRODUCT_NAME = "New Expensify"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; SWIFT_OBJC_BRIDGING_HEADER = "ExpensifyCash-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/ExpensifyCash/Chat.entitlements b/ios/ExpensifyCash/Chat.entitlements index 2f8be2ab354b..01e2ca82e3cf 100644 --- a/ios/ExpensifyCash/Chat.entitlements +++ b/ios/ExpensifyCash/Chat.entitlements @@ -8,7 +8,9 @@ applinks:www.expensify.cash applinks:staging.expensify.cash + applinks:staging.new.expensify.com applinks:expensify.cash + applinks:new.expensify.com diff --git a/package.json b/package.json index dffcb8b29a35..aa16b89ae27c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.0.82-3", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", - "description": "Expensify.cash is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", + "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", "license": "MIT", "private": true, "scripts": { diff --git a/src/CONST.js b/src/CONST.js index e4a890005668..14e7ebabaf7d 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -123,7 +123,7 @@ const CONST = { PDF_VIEWER_URL: '/pdf/web/viewer.html', EXPENSIFY_ICON_URL: `${CLOUDFRONT_URL}/images/favicon-2019.png`, UPWORK_URL: 'https://www.upwork.com/ab/jobs/search/?q=Expensify%20React%20Native&user_location_match=2', - GITHUB_URL: 'https://github.com/Expensify/Expensify.cash', + GITHUB_URL: 'https://github.com/Expensify/App', TERMS_URL: 'https://use.expensify.com/terms', PRIVACY_URL: 'https://use.expensify.com/privacy', LICENSES_URL: 'https://use.expensify.com/licenses', diff --git a/src/libs/Navigation/linkingConfig.js b/src/libs/Navigation/linkingConfig.js index 48ace4ba68ae..4fd3c9b7c55f 100644 --- a/src/libs/Navigation/linkingConfig.js +++ b/src/libs/Navigation/linkingConfig.js @@ -4,7 +4,7 @@ import SCREENS from '../../SCREENS'; export default { prefixes: [ 'expensify-cash://', - 'https://expensify.cash', + 'https://new.expensify.com', 'https://www.expensify.cash', 'https://staging.expensify.cash', 'http://localhost', diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index d2b851c5c0e8..fa47b052d4fa 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -189,7 +189,7 @@ function setIOUSelectedCurrency(selectedCurrencyCode) { * @returns {String} */ function buildVenmoPaymentURL(amount, submitterPhoneNumber) { - const note = 'For%20Expensify.cash%20request'; + const note = encodeURIComponent('For New Expensify request'); return `venmo://paycharge?txn=pay&recipients=${submitterPhoneNumber}&amount=${(amount / 100)}¬e=${note}`; } diff --git a/tests/README.md b/tests/README.md index fe05abbf4f3e..a166fd22b5f4 100644 --- a/tests/README.md +++ b/tests/README.md @@ -5,7 +5,7 @@ ## Asynchronous Testing - Much of the logic in the app is asynchronous in nature. [`react-native-onyx`](https://github.com/expensify/react-native-onyx) relies on [`AsyncStorage`](https://github.com/react-native-async-storage/async-storage) and writes data async before updating subscribers. -- [Actions](https://github.com/Expensify/expensify.cash#actions) do not typically return a `Promise` and therefore can't always be "awaited" before running an assertion. +- [Actions](https://github.com/Expensify/App#actions) do not typically return a `Promise` and therefore can't always be "awaited" before running an assertion. - To test a result after some asynchronous code has run we can use [`Onyx.connect()`](https://github.com/Expensify/react-native-onyx/blob/2c94a94e51fab20330f7bd5381b72ea6c25553d9/lib/Onyx.js#L217-L231) and the helper method [`waitForPromisesToResolve()`](https://github.com/Expensify/ReactNativeChat/blob/ca2fa88a5789b82463d35eddc3d57f70a7286868/tests/utils/waitForPromisesToResolve.js#L1-L9) which returns a `Promise` and will ensure that all other `Promises` have finished running before resolving. - **Important Note:** When writing any asynchronous Jest test it's very important that your test itself **return a `Promise`**. @@ -13,12 +13,12 @@ - Network requests called in tests do not run against any test database so we must [mock them](https://jestjs.io/docs/en/mock-functions) with a `jest.fn()`. - To simulate a network request succeeding or failing we can mock the expected response first and then manually trigger the action that calls that API command. -- [Mocking the response of `HttpUtils.xhr()`](https://github.com/Expensify/Expensify.cash/blob/ca2fa88a5789b82463d35eddc3d57f70a7286868/tests/actions/SessionTest.js#L25-L32) is the best way to simulate various API conditions so we can verify whether a result occurs or not. +- [Mocking the response of `HttpUtils.xhr()`](https://github.com/Expensify/App/blob/ca2fa88a5789b82463d35eddc3d57f70a7286868/tests/actions/SessionTest.js#L25-L32) is the best way to simulate various API conditions so we can verify whether a result occurs or not. ## Assertions - There are a ton of [matchers](https://jestjs.io/docs/en/using-matchers) that `jest` offers for making assertions. -- When testing an [Action](https://github.com/Expensify/expensify.cash#actions) it is often best to test that `Onyx` data matches our expectations after the action runs. +- When testing an [Action](https://github.com/Expensify/App#actions) it is often best to test that `Onyx` data matches our expectations after the action runs. ```javascript expect(onyxData).toBe(expectedOnyxData); ``` @@ -86,7 +86,7 @@ Many of the UI features of our application should go through rigorous testing by - Areas of the code that are changing often, breaking often, and would benefit from the resiliency an automated test would provide - Lower JS libraries that might have many downstream effects - e.g. our [`ExpensiMark`](https://github.com/Expensify/expensify-common/blob/07ff1c2a07dc122aa89e3cfd3263bb1958222233/lib/ExpensiMark.js#L10) markdown parser -- [Actions](https://github.com/Expensify/expensify.cash#actions). It's important to verify that data is being saved as expected after one or more actions have finished doing their work. +- [Actions](https://github.com/Expensify/App#actions). It's important to verify that data is being saved as expected after one or more actions have finished doing their work. ## Debugging Tests diff --git a/tests/unit/GithubUtilsTest.js b/tests/unit/GithubUtilsTest.js index c970257a2f4e..5ef465413091 100644 --- a/tests/unit/GithubUtilsTest.js +++ b/tests/unit/GithubUtilsTest.js @@ -25,26 +25,26 @@ describe('GithubUtils', () => { }, ], // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.1-47`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/21\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/22\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/23\r\n\r\n', + body: '**Release Version:** `1.0.1-47`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/App/pull/21\r\n- [x] https://github.com/Expensify/App/pull/22\r\n- [ ] https://github.com/Expensify/App/pull/23\r\n\r\n', }; const issueWithDeployBlockers = {...baseIssue}; // eslint-disable-next-line max-len - issueWithDeployBlockers.body += '\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/1\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/2\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/1234\r\n'; + issueWithDeployBlockers.body += '\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/App/issues/1\r\n- [x] https://github.com/Expensify/App/issues/2\r\n- [ ] https://github.com/Expensify/App/pull/1234\r\n'; const baseExpectedResponse = { PRList: [ { - url: 'https://github.com/Expensify/Expensify.cash/pull/21', + url: 'https://github.com/Expensify/App/pull/21', number: 21, isVerified: false, }, { - url: 'https://github.com/Expensify/Expensify.cash/pull/22', + url: 'https://github.com/Expensify/App/pull/22', number: 22, isVerified: true, }, { - url: 'https://github.com/Expensify/Expensify.cash/pull/23', + url: 'https://github.com/Expensify/App/pull/23', number: 23, isVerified: false, }, @@ -69,17 +69,17 @@ describe('GithubUtils', () => { const expectedResponseWithDeployBlockers = {...baseExpectedResponse}; expectedResponseWithDeployBlockers.deployBlockers = [ { - url: 'https://github.com/Expensify/Expensify.cash/issues/1', + url: 'https://github.com/Expensify/App/issues/1', number: 1, isResolved: false, }, { - url: 'https://github.com/Expensify/Expensify.cash/issues/2', + url: 'https://github.com/Expensify/App/issues/2', number: 2, isResolved: true, }, { - url: 'https://github.com/Expensify/Expensify.cash/pull/1234', + url: 'https://github.com/Expensify/App/pull/1234', number: 1234, isResolved: false, }, @@ -89,7 +89,7 @@ describe('GithubUtils', () => { const bareIssue = { ...baseIssue, // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.1-47`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\ncc @Expensify/applauseleads\n', + body: '**Release Version:** `1.0.1-47`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\ncc @Expensify/applauseleads\n', }; const bareExpectedResponse = { @@ -149,10 +149,10 @@ describe('GithubUtils', () => { describe('valid pull requests', () => { test.each([ ['https://github.com/Expensify/Expensify/pull/156369', 156369], - ['https://github.com/Expensify/Expensify.cash/pull/1644', 1644], + ['https://github.com/Expensify/App/pull/1644', 1644], ['https://github.com/Expensify/expensify-common/pull/346', 346], ['https://api.github.com/repos/Expensify/Expensify/pull/156369', 156369], - ['https://api.github.com/repos/Expensify/Expensify.cash/pull/1644', 1644], + ['https://api.github.com/repos/Expensify/App/pull/1644', 1644], ['https://api.github.com/repos/Expensify/expensify-common/pull/346', 346], ])('getPullRequestNumberFromURL("%s")', (input, expected) => { expect(GithubUtils.getPullRequestNumberFromURL(input)).toBe(expected); @@ -175,10 +175,10 @@ describe('GithubUtils', () => { describe('valid issues', () => { test.each([ ['https://github.com/Expensify/Expensify/issues/156369', 156369], - ['https://github.com/Expensify/Expensify.cash/issues/1644', 1644], + ['https://github.com/Expensify/App/issues/1644', 1644], ['https://github.com/Expensify/expensify-common/issues/346', 346], ['https://api.github.com/repos/Expensify/Expensify/issues/156369', 156369], - ['https://api.github.com/repos/Expensify/Expensify.cash/issues/1644', 1644], + ['https://api.github.com/repos/Expensify/App/issues/1644', 1644], ['https://api.github.com/repos/Expensify/expensify-common/issues/346', 346], ])('getIssueNumberFromURL("%s")', (input, expected) => { expect(GithubUtils.getIssueNumberFromURL(input)).toBe(expected); @@ -201,16 +201,16 @@ describe('GithubUtils', () => { describe('valid issues and pull requests', () => { test.each([ ['https://github.com/Expensify/Expensify/issues/156369', 156369], - ['https://github.com/Expensify/Expensify.cash/issues/1644', 1644], + ['https://github.com/Expensify/App/issues/1644', 1644], ['https://github.com/Expensify/expensify-common/issues/346', 346], ['https://github.com/Expensify/Expensify/pull/156369', 156369], - ['https://github.com/Expensify/Expensify.cash/pull/1644', 1644], + ['https://github.com/Expensify/App/pull/1644', 1644], ['https://github.com/Expensify/expensify-common/pull/346', 346], ['https://api.github.com/repos/Expensify/Expensify/issues/156369', 156369], - ['https://api.github.com/repos/Expensify/Expensify.cash/issues/1644', 1644], + ['https://api.github.com/repos/Expensify/App/issues/1644', 1644], ['https://api.github.com/repos/Expensify/expensify-common/issues/346', 346], ['https://api.github.com/repos/Expensify/Expensify/pull/156369', 156369], - ['https://api.github.com/repos/Expensify/Expensify.cash/pull/1644', 1644], + ['https://api.github.com/repos/Expensify/App/pull/1644', 1644], ['https://api.github.com/repos/Expensify/expensify-common/pull/346', 346], ])('getIssueOrPullRequestNumberFromURL("%s")', (input, expected) => { expect(GithubUtils.getIssueOrPullRequestNumberFromURL(input)).toBe(expected); @@ -233,25 +233,25 @@ describe('GithubUtils', () => { const mockPRs = [ { number: 1, - html_url: 'https://github.com/Expensify/Expensify.cash/pull/1', + html_url: 'https://github.com/Expensify/App/pull/1', user: {login: 'testUser'}, labels: [], }, { number: 2, - html_url: 'https://github.com/Expensify/Expensify.cash/pull/2', + html_url: 'https://github.com/Expensify/App/pull/2', user: {login: 'testUser'}, labels: [], }, { number: 3, - html_url: 'https://github.com/Expensify/Expensify.cash/pull/3', + html_url: 'https://github.com/Expensify/App/pull/3', user: {login: 'testUser'}, labels: [], }, { number: 4, - html_url: 'https://github.com/Expensify/Expensify.cash/pull/4', + html_url: 'https://github.com/Expensify/App/pull/4', user: {login: 'OSBotify'}, labels: [{name: 'automerge'}], }, @@ -273,20 +273,20 @@ describe('GithubUtils', () => { githubUtils.octokitInternal = octokit; const tag = '1.0.2-12'; const basePRList = [ - 'https://github.com/Expensify/Expensify.cash/pull/2', - 'https://github.com/Expensify/Expensify.cash/pull/3', - 'https://github.com/Expensify/Expensify.cash/pull/3', - 'https://github.com/Expensify/Expensify.cash/pull/1', - 'https://github.com/Expensify/Expensify.cash/pull/4', + 'https://github.com/Expensify/App/pull/2', + 'https://github.com/Expensify/App/pull/3', + 'https://github.com/Expensify/App/pull/3', + 'https://github.com/Expensify/App/pull/1', + 'https://github.com/Expensify/App/pull/4', ]; const baseDeployBlockerList = [ - 'https://github.com/Expensify/Expensify.cash/pull/3', - 'https://github.com/Expensify/Expensify.cash/issues/4', + 'https://github.com/Expensify/App/pull/3', + 'https://github.com/Expensify/App/issues/4', ]; // eslint-disable-next-line max-len - const baseExpectedOutput = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n`; + const baseExpectedOutput = `**Release Version:** \`${tag}\`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n`; const openCheckbox = '- [ ]'; const closedCheckbox = '- [x]'; @@ -347,8 +347,8 @@ describe('GithubUtils', () => { describe('getPullRequestURLFromNumber', () => { test.each([ - [1234, 'https://github.com/Expensify/Expensify.cash/pull/1234'], - [54321, 'https://github.com/Expensify/Expensify.cash/pull/54321'], + [1234, 'https://github.com/Expensify/App/pull/1234'], + [54321, 'https://github.com/Expensify/App/pull/54321'], ])('getPullRequestNumberFromURL("%s")', (input, expectedOutput) => ( expect(GithubUtils.getPullRequestURLFromNumber(input)).toBe(expectedOutput) )); @@ -357,9 +357,9 @@ describe('GithubUtils', () => { describe('getReleaseBody', () => { test.each([ // eslint-disable-next-line max-len - [[1, 2, 3], '- https://github.com/Expensify/Expensify.cash/pull/1\r\n- https://github.com/Expensify/Expensify.cash/pull/2\r\n- https://github.com/Expensify/Expensify.cash/pull/3'], + [[1, 2, 3], '- https://github.com/Expensify/App/pull/1\r\n- https://github.com/Expensify/App/pull/2\r\n- https://github.com/Expensify/App/pull/3'], [[], ''], - [[12345], '- https://github.com/Expensify/Expensify.cash/pull/12345'], + [[12345], '- https://github.com/Expensify/App/pull/12345'], ])('getReleaseBody("%s")', (input, expectedOutput) => ( expect(GithubUtils.getReleaseBody(input)).toBe(expectedOutput) )); diff --git a/tests/unit/checkDeployBlockersTest.js b/tests/unit/checkDeployBlockersTest.js index da61431d907f..ebd741ffc6d8 100644 --- a/tests/unit/checkDeployBlockersTest.js +++ b/tests/unit/checkDeployBlockersTest.js @@ -51,7 +51,7 @@ describe('checkDeployBlockers', () => { number: 1, title: 'Scott\'s Unfinished QA Checklist', body: 'Checklist for Deploy #668\r\n' - + '- [x] @foo https://github.com/Expensify/Expensify.cash/issues/1', + + '- [x] @foo https://github.com/Expensify/App/issues/1', }, }; @@ -80,7 +80,7 @@ describe('checkDeployBlockers', () => { test('Test an issue with an unchecked item and :shipit:', () => { const uncheckedItemIssue = baseIssue; - uncheckedItemIssue.data.body += '\r\n- [ ] @bar https://github.com/Expensify/Expensify.cash/issues/23'; + uncheckedItemIssue.data.body += '\r\n- [ ] @bar https://github.com/Expensify/App/issues/23'; mockGetIssue.mockResolvedValue(uncheckedItemIssue); mockListComments.mockResolvedValue(baseComments); return run().then(() => { @@ -91,8 +91,8 @@ describe('checkDeployBlockers', () => { test('Test an issue with all boxes checked but no :shipit:', () => { const checkedBoxesNoShipitIssue = baseIssue; checkedBoxesNoShipitIssue.data.body = 'Checklist for Deploy #668:\r\n' - + '- [x] @bar https://github.com/Expensify/Expensify.cash/issues/23\r\n' - + '- [x] @baz https://github.com/Expensify/Expensify.cash/issues/42'; + + '- [x] @bar https://github.com/Expensify/App/issues/23\r\n' + + '- [x] @baz https://github.com/Expensify/App/issues/42'; mockGetIssue.mockResolvedValue(checkedBoxesNoShipitIssue); // eslint-disable-next-line max-len baseComments.data.push({body: 'This issue either has unchecked QA steps or has not yet been stamped with a :shipit: comment. Reopening!'}); diff --git a/tests/unit/createOrUpdateStagingDeployTest.js b/tests/unit/createOrUpdateStagingDeployTest.js index 617fcf472b63..3286f2b19c8d 100644 --- a/tests/unit/createOrUpdateStagingDeployTest.js +++ b/tests/unit/createOrUpdateStagingDeployTest.js @@ -21,13 +21,13 @@ beforeAll(() => { create: jest.fn().mockImplementation(arg => Promise.resolve({ data: { ...arg, - html_url: 'https://github.com/Expensify/Expensify.cash/issues/29', + html_url: 'https://github.com/Expensify/App/issues/29', }, })), update: jest.fn().mockImplementation(arg => Promise.resolve({ data: { ...arg, - html_url: `https://github.com/Expensify/Expensify.cash/issues/${arg.issue_number}`, + html_url: `https://github.com/Expensify/App/issues/${arg.issue_number}`, }, })), listForRepo: mockListIssues, @@ -59,7 +59,7 @@ const LABELS = { STAGING_DEPLOY_CASH: { id: 2783847782, node_id: 'MDU6TGFiZWwyNzgzODQ3Nzgy', - url: 'https://api.github.com/repos/Expensify/Expensify.cash/labels/StagingDeployCash', + url: 'https://api.github.com/repos/Expensify/App/labels/StagingDeployCash', name: GithubUtils.STAGING_DEPLOY_CASH_LABEL, color: '6FC269', default: false, @@ -68,7 +68,7 @@ const LABELS = { DEPLOY_BLOCKER_CASH: { id: 2810597462, node_id: 'MDU6TGFiZWwyODEwNTk3NDYy', - url: 'https://api.github.com/repos/Expensify/Expensify.cash/labels/DeployBlockerCash', + url: 'https://api.github.com/repos/Expensify/App/labels/DeployBlockerCash', name: GithubUtils.DEPLOY_BLOCKER_CASH_LABEL, color: '000000', default: false, @@ -78,13 +78,13 @@ const LABELS = { describe('createOrUpdateStagingDeployCash', () => { const closedStagingDeployCash = { - url: 'https://api.github.com/repos/Expensify/Expensify.cash/issues/28', + url: 'https://api.github.com/repos/Expensify/App/issues/28', title: 'Test StagingDeployCash', number: 28, labels: [LABELS.STAGING_DEPLOY_CASH], - html_url: 'https://github.com/Expensify/Expensify.cash/issues/29', + html_url: 'https://github.com/Expensify/App/issues/29', // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.1-0`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/1\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/2\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/3\r\n\r\n**Deploy Blockers:**\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/1\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/4\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/5\r\n\r\ncc @Expensify/applauseleads\r\n', + body: '**Release Version:** `1.0.1-0`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [x] https://github.com/Expensify/App/pull/1\r\n- [x] https://github.com/Expensify/App/pull/2\r\n- [x] https://github.com/Expensify/App/pull/3\r\n\r\n**Deploy Blockers:**\r\n- [x] https://github.com/Expensify/App/pull/1\r\n- [x] https://github.com/Expensify/App/issues/4\r\n- [x] https://github.com/Expensify/App/issues/5\r\n\r\ncc @Expensify/applauseleads\r\n', state: 'closed', }; @@ -122,42 +122,42 @@ describe('createOrUpdateStagingDeployCash', () => { expect(result).toStrictEqual({ owner: GithubUtils.GITHUB_OWNER, repo: GithubUtils.EXPENSIFY_CASH_REPO, - title: `Deploy Checklist: Expensify.cash ${moment().format('YYYY-MM-DD')}`, + title: `Deploy Checklist: New Expensify ${moment().format('YYYY-MM-DD')}`, labels: [GithubUtils.STAGING_DEPLOY_CASH_LABEL], - html_url: 'https://github.com/Expensify/Expensify.cash/issues/29', + html_url: 'https://github.com/Expensify/App/issues/29', assignees: [GithubUtils.APPLAUSE_BOT], // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.2-1`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/7\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/8\r\n\r\ncc @Expensify/applauseleads\r\n', + body: '**Release Version:** `1.0.2-1`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [ ] https://github.com/Expensify/App/pull/7\r\n- [ ] https://github.com/Expensify/App/pull/8\r\n\r\ncc @Expensify/applauseleads\r\n', }); }); }); describe('updates existing issue when there is one open', () => { const openStagingDeployCashBefore = { - url: 'https://api.github.com/repos/Expensify/Expensify.cash/issues/29', + url: 'https://api.github.com/repos/Expensify/App/issues/29', title: 'Test StagingDeployCash', number: 29, labels: [LABELS.STAGING_DEPLOY_CASH], // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.2-1`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/7\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/8\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/9\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/10\r\n\r\ncc @Expensify/applauseleads\r\n', + body: '**Release Version:** `1.0.2-1`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [x] https://github.com/Expensify/App/pull/7\r\n- [ ] https://github.com/Expensify/App/pull/8\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [ ] https://github.com/Expensify/App/issues/9\r\n- [x] https://github.com/Expensify/App/issues/10\r\n\r\ncc @Expensify/applauseleads\r\n', state: 'open', }; const currentOpenDeployBlockers = [ { - html_url: 'https://github.com/Expensify/Expensify.cash/pull/6', + html_url: 'https://github.com/Expensify/App/pull/6', number: 6, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], }, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/9', + html_url: 'https://github.com/Expensify/App/issues/9', number: 9, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], }, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/10', + html_url: 'https://github.com/Expensify/App/issues/10', number: 10, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], @@ -197,13 +197,13 @@ describe('createOrUpdateStagingDeployCash', () => { data: [ ...currentOpenDeployBlockers, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/11', // New + html_url: 'https://github.com/Expensify/App/issues/11', // New number: 11, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], }, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/12', // New + html_url: 'https://github.com/Expensify/App/issues/12', // New number: 12, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], @@ -221,9 +221,9 @@ describe('createOrUpdateStagingDeployCash', () => { repo: GithubUtils.EXPENSIFY_CASH_REPO, issue_number: openStagingDeployCashBefore.number, // eslint-disable-next-line max-len - html_url: `https://github.com/Expensify/Expensify.cash/issues/${openStagingDeployCashBefore.number}`, + html_url: `https://github.com/Expensify/App/issues/${openStagingDeployCashBefore.number}`, // eslint-disable-next-line max-len - body: `**Release Version:** \`1.0.2-2\`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/7\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/8\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/${newPullRequests[0]}\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/${newPullRequests[1]}\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/9\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/10\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/11\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/12\r\n\r\ncc @Expensify/applauseleads\r\n`, + body: `**Release Version:** \`1.0.2-2\`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [x] https://github.com/Expensify/App/pull/7\r\n- [ ] https://github.com/Expensify/App/pull/8\r\n- [ ] https://github.com/Expensify/App/pull/${newPullRequests[0]}\r\n- [ ] https://github.com/Expensify/App/pull/${newPullRequests[1]}\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [ ] https://github.com/Expensify/App/issues/9\r\n- [x] https://github.com/Expensify/App/issues/10\r\n- [ ] https://github.com/Expensify/App/issues/11\r\n- [ ] https://github.com/Expensify/App/issues/12\r\n\r\ncc @Expensify/applauseleads\r\n`, }); }); }); @@ -247,13 +247,13 @@ describe('createOrUpdateStagingDeployCash', () => { data: [ ...currentOpenDeployBlockers, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/11', // New + html_url: 'https://github.com/Expensify/App/issues/11', // New number: 11, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], }, { - html_url: 'https://github.com/Expensify/Expensify.cash/issues/12', // New + html_url: 'https://github.com/Expensify/App/issues/12', // New number: 12, state: 'open', labels: [LABELS.DEPLOY_BLOCKER_CASH], @@ -271,9 +271,9 @@ describe('createOrUpdateStagingDeployCash', () => { repo: GithubUtils.EXPENSIFY_CASH_REPO, issue_number: openStagingDeployCashBefore.number, // eslint-disable-next-line max-len - html_url: `https://github.com/Expensify/Expensify.cash/issues/${openStagingDeployCashBefore.number}`, + html_url: `https://github.com/Expensify/App/issues/${openStagingDeployCashBefore.number}`, // eslint-disable-next-line max-len - body: '**Release Version:** `1.0.2-2`\r\n**Compare Changes:** https://github.com/Expensify/Expensify.cash/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [x] https://github.com/Expensify/Expensify.cash/pull/7\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/8\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/Expensify.cash/pull/6\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/9\r\n- [x] https://github.com/Expensify/Expensify.cash/issues/10\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/11\r\n- [ ] https://github.com/Expensify/Expensify.cash/issues/12\r\n\r\ncc @Expensify/applauseleads\r\n', + body: '**Release Version:** `1.0.2-2`\r\n**Compare Changes:** https://github.com/Expensify/App/compare/production...staging\r\n\r\n**This release contains changes from the following pull requests:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [x] https://github.com/Expensify/App/pull/7\r\n- [ ] https://github.com/Expensify/App/pull/8\r\n\r\n**Deploy Blockers:**\r\n- [ ] https://github.com/Expensify/App/pull/6\r\n- [ ] https://github.com/Expensify/App/issues/9\r\n- [x] https://github.com/Expensify/App/issues/10\r\n- [ ] https://github.com/Expensify/App/issues/11\r\n- [ ] https://github.com/Expensify/App/issues/12\r\n\r\ncc @Expensify/applauseleads\r\n', }); }); }); diff --git a/web/index.html b/web/index.html index a96e576510c2..8a343870fe92 100644 --- a/web/index.html +++ b/web/index.html @@ -2,16 +2,16 @@ - Expensify.cash + New Expensify - - - + + + - +