diff --git a/.github/workflows/unit-test-coverage.yml b/.github/workflows/unit-test-coverage.yml new file mode 100644 index 00000000..5c4fe55d --- /dev/null +++ b/.github/workflows/unit-test-coverage.yml @@ -0,0 +1,59 @@ +name: CodeCov Code Coverage PR Analysis + +on: + pull_request: + branches: + - master + +jobs: + coverage: + name: Sonar analysis on coverage + runs-on: ubuntu-latest + if: | + !(github.head_ref == 'changeset-release/master' && github.actor == 'rzpcibot') && + !contains(github.event.head_commit.message, '[skip ci]') + steps: + - name: Checkout Codebase + uses: actions/checkout@v3 + with: + token: ${{ secrets.CI_BOT_TOKEN }} + - name: Setup Node v20 + uses: actions/setup-node@v3 + with: + node-version: 20.3.1 + - name: Setup Cache & Install Dependencies + uses: bahmutov/npm-install@v1.8.15 + with: + install-command: yarn --frozen-lockfile + - name: Run Tests + run: yarn test + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + fail_ci_if_error: false + verbose: true + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v2 + with: + name: Unit Test Results + path: src/coverage/**/*.xml + + publish-test-results: + name: 'Publish Unit Tests Results' + needs: coverage + runs-on: ubuntu-latest + # Only run if prereq jobs completed - successfully or not + if: success() || failure() + steps: + - name: Download Artifacts + uses: actions/download-artifact@v2 + with: + path: artifacts + + - name: Publish Unit Test Results + uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1.6 + continue-on-error: true + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + files: artifacts/**/*.xml diff --git a/.gitignore b/.gitignore index badb39ef..cfc7712d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules dist lib -.DS_Store \ No newline at end of file +.DS_Store +coverage \ No newline at end of file diff --git a/jest.config.ts b/jest.config.ts index 7b2829c0..360c82d6 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,6 +1,17 @@ const config = { + collectCoverage: true, preset: 'ts-jest', testEnvironment: 'jsdom', + collectCoverageFrom: ['**/*.{ts,js}', '!coverage/**/*.{ts,tsx,js,jsx}'], + coverageThreshold: { + './src/': { + statements: 0, + branches: 0, + functions: 0, + lines: 0, + }, + }, + rootDir: 'src', }; export default config; diff --git a/src/modules/currency/formatCurrency.ts b/src/modules/currency/formatCurrency.ts index 3b85b4e4..40507935 100644 --- a/src/modules/currency/formatCurrency.ts +++ b/src/modules/currency/formatCurrency.ts @@ -12,3 +12,8 @@ export default function (currency: keyof typeof CURRENCIES, amount: number) { amount, ); } + +export const test = (inp) => { + if (inp === 1) return 'a'; + return 'b'; +}; diff --git a/src/modules/currency/index.test.ts b/src/modules/currency/index.test.ts new file mode 100644 index 00000000..47ba663b --- /dev/null +++ b/src/modules/currency/index.test.ts @@ -0,0 +1,8 @@ +import { test } from './formatCurrency'; + +describe('test function', () => { + it('test function test', () => { + const res = test(1); + expect(res).toBe('a'); + }); +});