From 84689fd743273b58cd97d71ecce4e6a7aa29ba64 Mon Sep 17 00:00:00 2001 From: Nicolas Reis Date: Thu, 20 Nov 2025 16:22:48 -0300 Subject: [PATCH 01/53] config: novo teste --- .github/workflows/cicd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 82c4d00..73c4b41 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -35,7 +35,7 @@ jobs: - name: 5. Executar Análise de Qualidade (QLTY) # Usa a Action oficial da Qlty para análise e envio dos dados - uses: qltysh/qlty-action + uses: qltysh/qlty-action/coverage@v2 with: token: ${{ secrets.QLTY_TOKEN }} - path: . \ No newline at end of file + files: coverage/lcov.info \ No newline at end of file From 414919008a027dcbe1b2d89ccc675520e4644b96 Mon Sep 17 00:00:00 2001 From: Nicolas Reis Date: Thu, 20 Nov 2025 16:28:57 -0300 Subject: [PATCH 02/53] =?UTF-8?q?config:=20atualiza=C3=A7=C3=A3o=20de=20pi?= =?UTF-8?q?peline=20e=20novo=20teste.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cicd.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 73c4b41..1af49d1 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -27,15 +27,17 @@ jobs: node-version: '18' cache: 'npm' - - name: 3. Instalar dependências do projeto + - name: 3. Instalar dependências do backend run: npm install + working-directory: ./backend - name: 4. Rodar Testes e Gerar Cobertura (lcov) - run: npm test -- --coverage + run: npm run test:coverage + working-directory: ./backend - name: 5. Executar Análise de Qualidade (QLTY) # Usa a Action oficial da Qlty para análise e envio dos dados uses: qltysh/qlty-action/coverage@v2 with: token: ${{ secrets.QLTY_TOKEN }} - files: coverage/lcov.info \ No newline at end of file + files: backend/coverage/lcov.info \ No newline at end of file From 27f1b23a18f5c5cff876e4436d39b42a8682b3d6 Mon Sep 17 00:00:00 2001 From: Nicolas Reis Date: Thu, 20 Nov 2025 16:35:51 -0300 Subject: [PATCH 03/53] config: desconsiderando testes para testar a pipeline. --- backend/src/coverage/clover.xml | 294 +++++------ backend/src/coverage/coverage-final.json | 19 +- backend/src/coverage/lcov-report/index.html | 84 ++-- .../src/coverage/lcov-report/src/app.ts.html | 22 +- .../src/business/businessLogicAuth.ts.html | 101 ++-- .../business/businessLogicCommunity.ts.html | 2 +- .../src/business/businessLogicProfile.ts.html | 10 +- .../src/business/businessLogicProject.ts.html | 145 +++++- .../lcov-report/src/business/index.html | 54 +-- .../lcov-report/src/controller/index.html | 34 +- .../src/controller/requestController.ts.html | 183 +++++-- .../src/coverage/lcov-report/src/index.html | 42 +- .../lcov-report/src/models/User.ts.html | 7 +- .../lcov-report/src/models/index.html | 53 +- .../coverage/lcov-report/src/routes.ts.html | 281 +++++++++-- .../coverage/lcov-report/src/utils/index.html | 2 +- .../src/utils/validationUser.ts.html | 10 +- backend/src/coverage/lcov.info | 456 ++++++++++-------- 18 files changed, 1134 insertions(+), 665 deletions(-) diff --git a/backend/src/coverage/clover.xml b/backend/src/coverage/clover.xml index 2910b9b..726481d 100644 --- a/backend/src/coverage/clover.xml +++ b/backend/src/coverage/clover.xml @@ -1,86 +1,113 @@ - - - + + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89,87 +116,84 @@ - + - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + + - - - - + + + + diff --git a/backend/src/coverage/coverage-final.json b/backend/src/coverage/coverage-final.json index 2da839d..c9566d5 100644 --- a/backend/src/coverage/coverage-final.json +++ b/backend/src/coverage/coverage-final.json @@ -1,13 +1,10 @@ -{"/home/nicolas/Área de Trabalho/CTable/backend/src/app.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/app.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"3":{"start":{"line":9,"column":8},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":8},"end":{"line":10,"column":27}},"5":{"start":{"line":11,"column":8},"end":{"line":11,"column":22}},"6":{"start":{"line":15,"column":8},"end":{"line":15,"column":40}},"7":{"start":{"line":16,"column":8},"end":{"line":16,"column":32}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":32}},"9":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"loc":{"start":{"line":8,"column":4},"end":{"line":12,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":12},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":23},"end":{"line":17,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":12},"end":{"line":19,"column":18}},"loc":{"start":{"line":19,"column":18},"end":{"line":21,"column":5}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{"0":1,"1":1,"2":1},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/routes.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/routes.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":63}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":31}},"4":{"start":{"line":8,"column":0},"end":{"line":33,"column":3}},"5":{"start":{"line":9,"column":2},"end":{"line":32,"column":3}},"6":{"start":{"line":10,"column":4},"end":{"line":10,"column":67}},"7":{"start":{"line":11,"column":4},"end":{"line":11,"column":53}},"8":{"start":{"line":12,"column":4},"end":{"line":12,"column":85}},"9":{"start":{"line":15,"column":4},"end":{"line":21,"column":5}},"10":{"start":{"line":16,"column":6},"end":{"line":16,"column":70}},"11":{"start":{"line":17,"column":6},"end":{"line":20,"column":9}},"12":{"start":{"line":23,"column":4},"end":{"line":28,"column":5}},"13":{"start":{"line":24,"column":6},"end":{"line":27,"column":7}},"14":{"start":{"line":25,"column":10},"end":{"line":25,"column":61}},"15":{"start":{"line":26,"column":10},"end":{"line":26,"column":71}},"16":{"start":{"line":30,"column":4},"end":{"line":30,"column":54}},"17":{"start":{"line":31,"column":4},"end":{"line":31,"column":79}},"18":{"start":{"line":36,"column":0},"end":{"line":56,"column":3}},"19":{"start":{"line":37,"column":2},"end":{"line":55,"column":3}},"20":{"start":{"line":39,"column":28},"end":{"line":39,"column":75}},"21":{"start":{"line":41,"column":4},"end":{"line":44,"column":7}},"22":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"23":{"start":{"line":49,"column":6},"end":{"line":52,"column":7}},"24":{"start":{"line":50,"column":8},"end":{"line":50,"column":49}},"25":{"start":{"line":51,"column":8},"end":{"line":51,"column":69}},"26":{"start":{"line":59,"column":0},"end":{"line":67,"column":3}},"27":{"start":{"line":60,"column":2},"end":{"line":66,"column":3}},"28":{"start":{"line":62,"column":4},"end":{"line":62,"column":50}},"29":{"start":{"line":70,"column":0},"end":{"line":70,"column":22}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":29},"end":{"line":8,"column":34}},"loc":{"start":{"line":8,"column":57},"end":{"line":33,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":36,"column":26},"end":{"line":36,"column":31}},"loc":{"start":{"line":36,"column":53},"end":{"line":56,"column":1}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":59,"column":31},"end":{"line":59,"column":36}},"loc":{"start":{"line":59,"column":58},"end":{"line":67,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":21,"column":5}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":23,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":24,"column":6},"end":{"line":27,"column":7}},"type":"if","locations":[{"start":{"line":24,"column":6},"end":{"line":27,"column":7}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":49,"column":6},"end":{"line":52,"column":7}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":52,"column":7}},{"start":{},"end":{}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":5,"6":5,"7":5,"8":4,"9":1,"10":0,"11":0,"12":1,"13":1,"14":1,"15":1,"16":0,"17":0,"18":1,"19":2,"20":2,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":0,"28":0,"29":1},"f":{"0":5,"1":2,"2":0},"b":{"0":[0,1],"1":[1,0],"2":[1,0],"3":[1,0],"4":[1,0]}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicAuth.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicAuth.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":55}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"3":{"start":{"line":12,"column":8},"end":{"line":12,"column":27}},"4":{"start":{"line":14,"column":29},"end":{"line":17,"column":24}},"5":{"start":{"line":19,"column":8},"end":{"line":26,"column":9}},"6":{"start":{"line":20,"column":12},"end":{"line":22,"column":13}},"7":{"start":{"line":21,"column":16},"end":{"line":21,"column":65}},"8":{"start":{"line":23,"column":12},"end":{"line":25,"column":13}},"9":{"start":{"line":24,"column":16},"end":{"line":24,"column":63}},"10":{"start":{"line":28,"column":21},"end":{"line":28,"column":45}},"11":{"start":{"line":30,"column":26},"end":{"line":30,"column":61}},"12":{"start":{"line":32,"column":76},"end":{"line":32,"column":80}},"13":{"start":{"line":35,"column":8},"end":{"line":42,"column":11}},"14":{"start":{"line":46,"column":8},"end":{"line":71,"column":9}},"15":{"start":{"line":47,"column":25},"end":{"line":49,"column":28}},"16":{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},"17":{"start":{"line":52,"column":16},"end":{"line":52,"column":64}},"18":{"start":{"line":55,"column":36},"end":{"line":57,"column":null}},"19":{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},"20":{"start":{"line":61,"column":16},"end":{"line":61,"column":64}},"21":{"start":{"line":64,"column":47},"end":{"line":64,"column":51}},"22":{"start":{"line":66,"column":12},"end":{"line":66,"column":28}},"23":{"start":{"line":69,"column":12},"end":{"line":69,"column":64}},"24":{"start":{"line":70,"column":12},"end":{"line":70,"column":24}},"25":{"start":{"line":77,"column":0},"end":{"line":77,"column":39}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":9}},"loc":{"start":{"line":11,"column":32},"end":{"line":43,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":9}},"loc":{"start":{"line":45,"column":35},"end":{"line":72,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":8},"end":{"line":26,"column":9}},"type":"if","locations":[{"start":{"line":19,"column":8},"end":{"line":26,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":20,"column":12},"end":{"line":22,"column":13}},"type":"if","locations":[{"start":{"line":20,"column":12},"end":{"line":22,"column":13}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":23,"column":12},"end":{"line":25,"column":13}},"type":"if","locations":[{"start":{"line":23,"column":12},"end":{"line":25,"column":13}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},"type":"if","locations":[{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},"type":"if","locations":[{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},{"start":{},"end":{}}]}},"s":{"0":1,"1":1,"2":1,"3":5,"4":5,"5":5,"6":1,"7":1,"8":0,"9":0,"10":4,"11":4,"12":4,"13":4,"14":2,"15":2,"16":2,"17":0,"18":2,"19":2,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"f":{"0":5,"1":2},"b":{"0":[1,4],"1":[1,0],"2":[0,0],"3":[0,2],"4":[1,1]}} +{"/home/nicolas/Área de Trabalho/CTable/backend/src/app.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/app.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"3":{"start":{"line":9,"column":8},"end":{"line":9,"column":32}},"4":{"start":{"line":10,"column":8},"end":{"line":10,"column":27}},"5":{"start":{"line":11,"column":8},"end":{"line":11,"column":22}},"6":{"start":{"line":15,"column":8},"end":{"line":15,"column":40}},"7":{"start":{"line":16,"column":8},"end":{"line":16,"column":32}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":32}},"9":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"loc":{"start":{"line":8,"column":4},"end":{"line":12,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":12},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":23},"end":{"line":17,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":12},"end":{"line":19,"column":18}},"loc":{"start":{"line":19,"column":18},"end":{"line":21,"column":5}}}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2},"f":{"0":2,"1":2,"2":2},"b":{}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/routes.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/routes.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":63}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":31}},"5":{"start":{"line":9,"column":0},"end":{"line":40,"column":3}},"6":{"start":{"line":10,"column":2},"end":{"line":39,"column":3}},"7":{"start":{"line":12,"column":4},"end":{"line":12,"column":67}},"8":{"start":{"line":13,"column":26},"end":{"line":13,"column":74}},"9":{"start":{"line":14,"column":4},"end":{"line":18,"column":7}},"10":{"start":{"line":22,"column":4},"end":{"line":28,"column":5}},"11":{"start":{"line":23,"column":6},"end":{"line":23,"column":70}},"12":{"start":{"line":24,"column":6},"end":{"line":27,"column":9}},"13":{"start":{"line":30,"column":4},"end":{"line":35,"column":5}},"14":{"start":{"line":31,"column":6},"end":{"line":34,"column":7}},"15":{"start":{"line":32,"column":10},"end":{"line":32,"column":61}},"16":{"start":{"line":33,"column":10},"end":{"line":33,"column":71}},"17":{"start":{"line":37,"column":4},"end":{"line":37,"column":54}},"18":{"start":{"line":38,"column":4},"end":{"line":38,"column":79}},"19":{"start":{"line":43,"column":0},"end":{"line":64,"column":3}},"20":{"start":{"line":44,"column":2},"end":{"line":63,"column":3}},"21":{"start":{"line":46,"column":28},"end":{"line":46,"column":75}},"22":{"start":{"line":48,"column":4},"end":{"line":52,"column":7}},"23":{"start":{"line":56,"column":4},"end":{"line":61,"column":5}},"24":{"start":{"line":57,"column":6},"end":{"line":60,"column":7}},"25":{"start":{"line":58,"column":8},"end":{"line":58,"column":49}},"26":{"start":{"line":59,"column":8},"end":{"line":59,"column":69}},"27":{"start":{"line":67,"column":0},"end":{"line":98,"column":3}},"28":{"start":{"line":68,"column":2},"end":{"line":97,"column":3}},"29":{"start":{"line":70,"column":24},"end":{"line":70,"column":36}},"30":{"start":{"line":72,"column":22},"end":{"line":72,"column":37}},"31":{"start":{"line":74,"column":23},"end":{"line":74,"column":84}},"32":{"start":{"line":76,"column":4},"end":{"line":79,"column":7}},"33":{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},"34":{"start":{"line":84,"column":6},"end":{"line":87,"column":9}},"35":{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},"36":{"start":{"line":91,"column":6},"end":{"line":91,"column":67}},"37":{"start":{"line":94,"column":4},"end":{"line":94,"column":54}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":79}},"39":{"start":{"line":102,"column":0},"end":{"line":113,"column":null}},"40":{"start":{"line":103,"column":2},"end":{"line":112,"column":3}},"41":{"start":{"line":105,"column":17},"end":{"line":105,"column":54}},"42":{"start":{"line":107,"column":4},"end":{"line":107,"column":43}},"43":{"start":{"line":110,"column":4},"end":{"line":110,"column":23}},"44":{"start":{"line":111,"column":4},"end":{"line":111,"column":87}},"45":{"start":{"line":116,"column":0},"end":{"line":135,"column":null}},"46":{"start":{"line":117,"column":4},"end":{"line":134,"column":5}},"47":{"start":{"line":119,"column":24},"end":{"line":119,"column":39}},"48":{"start":{"line":120,"column":23},"end":{"line":120,"column":73}},"49":{"start":{"line":121,"column":6},"end":{"line":123,"column":null}},"50":{"start":{"line":127,"column":6},"end":{"line":129,"column":7}},"51":{"start":{"line":128,"column":8},"end":{"line":128,"column":69}},"52":{"start":{"line":131,"column":6},"end":{"line":131,"column":63}},"53":{"start":{"line":132,"column":6},"end":{"line":132,"column":81}},"54":{"start":{"line":137,"column":0},"end":{"line":137,"column":22}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":29},"end":{"line":9,"column":34}},"loc":{"start":{"line":9,"column":57},"end":{"line":40,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":43,"column":26},"end":{"line":43,"column":31}},"loc":{"start":{"line":43,"column":53},"end":{"line":64,"column":1}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":67,"column":53},"end":{"line":67,"column":58}},"loc":{"start":{"line":67,"column":80},"end":{"line":98,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":102,"column":28},"end":{"line":102,"column":33}},"loc":{"start":{"line":102,"column":55},"end":{"line":113,"column":1}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":116,"column":49},"end":{"line":116,"column":54}},"loc":{"start":{"line":116,"column":76},"end":{"line":135,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":30,"column":4},"end":{"line":35,"column":5}},"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":35,"column":5}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":31,"column":6},"end":{"line":34,"column":7}},"type":"if","locations":[{"start":{"line":31,"column":6},"end":{"line":34,"column":7}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":56,"column":4},"end":{"line":61,"column":5}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":61,"column":5}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":57,"column":6},"end":{"line":60,"column":7}},"type":"if","locations":[{"start":{"line":57,"column":6},"end":{"line":60,"column":7}},{"start":{},"end":{}}]},"5":{"loc":{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},"type":"if","locations":[{"start":{"line":90,"column":4},"end":{"line":92,"column":5}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":127,"column":6},"end":{"line":129,"column":7}},"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":129,"column":7}},{"start":{},"end":{}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":11,"7":11,"8":11,"9":6,"10":5,"11":3,"12":3,"13":2,"14":2,"15":2,"16":2,"17":0,"18":0,"19":2,"20":3,"21":3,"22":1,"23":2,"24":2,"25":2,"26":2,"27":2,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":2,"40":0,"41":0,"42":0,"43":0,"44":0,"45":2,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":2},"f":{"0":11,"1":3,"2":0,"3":0,"4":0},"b":{"0":[3,2],"1":[2,0],"2":[2,0],"3":[2,0],"4":[2,0],"5":[0,0],"6":[0,0],"7":[0,0]}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicAuth.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicAuth.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":55}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"3":{"start":{"line":13,"column":8},"end":{"line":13,"column":27}},"4":{"start":{"line":15,"column":29},"end":{"line":18,"column":24}},"5":{"start":{"line":20,"column":8},"end":{"line":27,"column":9}},"6":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"7":{"start":{"line":22,"column":16},"end":{"line":22,"column":65}},"8":{"start":{"line":24,"column":12},"end":{"line":26,"column":13}},"9":{"start":{"line":25,"column":16},"end":{"line":25,"column":63}},"10":{"start":{"line":29,"column":21},"end":{"line":29,"column":45}},"11":{"start":{"line":31,"column":26},"end":{"line":31,"column":61}},"12":{"start":{"line":33,"column":76},"end":{"line":33,"column":80}},"13":{"start":{"line":36,"column":8},"end":{"line":43,"column":11}},"14":{"start":{"line":45,"column":21},"end":{"line":47,"column":28}},"15":{"start":{"line":49,"column":45},"end":{"line":49,"column":49}},"16":{"start":{"line":51,"column":8},"end":{"line":51,"column":24}},"17":{"start":{"line":56,"column":8},"end":{"line":82,"column":9}},"18":{"start":{"line":57,"column":25},"end":{"line":59,"column":28}},"19":{"start":{"line":61,"column":12},"end":{"line":63,"column":13}},"20":{"start":{"line":62,"column":16},"end":{"line":62,"column":64}},"21":{"start":{"line":65,"column":36},"end":{"line":67,"column":null}},"22":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"23":{"start":{"line":71,"column":16},"end":{"line":71,"column":64}},"24":{"start":{"line":74,"column":50},"end":{"line":74,"column":54}},"25":{"start":{"line":76,"column":12},"end":{"line":76,"column":28}},"26":{"start":{"line":80,"column":12},"end":{"line":80,"column":24}},"27":{"start":{"line":88,"column":0},"end":{"line":88,"column":39}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":9}},"loc":{"start":{"line":11,"column":32},"end":{"line":53,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":9}},"loc":{"start":{"line":55,"column":35},"end":{"line":83,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":8},"end":{"line":27,"column":9}},"type":"if","locations":[{"start":{"line":20,"column":8},"end":{"line":27,"column":9}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"type":"if","locations":[{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":24,"column":12},"end":{"line":26,"column":13}},"type":"if","locations":[{"start":{"line":24,"column":12},"end":{"line":26,"column":13}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":61,"column":12},"end":{"line":63,"column":13}},"type":"if","locations":[{"start":{"line":61,"column":12},"end":{"line":63,"column":13}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"type":"if","locations":[{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},{"start":{},"end":{}}]}},"s":{"0":2,"1":2,"2":2,"3":11,"4":8,"5":8,"6":2,"7":1,"8":1,"9":1,"10":6,"11":6,"12":6,"13":6,"14":6,"15":6,"16":6,"17":3,"18":3,"19":3,"20":1,"21":2,"22":2,"23":1,"24":1,"25":1,"26":2,"27":2},"f":{"0":11,"1":3},"b":{"0":[2,6],"1":[1,1],"2":[1,0],"3":[1,2],"4":[1,1]}} ,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicCommunity.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicCommunity.ts","statementMap":{"0":{"start":{"line":9,"column":8},"end":{"line":9,"column":67}},"1":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":9}},"loc":{"start":{"line":8,"column":42},"end":{"line":10,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":19}},"loc":{"start":{"line":12,"column":19},"end":{"line":14,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":19}},"loc":{"start":{"line":16,"column":19},"end":{"line":18,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0},"f":{"0":0,"1":0,"2":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProfile.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProfile.ts","statementMap":{"0":{"start":{"line":21,"column":0},"end":{"line":21,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":17}},"loc":{"start":{"line":10,"column":17},"end":{"line":12,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":17}},"loc":{"start":{"line":14,"column":17},"end":{"line":16,"column":5}}}},"branchMap":{},"s":{"0":0},"f":{"0":0,"1":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProject.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProject.ts","statementMap":{"0":{"start":{"line":10,"column":8},"end":{"line":10,"column":64}},"1":{"start":{"line":24,"column":0},"end":{"line":24,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":9}},"loc":{"start":{"line":9,"column":38},"end":{"line":11,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":17}},"loc":{"start":{"line":13,"column":17},"end":{"line":15,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":17}},"loc":{"start":{"line":17,"column":17},"end":{"line":19,"column":5}}}},"branchMap":{},"s":{"0":0,"1":1},"f":{"0":0,"1":0,"2":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/controller/requestController.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/controller/requestController.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":68}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"3":{"start":{"line":7,"column":21},"end":{"line":7,"column":60}},"4":{"start":{"line":12,"column":8},"end":{"line":22,"column":9}},"5":{"start":{"line":14,"column":12},"end":{"line":14,"column":64}},"6":{"start":{"line":16,"column":12},"end":{"line":16,"column":50}},"7":{"start":{"line":20,"column":12},"end":{"line":20,"column":53}},"8":{"start":{"line":21,"column":12},"end":{"line":21,"column":24}},"9":{"start":{"line":26,"column":8},"end":{"line":44,"column":9}},"10":{"start":{"line":27,"column":12},"end":{"line":27,"column":50}},"11":{"start":{"line":29,"column":29},"end":{"line":29,"column":68}},"12":{"start":{"line":31,"column":28},"end":{"line":31,"column":76}},"13":{"start":{"line":33,"column":26},"end":{"line":36,"column":null}},"14":{"start":{"line":39,"column":12},"end":{"line":39,"column":52}},"15":{"start":{"line":42,"column":12},"end":{"line":42,"column":null}},"16":{"start":{"line":43,"column":12},"end":{"line":43,"column":24}},"17":{"start":{"line":48,"column":8},"end":{"line":55,"column":9}},"18":{"start":{"line":50,"column":12},"end":{"line":50,"column":50}},"19":{"start":{"line":52,"column":12},"end":{"line":52,"column":50}},"20":{"start":{"line":54,"column":12},"end":{"line":54,"column":54}},"21":{"start":{"line":59,"column":0},"end":{"line":59,"column":39}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":9}},"loc":{"start":{"line":11,"column":35},"end":{"line":23,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":9}},"loc":{"start":{"line":25,"column":35},"end":{"line":45,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":9}},"loc":{"start":{"line":47,"column":41},"end":{"line":56,"column":5}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":5,"5":5,"6":5,"7":1,"8":1,"9":2,"10":2,"11":2,"12":1,"13":1,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":1},"f":{"0":5,"1":2,"2":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Comment.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Comment.ts","statementMap":{"0":{"start":{"line":17,"column":8},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":8},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":8},"end":{"line":19,"column":null}},"3":{"start":{"line":20,"column":8},"end":{"line":20,"column":null}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":16}},"loc":{"start":{"line":16,"column":33},"end":{"line":21,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Community.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Community.ts","statementMap":{"0":{"start":{"line":21,"column":8},"end":{"line":21,"column":null}},"1":{"start":{"line":22,"column":8},"end":{"line":22,"column":null}},"2":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"3":{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},"4":{"start":{"line":25,"column":8},"end":{"line":25,"column":null}},"5":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":16}},"loc":{"start":{"line":20,"column":35},"end":{"line":27,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{"0":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Project.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/models/Project.ts","statementMap":{"0":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"1":{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},"2":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"3":{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},"4":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":16}},"loc":{"start":{"line":22,"column":33},"end":{"line":30,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/models/User.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/models/User.ts","statementMap":{"0":{"start":{"line":25,"column":8},"end":{"line":25,"column":null}},"1":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"2":{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},"3":{"start":{"line":68,"column":8},"end":{"line":68,"column":null}},"4":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":16}},"loc":{"start":{"line":24,"column":30},"end":{"line":29,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":17}},"loc":{"start":{"line":31,"column":17},"end":{"line":33,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":35,"column":4},"end":{"line":35,"column":17}},"loc":{"start":{"line":35,"column":17},"end":{"line":37,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":17}},"loc":{"start":{"line":39,"column":17},"end":{"line":41,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":17}},"loc":{"start":{"line":43,"column":17},"end":{"line":45,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":18}},"loc":{"start":{"line":47,"column":18},"end":{"line":49,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":51,"column":4},"end":{"line":51,"column":15}},"loc":{"start":{"line":51,"column":15},"end":{"line":53,"column":5}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"loc":{"start":{"line":55,"column":17},"end":{"line":57,"column":5}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":17}},"loc":{"start":{"line":59,"column":17},"end":{"line":61,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":63,"column":4},"end":{"line":63,"column":13}},"loc":{"start":{"line":63,"column":13},"end":{"line":65,"column":5}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":67,"column":4},"end":{"line":67,"column":15}},"loc":{"start":{"line":67,"column":15},"end":{"line":69,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"b":{}} -,"/home/nicolas/Área de Trabalho/CTable/backend/src/utils/validationUser.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/utils/validationUser.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}},"2":{"start":{"line":4,"column":19},"end":{"line":10,"column":2}},"3":{"start":{"line":14,"column":23},"end":{"line":14,"column":45}}},"fnMap":{"0":{"name":"userValidate","decl":{"start":{"line":13,"column":16},"end":{"line":13,"column":28}},"loc":{"start":{"line":13,"column":43},"end":{"line":15,"column":1}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":5},"f":{"0":5},"b":{}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProfile.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProfile.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":17}},"loc":{"start":{"line":12,"column":17},"end":{"line":14,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":17}},"loc":{"start":{"line":16,"column":17},"end":{"line":18,"column":5}}}},"branchMap":{},"s":{"0":0},"f":{"0":0,"1":0},"b":{}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProject.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/business/businessLogicProject.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":33}},"1":{"start":{"line":9,"column":8},"end":{"line":42,"column":11}},"2":{"start":{"line":11,"column":36},"end":{"line":17,"column":14}},"3":{"start":{"line":19,"column":33},"end":{"line":21,"column":55}},"4":{"start":{"line":23,"column":12},"end":{"line":39,"column":13}},"5":{"start":{"line":25,"column":35},"end":{"line":27,"column":60}},"6":{"start":{"line":29,"column":41},"end":{"line":34,"column":18}},"7":{"start":{"line":30,"column":20},"end":{"line":33,"column":22}},"8":{"start":{"line":36,"column":16},"end":{"line":38,"column":17}},"9":{"start":{"line":37,"column":20},"end":{"line":37,"column":75}},"10":{"start":{"line":41,"column":12},"end":{"line":41,"column":30}},"11":{"start":{"line":50,"column":25},"end":{"line":51,"column":54}},"12":{"start":{"line":53,"column":8},"end":{"line":53,"column":24}},"13":{"start":{"line":61,"column":0},"end":{"line":61,"column":42}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":9}},"loc":{"start":{"line":7,"column":57},"end":{"line":43,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":32},"end":{"line":9,"column":37}},"loc":{"start":{"line":9,"column":46},"end":{"line":42,"column":9}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":56},"end":{"line":29,"column":63}},"loc":{"start":{"line":29,"column":66},"end":{"line":34,"column":17}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":17}},"loc":{"start":{"line":45,"column":17},"end":{"line":46,"column":5}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":9}},"loc":{"start":{"line":48,"column":40},"end":{"line":54,"column":5}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":17}},"loc":{"start":{"line":56,"column":17},"end":{"line":57,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":12},"end":{"line":39,"column":13}},"type":"if","locations":[{"start":{"line":23,"column":12},"end":{"line":39,"column":13}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":23,"column":16},"end":{"line":23,"column":65}},"type":"binary-expr","locations":[{"start":{"line":23,"column":16},"end":{"line":23,"column":33}},{"start":{"line":23,"column":37},"end":{"line":23,"column":65}}]},"2":{"loc":{"start":{"line":36,"column":16},"end":{"line":38,"column":17}},"type":"if","locations":[{"start":{"line":36,"column":16},"end":{"line":38,"column":17}},{"start":{},"end":{}}]}},"s":{"0":2,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":2},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0]}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/controller/requestController.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/controller/requestController.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":68}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"5":{"start":{"line":12,"column":8},"end":{"line":30,"column":9}},"6":{"start":{"line":14,"column":29},"end":{"line":14,"column":66}},"7":{"start":{"line":16,"column":28},"end":{"line":16,"column":76}},"8":{"start":{"line":18,"column":26},"end":{"line":21,"column":null}},"9":{"start":{"line":24,"column":12},"end":{"line":24,"column":52}},"10":{"start":{"line":28,"column":12},"end":{"line":28,"column":24}},"11":{"start":{"line":34,"column":8},"end":{"line":51,"column":9}},"12":{"start":{"line":36,"column":29},"end":{"line":36,"column":68}},"13":{"start":{"line":38,"column":28},"end":{"line":38,"column":76}},"14":{"start":{"line":40,"column":26},"end":{"line":43,"column":null}},"15":{"start":{"line":46,"column":12},"end":{"line":46,"column":52}},"16":{"start":{"line":50,"column":12},"end":{"line":50,"column":24}},"17":{"start":{"line":55,"column":8},"end":{"line":65,"column":9}},"18":{"start":{"line":56,"column":12},"end":{"line":56,"column":30}},"19":{"start":{"line":57,"column":31},"end":{"line":57,"column":85}},"20":{"start":{"line":59,"column":12},"end":{"line":59,"column":30}},"21":{"start":{"line":63,"column":12},"end":{"line":63,"column":58}},"22":{"start":{"line":69,"column":8},"end":{"line":80,"column":9}},"23":{"start":{"line":71,"column":29},"end":{"line":71,"column":65}},"24":{"start":{"line":73,"column":25},"end":{"line":73,"column":51}},"25":{"start":{"line":73,"column":44},"end":{"line":73,"column":50}},"26":{"start":{"line":75,"column":12},"end":{"line":75,"column":24}},"27":{"start":{"line":78,"column":12},"end":{"line":78,"column":61}},"28":{"start":{"line":79,"column":12},"end":{"line":79,"column":68}},"29":{"start":{"line":84,"column":8},"end":{"line":92,"column":9}},"30":{"start":{"line":86,"column":29},"end":{"line":86,"column":79}},"31":{"start":{"line":88,"column":12},"end":{"line":88,"column":28}},"32":{"start":{"line":91,"column":12},"end":{"line":91,"column":24}},"33":{"start":{"line":96,"column":0},"end":{"line":96,"column":39}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":9}},"loc":{"start":{"line":11,"column":35},"end":{"line":31,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":33,"column":4},"end":{"line":33,"column":9}},"loc":{"start":{"line":33,"column":35},"end":{"line":52,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":9}},"loc":{"start":{"line":54,"column":60},"end":{"line":66,"column":5}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":68,"column":4},"end":{"line":68,"column":9}},"loc":{"start":{"line":68,"column":21},"end":{"line":81,"column":5}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":73,"column":38},"end":{"line":73,"column":40}},"loc":{"start":{"line":73,"column":44},"end":{"line":73,"column":50}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":83,"column":4},"end":{"line":83,"column":9}},"loc":{"start":{"line":83,"column":43},"end":{"line":93,"column":5}}}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":11,"6":11,"7":6,"8":6,"9":6,"10":5,"11":3,"12":3,"13":1,"14":1,"15":1,"16":2,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":2},"f":{"0":11,"1":3,"2":0,"3":0,"4":0,"5":0},"b":{}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/models/User.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/models/User.ts","statementMap":{"0":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"1":{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},"2":{"start":{"line":28,"column":8},"end":{"line":28,"column":null}},"3":{"start":{"line":69,"column":8},"end":{"line":69,"column":null}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":16}},"loc":{"start":{"line":25,"column":30},"end":{"line":30,"column":5}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":17}},"loc":{"start":{"line":32,"column":17},"end":{"line":34,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":17}},"loc":{"start":{"line":36,"column":17},"end":{"line":38,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":17}},"loc":{"start":{"line":40,"column":17},"end":{"line":42,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":44,"column":4},"end":{"line":44,"column":17}},"loc":{"start":{"line":44,"column":17},"end":{"line":46,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":18}},"loc":{"start":{"line":48,"column":18},"end":{"line":50,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":52,"column":4},"end":{"line":52,"column":15}},"loc":{"start":{"line":52,"column":15},"end":{"line":54,"column":5}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":17}},"loc":{"start":{"line":56,"column":17},"end":{"line":58,"column":5}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":17}},"loc":{"start":{"line":60,"column":17},"end":{"line":62,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":64,"column":4},"end":{"line":64,"column":13}},"loc":{"start":{"line":64,"column":13},"end":{"line":66,"column":5}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":68,"column":4},"end":{"line":68,"column":15}},"loc":{"start":{"line":68,"column":15},"end":{"line":70,"column":5}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"b":{}} +,"/home/nicolas/Área de Trabalho/CTable/backend/src/utils/validationUser.ts": {"path":"/home/nicolas/Área de Trabalho/CTable/backend/src/utils/validationUser.ts","statementMap":{"0":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}},"2":{"start":{"line":4,"column":19},"end":{"line":10,"column":2}},"3":{"start":{"line":14,"column":23},"end":{"line":14,"column":45}}},"fnMap":{"0":{"name":"userValidate","decl":{"start":{"line":13,"column":16},"end":{"line":13,"column":28}},"loc":{"start":{"line":13,"column":43},"end":{"line":15,"column":1}}}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":11},"f":{"0":11},"b":{}} } diff --git a/backend/src/coverage/lcov-report/index.html b/backend/src/coverage/lcov-report/index.html index 3c8a622..785e585 100644 --- a/backend/src/coverage/lcov-report/index.html +++ b/backend/src/coverage/lcov-report/index.html @@ -23,30 +23,30 @@

All files

- 67.22% + 59.47% Statements - 80/119 + 91/153
- 55% + 46.87% Branches - 11/20 + 15/32
- 29.41% + 25.64% Functions - 10/34 + 10/39
- 67.22% + 59.86% Lines - 80/119 + 91/152
@@ -79,48 +79,48 @@

All files

- src - -
+ src + +
- 85% - 34/40 - 50% - 5/10 - 83.33% - 5/6 - 85% - 34/40 + 60% + 39/65 + 37.5% + 6/16 + 62.5% + 5/8 + 60% + 39/65 src/business - -
+ +
- 77.41% - 24/31 - 60% - 6/10 - 20% - 2/10 - 77.41% - 24/31 + 66.66% + 30/45 + 56.25% + 9/16 + 15.38% + 2/13 + 66.66% + 30/45 - src/controller - -
+ src/controller + +
- 81.81% - 18/22 + 52.94% + 18/34 100% 0/0 - 66.66% - 2/3 - 81.81% - 18/22 + 33.33% + 2/6 + 54.54% + 18/33 @@ -129,13 +129,13 @@

All files

0% - 0/22 + 0/5 100% 0/0 0% - 0/14 + 0/11 0% - 0/22 + 0/5 @@ -161,7 +161,7 @@

All files

+ + + + + + \ No newline at end of file diff --git a/frontend/coverage/lcov-report/index.html b/frontend/coverage/lcov-report/index.html index c35b82d..7bee7e4 100644 --- a/frontend/coverage/lcov-report/index.html +++ b/frontend/coverage/lcov-report/index.html @@ -23,30 +23,30 @@

All files

- Unknown% + 90% Statements - 0/0 + 18/20
- Unknown% + 75% Branches - 0/0 + 6/8
- Unknown% + 100% Functions - 0/0 + 4/4
- Unknown% + 94.11% Lines - 0/0 + 16/17
@@ -61,7 +61,7 @@

All files

-
+
@@ -78,7 +78,22 @@

All files

- + + + + + + + + + + + + + +
index.tsx +
+
90%18/2075%6/8100%4/494.11%16/17
@@ -86,7 +101,7 @@

All files

+ + + + + + \ No newline at end of file diff --git a/frontend/coverage/lcov.info b/frontend/coverage/lcov.info index e69de29..2c30645 100644 --- a/frontend/coverage/lcov.info +++ b/frontend/coverage/lcov.info @@ -0,0 +1,42 @@ +TN: +SF:src/pages/ProjectPage/index.tsx +FN:10,ProjectPage +FN:15,(anonymous_1) +FN:16,loadData +FN:84,(anonymous_3) +FNF:4 +FNH:4 +FNDA:4,ProjectPage +FNDA:2,(anonymous_1) +FNDA:2,loadData +FNDA:2,(anonymous_3) +DA:11,4 +DA:12,4 +DA:13,4 +DA:15,4 +DA:17,2 +DA:18,2 +DA:19,2 +DA:20,2 +DA:21,2 +DA:23,0 +DA:25,2 +DA:28,2 +DA:31,4 +DA:32,2 +DA:35,1 +DA:37,1 +DA:85,2 +LF:17 +LH:16 +BRDA:17,0,0,0 +BRDA:17,0,1,2 +BRDA:31,1,0,2 +BRDA:31,1,1,2 +BRDA:32,2,0,1 +BRDA:32,2,1,1 +BRDA:54,3,0,1 +BRDA:54,3,1,0 +BRF:8 +BRH:6 +end_of_record diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6deb796..ee1baf4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -21,6 +21,7 @@ "@eslint/js": "^9.33.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^5.0.0", @@ -30,12 +31,20 @@ "eslint-plugin-react-refresh": "^0.4.20", "globals": "^16.3.0", "happy-dom": "^20.0.11", + "jsdom": "^27.2.0", "typescript": "~5.8.3", "typescript-eslint": "^8.39.1", "vite": "^7.1.2", "vitest": "^4.0.14" } }, + "node_modules/@acemir/cssom": { + "version": "0.9.24", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.24.tgz", + "integrity": "sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==", + "dev": true, + "license": "MIT" + }, "node_modules/@adobe/css-tools": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", @@ -49,8 +58,6 @@ "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@csstools/css-calc": "^2.1.4", "@csstools/css-color-parser": "^3.1.0", @@ -65,8 +72,6 @@ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "engines": { "node": "20 || >=22" } @@ -77,8 +82,6 @@ "integrity": "sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", @@ -93,8 +96,6 @@ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "engines": { "node": "20 || >=22" } @@ -104,9 +105,7 @@ "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@babel/code-frame": { "version": "7.27.1", @@ -438,8 +437,6 @@ } ], "license": "MIT-0", - "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -460,8 +457,6 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=18" }, @@ -486,8 +481,6 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" @@ -516,8 +509,6 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=18" }, @@ -541,8 +532,6 @@ } ], "license": "MIT-0", - "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -563,8 +552,6 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -1710,6 +1697,20 @@ } } }, + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -2303,8 +2304,6 @@ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 14" } @@ -2429,8 +2428,6 @@ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "require-from-string": "^2.0.2" } @@ -2679,8 +2676,6 @@ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" @@ -2702,8 +2697,6 @@ "integrity": "sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@asamuzakjp/css-color": "^4.0.3", "@csstools/css-syntax-patches-for-csstree": "^1.0.14", @@ -2725,8 +2718,6 @@ "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^15.0.0" @@ -2758,9 +2749,7 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/deep-is": { "version": "0.1.4", @@ -2823,8 +2812,6 @@ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", - "optional": true, - "peer": true, "engines": { "node": ">=0.12" }, @@ -3521,8 +3508,6 @@ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -3543,8 +3528,6 @@ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -3559,8 +3542,6 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -3575,8 +3556,6 @@ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3681,9 +3660,7 @@ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -3766,16 +3743,15 @@ } }, "node_modules/jsdom": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz", - "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==", + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.2.0.tgz", + "integrity": "sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@asamuzakjp/dom-selector": "^6.7.2", - "cssstyle": "^5.3.1", + "@acemir/cssom": "^0.9.23", + "@asamuzakjp/dom-selector": "^6.7.4", + "cssstyle": "^5.3.3", "data-urls": "^6.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^4.0.0", @@ -3783,7 +3759,6 @@ "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", "parse5": "^8.0.0", - "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", @@ -3796,7 +3771,7 @@ "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { "canvas": "^3.0.0" @@ -3999,9 +3974,7 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true, - "license": "CC0-1.0", - "optional": true, - "peer": true + "license": "CC0-1.0" }, "node_modules/merge2": { "version": "1.4.1", @@ -4199,8 +4172,6 @@ "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "entities": "^6.0.0" }, @@ -4512,8 +4483,6 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -4580,15 +4549,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4618,9 +4578,7 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/saxes": { "version": "6.0.0", @@ -4628,8 +4586,6 @@ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -4824,9 +4780,7 @@ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", @@ -4906,8 +4860,6 @@ "integrity": "sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "tldts-core": "^7.0.19" }, @@ -4920,9 +4872,7 @@ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz", "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -4943,8 +4893,6 @@ "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "tldts": "^7.0.5" }, @@ -4958,8 +4906,6 @@ "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "punycode": "^2.3.1" }, @@ -5289,8 +5235,6 @@ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -5304,8 +5248,6 @@ "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", "dev": true, "license": "BSD-2-Clause", - "optional": true, - "peer": true, "engines": { "node": ">=20" } @@ -5316,8 +5258,6 @@ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "iconv-lite": "0.6.3" }, @@ -5331,8 +5271,6 @@ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -5343,8 +5281,6 @@ "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "tr46": "^6.0.0", "webidl-conversions": "^8.0.0" @@ -5402,8 +5338,6 @@ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -5426,8 +5360,6 @@ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -5437,9 +5369,7 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/yallist": { "version": "3.1.1", diff --git a/frontend/package.json b/frontend/package.json index 1205e01..577256a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -25,6 +25,7 @@ "@eslint/js": "^9.33.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^5.0.0", @@ -34,6 +35,7 @@ "eslint-plugin-react-refresh": "^0.4.20", "globals": "^16.3.0", "happy-dom": "^20.0.11", + "jsdom": "^27.2.0", "typescript": "~5.8.3", "typescript-eslint": "^8.39.1", "vite": "^7.1.2", diff --git a/frontend/src/components/common/Keyword/Keyword.spec.tsx b/frontend/src/components/common/Keyword/Keyword.spec.tsx new file mode 100644 index 0000000..30ad071 --- /dev/null +++ b/frontend/src/components/common/Keyword/Keyword.spec.tsx @@ -0,0 +1,34 @@ +import { render, screen, fireEvent } from '@testing-library/react'; +import { describe, it, expect, vi } from 'vitest'; +import { Keyword } from './index'; + +// Mock dos estilos +vi.mock('./styles', () => ({ + KeywordTag: ({ children }: any) =>
{children}
, + KeywordRemoveButton: ({ children, onClick }: any) => ( + + ), + KeywordContainer: ({ children }: any) =>
{children}
+})); + +describe('Componente Keyword', () => { + it('deve renderizar o conteúdo corretamente', () => { + const handleRemove = vi.fn(); + render(React); + + expect(screen.getByText('React')).toBeInTheDocument(); + expect(screen.getByTestId('keyword-tag')).toBeInTheDocument(); + }); + + it('deve chamar a função onRemove ao clicar no botão', () => { + const handleRemove = vi.fn(); + render(TypeScript); + + const button = screen.getByTestId('remove-btn'); + fireEvent.click(button); + + expect(handleRemove).toHaveBeenCalledTimes(1); + }); +}); \ No newline at end of file diff --git a/frontend/src/components/common/Modal/Modal.spec.tsx b/frontend/src/components/common/Modal/Modal.spec.tsx new file mode 100644 index 0000000..5558570 --- /dev/null +++ b/frontend/src/components/common/Modal/Modal.spec.tsx @@ -0,0 +1,85 @@ +import { render, screen, fireEvent } from '@testing-library/react'; +import { describe, it, expect, vi } from 'vitest'; +import Modal from './index'; + +// Mock dos estilos +vi.mock('./styles', () => ({ + ModalOverlay: ({ children, onClick }: any) => ( +
+ {children} +
+ ), + ModalContent: ({ children, onClick }: any) => ( +
+ {children} +
+ ), + CloseButton: ({ children, onClick }: any) => ( + + ), + ModalTitle: ({ children }: any) =>

{children}

, +})); + +describe('Componente Modal', () => { + it('não deve renderizar nada se isOpen for false', () => { + render( + {}} title="Teste"> +

Conteúdo

+
+ ); + + expect(screen.queryByTestId('overlay')).not.toBeInTheDocument(); + }); + + it('deve renderizar o título e o conteúdo se isOpen for true', () => { + render( + {}} title="Título do Modal"> +

Conteúdo Interno

+
+ ); + + expect(screen.getByText('Título do Modal')).toBeInTheDocument(); + expect(screen.getByText('Conteúdo Interno')).toBeInTheDocument(); + }); + + it('deve fechar ao clicar no botão de fechar (X)', () => { + const handleClose = vi.fn(); + render( + + Conteúdo + + ); + + fireEvent.click(screen.getByTestId('close-btn')); + expect(handleClose).toHaveBeenCalledTimes(1); + }); + + it('deve fechar ao clicar no overlay (fundo escuro)', () => { + const handleClose = vi.fn(); + render( + + Conteúdo + + ); + + fireEvent.click(screen.getByTestId('overlay')); + expect(handleClose).toHaveBeenCalledTimes(1); + }); + + it('NÃO deve fechar ao clicar dentro do conteúdo (stop propagation)', () => { + const handleClose = vi.fn(); + render( + + Conteúdo + + ); + + // Clica no cartão do modal (conteúdo) + fireEvent.click(screen.getByTestId('content')); + + // A função de fechar NÃO deve ser chamada + expect(handleClose).not.toHaveBeenCalled(); + }); +}); \ No newline at end of file diff --git a/frontend/src/components/common/Toast/Toast.spec.tsx b/frontend/src/components/common/Toast/Toast.spec.tsx new file mode 100644 index 0000000..58a05b9 --- /dev/null +++ b/frontend/src/components/common/Toast/Toast.spec.tsx @@ -0,0 +1,73 @@ +import { render, screen, fireEvent, act } from '@testing-library/react'; +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import Toast from './index'; + +// Mock dos estilos +vi.mock('./styles', () => ({ + ToastContainer: ({ children, type }: any) => ( +
+ {children} +
+ ), + ToastMessage: ({ children }: any) =>

{children}

, + CloseButton: ({ children, onClick }: any) => ( + + ), +})); + +describe('Componente Toast', () => { + beforeEach(() => { + vi.useFakeTimers(); // Ativa temporizadores falsos + }); + + afterEach(() => { + vi.useRealTimers(); // Restaura temporizadores reais após cada teste + }); + + it('deve renderizar a mensagem e o tipo correto', () => { + render( {}} />); + + expect(screen.getByText('Sucesso!')).toBeInTheDocument(); + + const container = screen.getByTestId('toast-container'); + expect(container).toHaveAttribute('data-type', 'success'); + }); + + it('deve chamar onClose ao clicar no botão de fechar', () => { + const handleClose = vi.fn(); + render(); + + fireEvent.click(screen.getByTestId('close-btn')); + expect(handleClose).toHaveBeenCalledTimes(1); + }); + + it('deve fechar automaticamente após 5 segundos', () => { + const handleClose = vi.fn(); + render(); + + // Verifica que ainda não foi chamado + expect(handleClose).not.toHaveBeenCalled(); + + // Avança o tempo em 5000ms (5 segundos) + act(() => { + vi.advanceTimersByTime(5000); + }); + + // Agora deve ter sido chamado + expect(handleClose).toHaveBeenCalledTimes(1); + }); + + it('não deve fechar antes de 5 segundos', () => { + const handleClose = vi.fn(); + render(); + + // Avança apenas 4 segundos + act(() => { + vi.advanceTimersByTime(4000); + }); + + expect(handleClose).not.toHaveBeenCalled(); + }); +}); \ No newline at end of file diff --git a/frontend/src/components/domain/Postcard/Postcard.spec.tsx b/frontend/src/components/domain/Postcard/Postcard.spec.tsx new file mode 100644 index 0000000..5c263f1 --- /dev/null +++ b/frontend/src/components/domain/Postcard/Postcard.spec.tsx @@ -0,0 +1,171 @@ +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import Postcard from './index'; +import { BrowserRouter } from 'react-router-dom'; +import * as ProjectAPI from '../../../API/Project'; +import * as CommentAPI from '../../../API/Comment'; + +// --- Mocks --- + +// Mock do hook useAuth +vi.mock('../../../API/AuthContext', () => ({ + useAuth: () => ({ + currentUser: { id: 'user123' } + }) +})); + +// Mock do useNavigate +const navigateMock = vi.fn(); +vi.mock('react-router-dom', async () => { + const actual = await vi.importActual('react-router-dom'); + return { ...actual, useNavigate: () => navigateMock }; +}); + +// Mock Styles do Postcard +vi.mock('./styles', () => ({ + PostCardWrapper: ({ children, onClick }: any) =>
{children}
, + PostHeader: ({ children }: any) =>
{children}
, + PostContent: ({ children }: any) =>
{children}
, + MenuWrapper: ({ children }: any) =>
{children}
, + MenuButton: ({ children, onClick }: any) => , + ActionRow: ({ children }: any) =>
{children}
, + ActionButton: ({ children, onClick }: any) => , + CommentForm: ({ children, onSubmit }: any) =>
{children}
, + CommentTextArea: (props: any) =>