GEWIS / sudosos-backend

SudoSOS is a Node.js-based Bar and POS system made for study association GEWIS.
https://sudosos.gewis.nl
GNU Affero General Public License v3.0
6 stars 3 forks source link

bugfix: mysql test suite #169

Closed JustSamuel closed 5 months ago

JustSamuel commented 5 months ago

The MySQL test suite now finally works. Some changes were needed such to never close a connection if we are in a MySQL context.

The original mistake originated from the test/setup.ts file where the env vars were overwritten and always resulted in a sqlite context.

This PR also includes multiple bug fixes found during this process.

Changes

To ensure future test cases also work make sure to use the following in your before

const connection = await Database.initialize();
await truncateAllTables(connection);

And the following in your after

await finishTestDB(ctx.connection);

This also means to speed up the testing, refrain from making this a beforeEach.

TODO

Fixes & Closes

CI: Adds post migration test suite. fix: Invoice migration, such that it follows the current schema synchronize. fix: product-revision.alcoholPercentage had precision: 0. fix: bug in balance service that would crash mysql on empty ids array. fix: FineHandoutEvents were not sorted by default fix: EventService filtering on beforeDate was wrong fix: InvoiceService latest valid invoice function was wrong fix: MySQL didn't store milliseconds for timestamps. fix: seed script for MySQL.

Closes #82 Closes #83 Closes #88

github-actions[bot] commented 5 months ago

SudoSOS Coverage Report

Commit: a760f08 Base: develop@7382d62

Type Base This PR
Total Statements Coverage ?  90.09% (?)
Total Branches Coverage ?  85.7% (?)
Total Functions Coverage ?  91.22% (?)
Total Lines Coverage ?  90.07% (?)
Details (changed files)
FileStatementsBranchesFunctionsLines
Details (all files)
FileStatementsBranchesFunctionsLines
/src/index.ts 82.78% 50% 33.33% 83.22%
/src/authentication/token-handler.ts 100% 100% 100% 100%
/src/controller/authentication-controller.ts 85.88% 94.73% 96% 86.3%
/src/controller/authentication-secure-controller.ts 88.88% 100% 100% 88.88%
/src/controller/balance-controller.ts 78.04% 14.28% 100% 78.04%
/src/controller/banner-controller.ts 82.52% 95.45% 100% 82.52%
/src/controller/base-controller.ts 100% 100% 100% 100%
/src/controller/container-controller.ts 86.27% 90.9% 100% 85.71%
/src/controller/debtor-controller.ts 79.59% 63.63% 100% 84.61%
/src/controller/event-controller.ts 82.66% 100% 100% 82.66%
/src/controller/event-shift-controller.ts 75.82% 89.47% 100% 75.82%
/src/controller/invoice-controller.ts 87.01% 92.1% 100% 86.84%
/src/controller/payout-request-controller.ts 81.33% 92.85% 100% 81.33%
/src/controller/point-of-sale-controller.ts 82.53% 86.66% 100% 81.96%
/src/controller/product-category-controller.ts 82.45% 100% 100% 82.45%
/src/controller/product-controller.ts 86.48% 92.5% 100% 86.91%
/src/controller/rbac-controller.ts 88.23% 100% 100% 88.23%
/src/controller/root-controller.ts 82.14% 100% 100% 82.14%
/src/controller/simple-file-controller.ts 11.62% 0% 0% 11.62%
/src/controller/stripe-controller.ts 83.33% 50% 100% 83.33%
/src/controller/stripe-webhook-controller.ts 100% 100% 100% 100%
/src/controller/test-controller.ts 33.33% 100% 0% 33.33%
/src/controller/transaction-controller.ts 85.14% 96.96% 100% 84.69%
/src/controller/transfer-controller.ts 83.92% 94.73% 100% 83.33%
/src/controller/user-controller.ts 82.99% 92.45% 100% 83.05%
/src/controller/vat-group-controller.ts 87.8% 100% 100% 87.8%
/src/controller/voucher-group-controller.ts 79.41% 83.33% 100% 79.41%
/src/controller/request/file-request.ts 0% 0% 0% 0%
/src/controller/request/validators/container-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/duration-spec.ts 66.66% 50% 50% 64.28%
/src/controller/request/validators/general-validators.ts 88% 75% 75% 84.21%
/src/controller/request/validators/invoice-request-spec.ts 92.72% 81.81% 100% 97.72%
/src/controller/request/validators/point-of-sale-request-spec.ts 95% 75% 100% 94.11%
/src/controller/request/validators/product-request-spec.ts 90.32% 72.72% 100% 90%
/src/controller/request/validators/string-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-local-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-nfc-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-pin-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/user-request-spec.ts 86.95% 66.66% 85.71% 88.88%
/src/controller/request/validators/validation-errors.ts 88.05% 100% 63.63% 100%
/src/controller/response/dinero.ts 0% 0% 0% 0%
/src/database/database.ts 92.59% 75% 60% 93.5%
/src/database/schema.ts 92% 50% 50% 95.83%
/src/entity/banner.ts 100% 100% 100% 100%
/src/entity/base-entity-without-id.ts 100% 100% 100% 100%
/src/entity/base-entity.ts 100% 100% 100% 100%
/src/entity/vat-group.ts 100% 100% 100% 100%
/src/entity/authenticator/authentication-method.ts 100% 100% 100% 100%
/src/entity/authenticator/ean-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/hash-based-authentication-method.ts 100% 100% 100% 100%
/src/entity/authenticator/key-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/ldap-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/local-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/member-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/nfc-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/pin-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/reset-token.ts 100% 100% 100% 100%
/src/entity/container/container-revision.ts 95% 100% 80% 92.85%
/src/entity/container/container.ts 100% 100% 100% 100%
/src/entity/deposit/stripe-deposit-status.ts 100% 100% 100% 100%
/src/entity/deposit/stripe-deposit.ts 100% 100% 100% 100%
/src/entity/event/event-shift-answer.ts 100% 100% 100% 100%
/src/entity/event/event-shift.ts 100% 100% 100% 100%
/src/entity/event/event.ts 100% 100% 100% 100%
/src/entity/file/banner-image.ts 100% 100% 100% 100%
/src/entity/file/base-file.ts 100% 100% 100% 100%
/src/entity/file/invoice-pdf.ts 100% 100% 100% 100%
/src/entity/file/product-image.ts 100% 100% 100% 100%
/src/entity/fine/fine.ts 100% 100% 100% 100%
/src/entity/fine/fineHandoutEvent.ts 100% 100% 100% 100%
/src/entity/fine/userFineGroup.ts 100% 100% 100% 100%
/src/entity/invoices/invoice-entry.ts 100% 100% 100% 100%
/src/entity/invoices/invoice-status.ts 100% 100% 100% 100%
/src/entity/invoices/invoice.ts 100% 100% 100% 100%
/src/entity/point-of-sale/point-of-sale-revision.ts 94.44% 100% 75% 92.3%
/src/entity/point-of-sale/point-of-sale.ts 100% 100% 100% 100%
/src/entity/point-of-sale/product-ordering.ts 100% 100% 100% 100%
/src/entity/product/product-category.ts 100% 100% 100% 100%
/src/entity/product/product-revision.ts 96% 100% 75% 95%
/src/entity/product/product.ts 100% 100% 100% 100%
/src/entity/roles/assigned-role.ts 100% 100% 100% 100%
/src/entity/transactions/balance.ts 100% 100% 100% 100%
/src/entity/transactions/flagged-transaction.ts 100% 100% 100% 100%
/src/entity/transactions/payout-request-status.ts 100% 100% 100% 100%
/src/entity/transactions/payout-request.ts 100% 100% 100% 100%
/src/entity/transactions/sub-transaction-row.ts 100% 100% 100% 100%
/src/entity/transactions/sub-transaction.ts 100% 100% 100% 100%
/src/entity/transactions/transaction.ts 100% 100% 100% 100%
/src/entity/transactions/transfer.ts 100% 100% 100% 100%
/src/entity/transformer/dinero-transformer.ts 100% 100% 100% 100%
/src/entity/user/invoice-user.ts 100% 100% 100% 100%
/src/entity/user/local-user.ts 100% 100% 100% 100%
/src/entity/user/user-voucher-group.ts 100% 100% 100% 100%
/src/entity/user/user.ts 97.72% 75% 100% 100%
/src/entity/user/voucher-group.ts 100% 100% 100% 100%
/src/files/initialize.ts 100% 50% 100% 100%
/src/files/response.ts 28.57% 100% 0% 28.57%
/src/files/storage/disk-storage.ts 82.14% 83.33% 60% 82.14%
/src/files/storage/file-storage.ts 100% 100% 100% 100%
/src/files/storage/index.ts 100% 100% 50% 100%
/src/files/storage/locations.ts 100% 100% 100% 100%
/src/gewis/gewis.ts 72.13% 44.44% 38.09% 75.86%
/src/gewis/controller/gewis-authentication-controller.ts 87.03% 70% 100% 87.03%
/src/gewis/database/seed.ts 100% 100% 100% 100%
/src/gewis/entity/gewis-user.ts 100% 100% 100% 100%
/src/helpers/ad.ts 90.9% 100% 100% 90.9%
/src/helpers/bindings.ts 100% 100% 100% 100%
/src/helpers/database.ts 100% 100% 100% 100%
/src/helpers/hash.ts 100% 100% 100% 100%
/src/helpers/ordering.ts 90.9% 83.33% 100% 90%
/src/helpers/pagination.ts 100% 85.71% 100% 100%
/src/helpers/query-filter.ts 100% 100% 100% 100%
/src/helpers/raw-body.ts 100% 100% 100% 100%
/src/helpers/revision-to-response.ts 91.3% 66.66% 88.88% 95.23%
/src/helpers/specification-validation.ts 97.29% 100% 88.88% 96.87%
/src/helpers/timestamps.ts 70% 66.66% 60% 70%
/src/helpers/token-helper.ts 100% 100% 100% 100%
/src/helpers/transaction-mapper.ts 95.89% 100% 88% 95.58%
/src/helpers/validators.ts 94% 90.27% 100% 97.4%
/src/mailer/index.ts 100% 100% 100% 100%
/src/mailer/mailer.ts 100% 100% 100% 100%
/src/mailer/transporter.ts 100% 100% 100% 100%
/src/mailer/templates/forgot-event-planning.ts 76.92% 100% 57.14% 76.92%
/src/mailer/templates/hello-world.ts 100% 100% 100% 100%
/src/mailer/templates/index.ts 100% 100% 100% 100%
/src/mailer/templates/mail-content.ts 100% 100% 100% 100%
/src/mailer/templates/mail-template.ts 100% 100% 100% 100%
/src/mailer/templates/password-reset.ts 36.84% 0% 0% 36.84%
/src/mailer/templates/signature.ts 100% 100% 100% 100%
/src/mailer/templates/user-debt-notification.ts 82.35% 50% 57.14% 82.35%
/src/mailer/templates/user-got-fined.ts 78.57% 100% 57.14% 78.57%
/src/mailer/templates/user-will-get-fined.ts 71.42% 50% 60% 71.42%
/src/mailer/templates/welcome-to-sudosos.ts 82.35% 50% 57.14% 82.35%
/src/mailer/templates/welcome-with-reset.ts 82.35% 50% 57.14% 82.35%
/src/middleware/policy-middleware.ts 81.81% 100% 100% 81.81%
/src/middleware/request-validator-middleware.ts 92.3% 80% 100% 100%
/src/middleware/restriction-middleware.ts 93.75% 92.85% 75% 100%
/src/middleware/token-middleware.ts 100% 100% 100% 100%
/src/migrations/1707251162194-invoice-refactor.ts 100% 50% 100% 100%
/src/rbac/role-manager.ts 95% 87.5% 100% 98.03%
/src/service/ad-service.ts 85.86% 52.94% 90% 89.04%
/src/service/authentication-service.ts 93.1% 83.78% 100% 92.66%
/src/service/balance-service.ts 98.16% 91.78% 100% 97.95%
/src/service/banner-service.ts 95.23% 86.95% 100% 95.12%
/src/service/container-service.ts 99.03% 89.74% 100% 100%
/src/service/debtor-service.ts 97.95% 85.71% 100% 100%
/src/service/event-service.ts 100% 99.06% 100% 100%
/src/service/file-service.ts 97.1% 79.16% 100% 97.05%
/src/service/invoice-pdf-service.ts 98.21% 89.47% 100% 100%
/src/service/invoice-service.ts 95.12% 83.95% 95.45% 97.25%
/src/service/payout-request-service.ts 100% 96.15% 100% 100%
/src/service/point-of-sale-service.ts 95% 76.19% 92.85% 98.18%
/src/service/product-category-service.ts 100% 100% 100% 100%
/src/service/product-service.ts 94.18% 65.11% 95% 95%
/src/service/rbac-service.ts 100% 100% 100% 100%
/src/service/stripe-service.ts 98.36% 100% 100% 98.24%
/src/service/transaction-service.ts 96.96% 86.53% 100% 96.68%
/src/service/transfer-service.ts 100% 96.15% 100% 100%
/src/service/user-service.ts 95.45% 74.46% 90% 97.5%
/src/service/vat-group-service.ts 98.64% 76.19% 92.85% 98.43%
/src/service/voucher-group-service.ts 100% 93.1% 100% 100%
/src/start/swagger.ts 82.5% 58.82% 66.66% 82.05%
/src/subscriber/index.ts 100% 100% 100% 100%
/src/subscriber/transaction-subscriber.ts 91.17% 78.57% 66.66% 92.85%
/src/subscriber/transfer-subscriber.ts 100% 87.5% 100% 100%
github-actions[bot] commented 3 months ago

:tada: This PR is included in version 0.1.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: