diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..d8b3a27d
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,15 @@
+version: 2
+updates:
+ - package-ecosystem: npm
+ directory: '/'
+ schedule:
+ interval: daily
+ time: '21:00'
+ open-pull-requests-limit: 10
+ ignore:
+ - dependency-name: typeorm
+ versions:
+ - '> 0.2.24'
+ - '< 0.3'
+ reviewers:
+ - 'theappnest/backend'
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000..327a6427
--- /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 test
\ 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/package.json b/package.json
index 40d9d570..7a75a4ab 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"jwt-decode": "^3.1.2",
"luxon": "^1.24.1",
"react": "16.13.1",
- "react-dom": "~16.9.0",
+ "react-dom": "~16.13.1",
"react-native": "0.63.2",
"react-native-device-info": "^5.6.3",
"react-native-fast-image": "^8.3.2",
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: [] });
});
});
diff --git a/yarn.lock b/yarn.lock
index 36ed8e43..fdf6605e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6776,14 +6776,15 @@ react-devtools-core@^4.6.0:
shell-quote "^1.6.1"
ws "^7"
-react-dom@~16.9.0:
- version "16.9.0"
- resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz#5e65527a5e26f22ae3701131bcccaee9fb0d3962"
+react-dom@~16.13.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
+ integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
- scheduler "^0.15.0"
+ scheduler "^0.19.1"
react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
version "16.13.1"
@@ -7337,13 +7338,6 @@ scheduler@0.19.1, scheduler@^0.19.1:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-scheduler@^0.15.0:
- version "0.15.0"
- resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e"
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
version "5.7.1"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"