From e9bfe883b69f5351998e49f385afef35fee57096 Mon Sep 17 00:00:00 2001 From: "georgian-sorin.maxim" Date: Wed, 17 Mar 2021 14:49:35 +0000 Subject: [PATCH] Change Git Checks --- .github/dependabot.yml | 10 + .github/workflows/main.yml | 40 ++ .github/workflows/ts-ignore-counter.yml | 48 ++ __mocks__/react-native-device-info.js | 32 ++ __mocks__/react-native-permissions.js | 3 + .../__tests__/ButtonWithIcon.spec.tsx | 2 +- .../ButtonWithIcon.spec.tsx.snap | 2 +- .../__snapshots__/Card.spec.tsx.snap | 104 ++-- .../SettingsScreen.spec.tsx.snap | 501 ++++++++++++++++++ src/store/reducers/__tests__/data.spec.tsx | 5 +- 10 files changed, 701 insertions(+), 46 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/ts-ignore-counter.yml create mode 100644 __mocks__/react-native-device-info.js create mode 100644 __mocks__/react-native-permissions.js create mode 100644 src/screens/__tests__/__snapshots__/SettingsScreen.spec.tsx.snap diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..e30aa2cf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: 'npm' + directory: '/' + schedule: + interval: 'daily' + time: '21:00' + open-pull-requests-limit: 20 + ignore: + - dependency-name: 'react-native' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..9ef54c25 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,40 @@ +name: Git Checks + +on: [push] + +jobs: + build: + name: Run tests, linter, TS + runs-on: macOS-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 12 + + - name: Install dependencies + run: yarn + + - name: Pod Install + working-directory: ios + run: pod install + + # TS + - name: Run TypeScript + run: yarn tsc + + # Run linter + - name: Run linter + run: yarn lint + + # Run Prettier + - name: Run prettier + run: yarn prettier + + # Tests + - name: Run unit tests + run: yarn jest \ No newline at end of file diff --git a/.github/workflows/ts-ignore-counter.yml b/.github/workflows/ts-ignore-counter.yml new file mode 100644 index 00000000..c1a00ac2 --- /dev/null +++ b/.github/workflows/ts-ignore-counter.yml @@ -0,0 +1,48 @@ +name: TypeScript '@ts-ignore' counter +on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Dump GitHub context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + ref: master + - name: Count ts-ignore on master + id: before + run: | + export BEFORE=`find . -type f \( -name "*.ts" -or -name "*.tsx" \) -exec grep -o "@ts-ignore" {} \; |wc -l` + echo "::set-output name=count::$BEFORE" + - uses: actions/checkout@v2 + - name: Count ts-ignore on this commit + id: after + run: | + export AFTER=`find . -type f \( -name "*.ts" -or -name "*.tsx" \) -exec grep -o "@ts-ignore" {} \; |wc -l` + echo "::set-output name=count::$AFTER" + - name: Do the math + id: result + run: | + export BEFORE="${{ steps.before.outputs.count }}" + export AFTER="${{ steps.after.outputs.count }}" + if [[ `expr $AFTER - $BEFORE` -gt 0 ]]; then + export DIFF=`expr $AFTER - $BEFORE` + export CHANGE="(went up by $DIFF) " + for n in $(seq $DIFF); do export CHANGE="$CHANGE:broken_heart:"; done + elif [[ `expr $BEFORE - $AFTER` -gt 0 ]]; then + export DIFF=`expr $BEFORE - $AFTER` + export CHANGE="(went down by $DIFF) " + for n in $(seq $DIFF); do export CHANGE="$CHANGE:sparkles:"; done + else + export CHANGE="(unchanged)" + fi + echo "::set-output name=comment::**ts-ignore**'s: $AFTER $CHANGE" + - name: Post issue comment + run: | + jq --arg msg "${{ steps.result.outputs.comment }}" -nc '{"body": $msg}' | \ + curl -sL -X POST -d @- \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/$GITHUB_REPOSITORY/commits/$GITHUB_SHA/comments" \ No newline at end of file diff --git a/__mocks__/react-native-device-info.js b/__mocks__/react-native-device-info.js new file mode 100644 index 00000000..250db168 --- /dev/null +++ b/__mocks__/react-native-device-info.js @@ -0,0 +1,32 @@ +module.exports = { + getUserAgent: () => "TestUser/Agent", + getManufacturer: () => "Apple", + getDeviceId: () => "DeviceId", + getSystemVersion: () => "10.0", + getReadableVersion: () => "1.0.0.1", + getApplicationName: () => "Mindful Chef (Dev)", + isEmulator: () => true, + isTablet: () => false, + getModel: () => "Mock iPhone 12", + getVersion: jest.fn(() => Promise.resolve("24.0")), + getBundleId: jest.fn(() => Promise.resolve("com.mindfulchef.uat")), + getBuildNumber: jest.fn(() => Promise.resolve("3.0.0")), + getIpAddress: jest.fn(() => Promise.resolve("10.158.70.93")), + getUniqueID: jest.fn(), + getBrand: jest.fn(), + getSystemName: jest.fn(), + getDeviceName: jest.fn(), + getDeviceLocale: jest.fn(), + getDeviceCountry: jest.fn(), + getTimezone: jest.fn(), + is24Hour: jest.fn(), + isPinOrFingerprintSet: jest.fn(), + getAPILevel: jest.fn(), + getInstanceID: jest.fn(), + getPhoneNumber: jest.fn(), + getFirstInstallTime: jest.fn(), + getLastUpdateTime: jest.fn(), + getSerialNumber: jest.fn(), + getMACAddress: jest.fn(), + getCarrier: jest.fn(), +}; diff --git a/__mocks__/react-native-permissions.js b/__mocks__/react-native-permissions.js new file mode 100644 index 00000000..bec05185 --- /dev/null +++ b/__mocks__/react-native-permissions.js @@ -0,0 +1,3 @@ +module.exports = { + checkNotifications: () => true, +}; diff --git a/src/components/__tests__/ButtonWithIcon.spec.tsx b/src/components/__tests__/ButtonWithIcon.spec.tsx index d25b5d17..e48bbdb0 100644 --- a/src/components/__tests__/ButtonWithIcon.spec.tsx +++ b/src/components/__tests__/ButtonWithIcon.spec.tsx @@ -6,7 +6,7 @@ import ButtonWithIcon from "../ButtonWithIcon"; it(`renders correctly`, () => { const defaultProps = { label: "Google", - icon: "Icon", + icon: "add", onPress: () => {}, }; const tree = renderer.create().toJSON(); diff --git a/src/components/__tests__/__snapshots__/ButtonWithIcon.spec.tsx.snap b/src/components/__tests__/__snapshots__/ButtonWithIcon.spec.tsx.snap index 210075f4..d7946203 100644 --- a/src/components/__tests__/__snapshots__/ButtonWithIcon.spec.tsx.snap +++ b/src/components/__tests__/__snapshots__/ButtonWithIcon.spec.tsx.snap @@ -72,7 +72,7 @@ exports[`renders correctly 1`] = ` ] } > - ? +  + Google.com + + -  + , , - - Google.com - - - , , - + "alignItems": "center", + "backgroundColor": "#f7f7f7", + "flex": 1, + "height": 100, + "justifyContent": "center", + "width": 100, + } + } + > + +  + + + `; diff --git a/src/screens/__tests__/__snapshots__/SettingsScreen.spec.tsx.snap b/src/screens/__tests__/__snapshots__/SettingsScreen.spec.tsx.snap new file mode 100644 index 00000000..45b807ca --- /dev/null +++ b/src/screens/__tests__/__snapshots__/SettingsScreen.spec.tsx.snap @@ -0,0 +1,501 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SettingsScreen renders the SettingsScreen screen 1`] = ` + + + + + + + Your details + + + + + + + Name + + + John + + Doe + + + + + Email + + + test@test.com + + + + + App version + + + + + + + + UUID + + + + + + + + + + + + +  + + + + Terms & Conditions + + + + + + + + +  + + + + Contact + + + + + + + + +  + + + + Logout + + + + + + +`; diff --git a/src/store/reducers/__tests__/data.spec.tsx b/src/store/reducers/__tests__/data.spec.tsx index 2b6fe68a..16ef6f05 100644 --- a/src/store/reducers/__tests__/data.spec.tsx +++ b/src/store/reducers/__tests__/data.spec.tsx @@ -9,7 +9,6 @@ describe("Data reducer", () => { }); expect(state).toEqual({ - data: [], universities: [], }); }); @@ -22,7 +21,7 @@ describe("Data reducer", () => { payload, }); - expect(state).toEqual({ data: [], universities: ["mock"] }); + expect(state).toEqual({ universities: ["mock"] }); }); it("DATA_FETCHED_FAILURE", () => { @@ -33,6 +32,6 @@ describe("Data reducer", () => { payload, }); - expect(state).toEqual({ data: [], universities: [] }); + expect(state).toEqual({ universities: [] }); }); });