Skip to content

Commit b0ce374

Browse files
committed
finished notes service tests
1 parent e002159 commit b0ce374

29 files changed

+519
-338
lines changed

.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/node_modules
22
.DS_store
3-
app-schema.png
3+
app-schema.png
4+
/coverage

README.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white)
66
![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge&logo=redis&logoColor=white)
77

8-
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
8+
![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge&logo=jest&logoColor=white)
99
![Postman](https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=white)
1010
![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge&logo=swagger&logoColor=white)
11+
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
1112
![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge&logo=githubactions&logoColor=white)
1213
### REST API and *Clean Architecture* boilerplate/template written in `Node.js` and `Fastify`
13-
This is *notion-like* note application backend and *Clean Architecture boilerplate* with registration, authorization, collaborating, etc. You can create note, add tags to it and filter your notes, add and remove collaborators, customize your profile. More about functional you can read [here]()
14+
This is *notion-like* note application backend and *Clean Architecture boilerplate* with registration, authorization, collaborating, etc. You can create note, add tags to it and filter your notes, add and remove collaborators, customize your profile.
1415

1516
### **Features**
1617
+ User registration and authorization by `JWT`
@@ -21,8 +22,6 @@
2122
+ Receiving notes with pagination, update date sorting, tags filtering
2223
+ Adding and removing collaborators
2324

24-
### **Dependency injection diagram**
25-
<img src="app-schema.png">
2625

2726

2827

@@ -40,6 +39,14 @@ cd NodeNotes
4039
docker compose up --build
4140
```
4241

42+
## **`Jest` unit tests**
43+
- App covered with `Jest` unit tests
44+
- Coverage `85%` (checkout `coverage` folder)
45+
46+
To run all testsheets enter:
47+
```
48+
npm test
49+
```
4350

4451
## **`pgAdmin` panel**
4552

@@ -63,4 +70,4 @@ docker inspect <copied container id>
6370
<img src="screenshot.png">
6471

6572
---
66-
### Everything, including `Postman` tests, `GitHub ci/cd`, `Docker compose` and API itself was created and written by [LCcodder](https://github.com/LCcodder)
73+
### Everything, including `Postman` tests, unit tests, `GitHub ci/cd`, `Docker compose` and API itself was created and written by [LCcodder](https://github.com/LCcodder)

app-schema.png

-44.5 KB
Binary file not shown.

coverage/clover.xml

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<coverage generated="1731938027291" clover="3.2.0">
3-
<project timestamp="1731938027291" name="All files">
4-
<metrics statements="212" coveredstatements="154" conditionals="73" coveredconditionals="44" methods="38" coveredmethods="28" elements="323" coveredelements="226" complexity="0" loc="212" ncloc="212" packages="9" files="12" classes="12"/>
2+
<coverage generated="1732035382338" clover="3.2.0">
3+
<project timestamp="1732035382338" name="All files">
4+
<metrics statements="212" coveredstatements="186" conditionals="73" coveredconditionals="57" methods="38" coveredmethods="32" elements="323" coveredelements="275" complexity="0" loc="212" ncloc="212" packages="9" files="12" classes="12"/>
55
<package name="auth.jwt">
66
<metrics statements="4" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
7-
<file name="TokenGenerator.ts" path="C:\Projects\NodeNotes\source\api\v1\auth\jwt\TokenGenerator.ts">
7+
<file name="TokenGenerator.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/auth/jwt/TokenGenerator.ts">
88
<metrics statements="4" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
99
<line num="1" count="2" type="stmt"/>
1010
<line num="2" count="2" type="stmt"/>
@@ -14,7 +14,7 @@
1414
</package>
1515
<package name="services.auth">
1616
<metrics statements="42" coveredstatements="36" conditionals="10" coveredconditionals="7" methods="4" coveredmethods="3"/>
17-
<file name="AuthService.ts" path="C:\Projects\NodeNotes\source\api\v1\services\auth\AuthService.ts">
17+
<file name="AuthService.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/services/auth/AuthService.ts">
1818
<metrics statements="42" coveredstatements="36" conditionals="10" coveredconditionals="7" methods="4" coveredmethods="3"/>
1919
<line num="1" count="1" type="stmt"/>
2020
<line num="2" count="1" type="stmt"/>
@@ -61,9 +61,9 @@
6161
</file>
6262
</package>
6363
<package name="services.notes">
64-
<metrics statements="113" coveredstatements="67" conditionals="34" coveredconditionals="17" methods="19" coveredmethods="13"/>
65-
<file name="NotesService.ts" path="C:\Projects\NodeNotes\source\api\v1\services\notes\NotesService.ts">
66-
<metrics statements="113" coveredstatements="67" conditionals="34" coveredconditionals="17" methods="19" coveredmethods="13"/>
64+
<metrics statements="113" coveredstatements="99" conditionals="34" coveredconditionals="28" methods="19" coveredmethods="17"/>
65+
<file name="NotesService.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/services/notes/NotesService.ts">
66+
<metrics statements="113" coveredstatements="99" conditionals="34" coveredconditionals="28" methods="19" coveredmethods="17"/>
6767
<line num="14" count="1" type="stmt"/>
6868
<line num="16" count="1" type="stmt"/>
6969
<line num="17" count="1" type="stmt"/>
@@ -75,8 +75,8 @@
7575
<line num="26" count="1" type="stmt"/>
7676
<line num="27" count="16" type="stmt"/>
7777
<line num="29" count="1" type="stmt"/>
78-
<line num="33" count="6" type="stmt"/>
79-
<line num="37" count="11" type="stmt"/>
78+
<line num="33" count="10" type="stmt"/>
79+
<line num="37" count="21" type="stmt"/>
8080
<line num="41" count="9" type="cond" truecount="2" falsecount="0"/>
8181
<line num="45" count="1" type="stmt"/>
8282
<line num="46" count="1" type="stmt"/>
@@ -118,10 +118,10 @@
118118
<line num="142" count="1" type="stmt"/>
119119
<line num="143" count="4" type="stmt"/>
120120
<line num="152" count="4" type="cond" truecount="3" falsecount="0"/>
121-
<line num="153" count="3" type="stmt"/>
122-
<line num="156" count="1" type="stmt"/>
123-
<line num="157" count="1" type="stmt"/>
124-
<line num="159" count="1" type="stmt"/>
121+
<line num="153" count="2" type="stmt"/>
122+
<line num="156" count="2" type="stmt"/>
123+
<line num="157" count="2" type="stmt"/>
124+
<line num="159" count="2" type="stmt"/>
125125
<line num="163" count="1" type="stmt"/>
126126
<line num="167" count="0" type="stmt"/>
127127
<line num="181" count="0" type="stmt"/>
@@ -139,49 +139,49 @@
139139
<line num="224" count="1" type="stmt"/>
140140
<line num="225" count="4" type="stmt"/>
141141
<line num="234" count="4" type="cond" truecount="3" falsecount="0"/>
142-
<line num="235" count="3" type="stmt"/>
143-
<line num="238" count="1" type="stmt"/>
144-
<line num="239" count="0" type="stmt"/>
145-
<line num="241" count="1" type="stmt"/>
142+
<line num="235" count="2" type="stmt"/>
143+
<line num="238" count="2" type="stmt"/>
144+
<line num="239" count="2" type="stmt"/>
145+
<line num="241" count="2" type="stmt"/>
146146
<line num="245" count="1" type="stmt"/>
147-
<line num="250" count="0" type="stmt"/>
148-
<line num="255" count="0" type="cond" truecount="0" falsecount="1"/>
149-
<line num="256" count="0" type="stmt"/>
150-
<line num="258" count="0" type="cond" truecount="0" falsecount="1"/>
151-
<line num="259" count="0" type="stmt"/>
152-
<line num="263" count="0" type="cond" truecount="0" falsecount="1"/>
153-
<line num="264" count="0" type="stmt"/>
154-
<line num="267" count="0" type="stmt"/>
155-
<line num="271" count="0" type="cond" truecount="0" falsecount="1"/>
156-
<line num="272" count="0" type="cond" truecount="0" falsecount="1"/>
157-
<line num="273" count="0" type="stmt"/>
147+
<line num="250" count="7" type="stmt"/>
148+
<line num="255" count="7" type="cond" truecount="1" falsecount="0"/>
149+
<line num="256" count="1" type="stmt"/>
150+
<line num="258" count="6" type="cond" truecount="1" falsecount="0"/>
151+
<line num="259" count="1" type="stmt"/>
152+
<line num="263" count="5" type="cond" truecount="1" falsecount="0"/>
153+
<line num="264" count="1" type="stmt"/>
154+
<line num="267" count="4" type="stmt"/>
155+
<line num="271" count="4" type="cond" truecount="1" falsecount="0"/>
156+
<line num="272" count="1" type="cond" truecount="1" falsecount="0"/>
157+
<line num="273" count="1" type="stmt"/>
158158
<line num="275" count="0" type="stmt"/>
159-
<line num="278" count="0" type="cond" truecount="0" falsecount="1"/>
160-
<line num="279" count="0" type="stmt"/>
161-
<line num="282" count="0" type="cond" truecount="0" falsecount="1"/>
162-
<line num="283" count="0" type="stmt"/>
163-
<line num="286" count="0" type="stmt"/>
164-
<line num="287" count="0" type="stmt"/>
165-
<line num="289" count="0" type="stmt"/>
159+
<line num="278" count="3" type="cond" truecount="1" falsecount="0"/>
160+
<line num="279" count="1" type="stmt"/>
161+
<line num="282" count="2" type="cond" truecount="1" falsecount="0"/>
162+
<line num="283" count="1" type="stmt"/>
163+
<line num="286" count="1" type="stmt"/>
164+
<line num="287" count="1" type="stmt"/>
165+
<line num="289" count="1" type="stmt"/>
166166
<line num="293" count="1" type="stmt"/>
167-
<line num="298" count="0" type="stmt"/>
168-
<line num="303" count="0" type="cond" truecount="0" falsecount="1"/>
169-
<line num="304" count="0" type="stmt"/>
170-
<line num="306" count="0" type="cond" truecount="0" falsecount="1"/>
171-
<line num="307" count="0" type="stmt"/>
172-
<line num="311" count="0" type="cond" truecount="0" falsecount="1"/>
173-
<line num="312" count="0" type="stmt"/>
174-
<line num="315" count="0" type="cond" truecount="0" falsecount="1"/>
175-
<line num="316" count="0" type="stmt"/>
176-
<line num="320" count="0" type="stmt"/>
177-
<line num="321" count="0" type="stmt"/>
178-
<line num="323" count="0" type="stmt"/>
179-
<line num="325" count="0" type="stmt"/>
167+
<line num="298" count="5" type="stmt"/>
168+
<line num="303" count="5" type="cond" truecount="1" falsecount="0"/>
169+
<line num="304" count="1" type="stmt"/>
170+
<line num="306" count="4" type="cond" truecount="1" falsecount="0"/>
171+
<line num="307" count="1" type="stmt"/>
172+
<line num="311" count="3" type="cond" truecount="1" falsecount="0"/>
173+
<line num="312" count="1" type="stmt"/>
174+
<line num="315" count="2" type="cond" truecount="1" falsecount="0"/>
175+
<line num="316" count="1" type="stmt"/>
176+
<line num="320" count="1" type="stmt"/>
177+
<line num="321" count="1" type="stmt"/>
178+
<line num="323" count="1" type="stmt"/>
179+
<line num="325" count="1" type="stmt"/>
180180
</file>
181181
</package>
182182
<package name="services.users">
183183
<metrics statements="31" coveredstatements="27" conditionals="9" coveredconditionals="7" methods="6" coveredmethods="5"/>
184-
<file name="UsersService.ts" path="C:\Projects\NodeNotes\source\api\v1\services\users\UsersService.ts">
184+
<file name="UsersService.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/services/users/UsersService.ts">
185185
<metrics statements="31" coveredstatements="27" conditionals="9" coveredconditionals="7" methods="6" coveredmethods="5"/>
186186
<line num="3" count="1" type="stmt"/>
187187
<line num="4" count="1" type="stmt"/>
@@ -217,9 +217,9 @@
217217
</file>
218218
</package>
219219
<package name="shared.config">
220-
<metrics statements="4" coveredstatements="2" conditionals="18" coveredconditionals="11" methods="2" coveredmethods="0"/>
221-
<file name="ServerConfiguration.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\config\ServerConfiguration.ts">
222-
<metrics statements="4" coveredstatements="2" conditionals="18" coveredconditionals="11" methods="2" coveredmethods="0"/>
220+
<metrics statements="4" coveredstatements="2" conditionals="18" coveredconditionals="13" methods="2" coveredmethods="0"/>
221+
<file name="ServerConfiguration.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/config/ServerConfiguration.ts">
222+
<metrics statements="4" coveredstatements="2" conditionals="18" coveredconditionals="13" methods="2" coveredmethods="0"/>
223223
<line num="2" count="2" type="stmt"/>
224224
<line num="4" count="2" type="stmt"/>
225225
<line num="14" count="0" type="stmt"/>
@@ -228,53 +228,53 @@
228228
</package>
229229
<package name="shared.decorators">
230230
<metrics statements="8" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
231-
<file name="WithExceptionCatch.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\decorators\WithExceptionCatch.ts">
231+
<file name="WithExceptionCatch.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/decorators/WithExceptionCatch.ts">
232232
<metrics statements="8" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
233233
<line num="1" count="4" type="stmt"/>
234234
<line num="2" count="18" type="stmt"/>
235235
<line num="4" count="18" type="stmt"/>
236-
<line num="5" count="36" type="stmt"/>
237-
<line num="6" count="36" type="stmt"/>
238-
<line num="8" count="2" type="stmt"/>
239-
<line num="9" count="2" type="stmt"/>
236+
<line num="5" count="48" type="stmt"/>
237+
<line num="6" count="48" type="stmt"/>
238+
<line num="8" count="3" type="stmt"/>
239+
<line num="9" count="3" type="stmt"/>
240240
<line num="16" count="18" type="stmt"/>
241241
</file>
242242
</package>
243243
<package name="shared.exceptions">
244244
<metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
245-
<file name="AuthExceptions.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\exceptions\AuthExceptions.ts">
245+
<file name="AuthExceptions.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/exceptions/AuthExceptions.ts">
246246
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
247247
<line num="3" count="1" type="stmt"/>
248248
</file>
249-
<file name="NoteExceptions.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\exceptions\NoteExceptions.ts">
249+
<file name="NoteExceptions.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/exceptions/NoteExceptions.ts">
250250
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
251251
<line num="3" count="1" type="stmt"/>
252252
</file>
253-
<file name="UserExceptions.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\exceptions\UserExceptions.ts">
253+
<file name="UserExceptions.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/exceptions/UserExceptions.ts">
254254
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
255255
<line num="3" count="2" type="stmt"/>
256256
</file>
257257
</package>
258258
<package name="shared.utils.common">
259259
<metrics statements="5" coveredstatements="5" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
260-
<file name="TokenExtractor.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\utils\common\TokenExtractor.ts">
260+
<file name="TokenExtractor.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/utils/common/TokenExtractor.ts">
261261
<metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
262262
<line num="3" count="1" type="stmt"/>
263263
<line num="4" count="3" type="stmt"/>
264264
</file>
265-
<file name="TransformNoteCollaborators.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\utils\common\TransformNoteCollaborators.ts">
265+
<file name="TransformNoteCollaborators.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/utils/common/TransformNoteCollaborators.ts">
266266
<metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
267267
<line num="3" count="2" type="stmt"/>
268-
<line num="4" count="5" type="stmt"/>
268+
<line num="4" count="6" type="stmt"/>
269269
<line num="6" count="5" type="stmt"/>
270270
</file>
271271
</package>
272272
<package name="shared.utils.guards">
273273
<metrics statements="2" coveredstatements="2" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
274-
<file name="ExceptionGuard.ts" path="C:\Projects\NodeNotes\source\api\v1\shared\utils\guards\ExceptionGuard.ts">
274+
<file name="ExceptionGuard.ts" path="/Users/mikhailstepanyan/Desktop/Projects/fastify-crud/source/api/v1/shared/utils/guards/ExceptionGuard.ts">
275275
<metrics statements="2" coveredstatements="2" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
276276
<line num="7" count="2" type="stmt"/>
277-
<line num="8" count="13" type="cond" truecount="2" falsecount="0"/>
277+
<line num="8" count="17" type="cond" truecount="2" falsecount="0"/>
278278
</file>
279279
</package>
280280
</project>

0 commit comments

Comments
 (0)