-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dev' of https://github.com/atlp-rwanda/eagles-ec-be int…
…o ft-user-signup-#187431242
- Loading branch information
Showing
20 changed files
with
299 additions
and
127 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
name: Eagle e-commerce CI/CD | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- dev | ||
|
||
pull_request: | ||
branches: | ||
- main | ||
- dev | ||
|
||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
name: Building code | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout the code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Setup node | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: "20" | ||
|
||
- name: Install dependencies | ||
run: npm install | ||
|
||
- name: Running test | ||
env: | ||
DB_CONNECTION: ${{ secrets.DB_CONNECTION }} | ||
TEST_DB: ${{ secrets.TEST_DB }} | ||
run: npm run test | ||
|
||
- name: Build application | ||
run: npm run build | ||
|
||
- name: Upload coverage reports to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
slug: soleil00/eagles-ec-be | ||
|
||
- name: Trigger Render Deployment | ||
env: | ||
RENDER_DEPLOYMENT_HOOK_URL: ${{ secrets.RENDER_DEPLOYMENT_HOOK_URL }} | ||
run: | | ||
curl -X POST $RENDER_DEPLOYMENT_HOOK_URL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,21 @@ | ||
# eagles-ec-be | ||
|
||
<div style="display: flex; justify-content: center;" align="center"> | ||
<img src="https://codecov.io/gh/soleil00/eagles-ec-be/branch/dev/graph/badge.svg?token=9c1e8e93-1062-4e49-a58d-b2777a75fb70" alt="Codecov" > | ||
<img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/soleil00/eagles-ec-be/test.yml" > | ||
<a href="https://codeclimate.com/github/atlp-rwanda/eagles-ec-be/maintainability"><img src="https://api.codeclimate.com/v1/badges/dfe8454356fb9da65407/maintainability" /></a> | ||
|
||
</div> | ||
|
||
### Technology used | ||
|
||
![Node.js](https://img.shields.io/badge/-Node.js-000000?style=flat&logo=node.js) | ||
[![Passport.js](https://img.shields.io/badge/auth%20library-Passport.js-green)](http://www.passportjs.org/) | ||
[![PostgreSQL](https://img.shields.io/badge/database-PostgreSQL-blue)](https://www.postgresql.org/) | ||
[![Sequelize](https://img.shields.io/badge/ORM-Sequelize-orange)](https://sequelize.org/) | ||
[![Jest](https://img.shields.io/badge/testing-Jest-red)](https://jestjs.io/) | ||
[![ESLint](https://img.shields.io/badge/code%20style-ESLint-blueviolet)](https://eslint.org/) | ||
|
||
### Deployed link | ||
|
||
[Eagles EC](https://eagles-ec-be-development.onrender.com/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,59 @@ | ||
import request from 'supertest'; | ||
import { beforeAll, afterAll, beforeEach, afterEach, test } from '@jest/globals'; | ||
import app from '../src/utils/server'; | ||
import { testDbConnection, testSequelize } from '../src/config/testDbConfig'; | ||
import UserTest from '../src/sequelize/models/usersTests'; | ||
import request from 'supertest'; | ||
import { beforeAll, afterAll, beforeEach, afterEach, test } from '@jest/globals'; | ||
import app from '../src/utils/server'; | ||
import User from '../src/sequelize/models/users'; | ||
import sequelize, { connect } from '../src/config/dbConnection'; | ||
|
||
describe('Testing User route', () => { | ||
beforeAll(async () => { | ||
try { | ||
await testDbConnection(); | ||
} catch (error) { | ||
testSequelize.close(); | ||
} | ||
}, 20000); | ||
|
||
afterAll(async () => { | ||
await testSequelize.close(); | ||
}); | ||
describe('Testing User route', () => { | ||
beforeAll(async () => { | ||
try { await | ||
connect(); | ||
} | ||
catch (error) { sequelize.close(); } }, 20000); | ||
|
||
beforeEach(async () => { | ||
await UserTest.destroy({ truncate: true }); | ||
}); | ||
afterAll(async () => { | ||
await sequelize.close(); }); | ||
beforeEach(async () => { | ||
await User.destroy({ truncate: true }); | ||
}); | ||
|
||
test('should return 201 when registering with an new user', async () => { | ||
const userData = { | ||
name: 'John Doe', | ||
username: 'johndoe', | ||
email: '[email protected]', | ||
password: 'password123', | ||
}; | ||
|
||
const response = await request(app) | ||
.post('/api/v1/users/register') | ||
.send(userData); | ||
|
||
expect(response.status).toBe(201); | ||
}, 20000); | ||
test('should return 201 and create a new user when registering successfully', async () => { | ||
const userData = { | ||
name: 'yvanna', | ||
username: 'testuser', | ||
email: '[email protected]', | ||
password: 'test1234', | ||
}; | ||
const response = await request(app) | ||
.post('/api/v1/users') | ||
.send(userData); | ||
expect(response.status).toBe(201); }, 20000); | ||
|
||
test('should return 400 when registering with an existing email', async () => { | ||
await UserTest.create({ | ||
name: "testing", | ||
username: "yvan", | ||
email : "[email protected]", | ||
password : "1234567" | ||
}); | ||
|
||
const userData = { | ||
name: "testing", | ||
username: "yvan", | ||
email : "[email protected]", | ||
password : "1234567" | ||
}; | ||
|
||
const response = await request(app) | ||
.post('/api/v1/users/register') | ||
.send(userData); | ||
|
||
expect(response.status).toBe(400); | ||
}, 20000); | ||
test('should return 409 when registering with an existing email', async () => { await User.create({ | ||
name: 'yvanna', | ||
username: 'testuser', | ||
email: '[email protected]', | ||
password: 'test1234', | ||
}); | ||
|
||
|
||
const userData = { | ||
name: 'yvanna', | ||
username: 'testuser', | ||
email: '[email protected]', | ||
password: 'test1234', | ||
}; | ||
|
||
const response = await request(app) | ||
.post('/api/v1/users') | ||
.send(userData); | ||
expect(response.status).toBe(409); }, 20000); | ||
|
||
test('should return 500 when registering with an invalid credential', async () => { | ||
const userData = { | ||
email: '[email protected]', | ||
name: '', | ||
username: 'existinguser', | ||
}; | ||
|
||
const response = await request(app) | ||
.post('/api/v1/users/register') | ||
.send(userData); | ||
|
||
expect(response.status).toBe(500); | ||
}, 20000); | ||
}); | ||
test('should return 500 when registering with an invalid credential', async () => { | ||
const userData = { | ||
email: '[email protected]', name: "", username: 'existinguser', }; | ||
const response = await request(app) | ||
.post('/api/v1/users') | ||
.send(userData); | ||
|
||
expect(response.status).toBe(500); }, 20000); }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,11 @@ | ||
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ | ||
module.exports = { | ||
preset: "ts-jest", | ||
testEnvironment: "node", | ||
testMatch: ["**/**/*.test.ts"], | ||
verbose: true, | ||
forceExit: true, | ||
clearMocks: true, | ||
resetMocks: true, | ||
restoreMocks: true, | ||
}; | ||
preset: "ts-jest", | ||
testEnvironment: "node", | ||
testMatch: ["**/**/*.test.ts"], | ||
verbose: true, | ||
forceExit: true, | ||
clearMocks: true, | ||
resetMocks: true, | ||
restoreMocks: true, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.