diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 88a6ba8e8..24aec5fff 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -380,7 +380,7 @@ jobs: ########################################################################## - name: frontend | Unit tests run: | - docker run -v ~/coverage:/app/coverage --rm gradido/frontend:test yarn run test + docker run --env NODE_ENV=test -v ~/coverage:/app/coverage --rm gradido/frontend:test yarn run test cp -r ~/coverage ./coverage ########################################################################## # COVERAGE REPORT FRONTEND ############################################### diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 3c03227d5..127e5f26c 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -6,7 +6,7 @@ import { UpdatePendingCreation } from '../model/UpdatePendingCreation' import { RIGHTS } from '../../auth/RIGHTS' import { TransactionRepository } from '../../typeorm/repository/Transaction' import { TransactionCreationRepository } from '../../typeorm/repository/TransactionCreation' -import { PendingCreationRepository } from '../../typeorm/repository/PendingCreation' +import { LoginPendingTasksAdminRepository } from '../../typeorm/repository/LoginPendingTasksAdmin' import { UserRepository } from '../../typeorm/repository/User' import CreatePendingCreationArgs from '../arg/CreatePendingCreationArgs' import UpdatePendingCreationArgs from '../arg/UpdatePendingCreationArgs' @@ -48,8 +48,8 @@ export class AdminResolver { const creations = await getUserCreations(user.id) const creationDateObj = new Date(creationDate) if (isCreationValid(creations, amount, creationDateObj)) { - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const loginPendingTaskAdmin = pendingCreationRepository.create() + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const loginPendingTaskAdmin = loginPendingTasksAdminRepository.create() loginPendingTaskAdmin.userId = user.id loginPendingTaskAdmin.amount = BigInt(amount * 10000) loginPendingTaskAdmin.created = new Date() @@ -57,7 +57,7 @@ export class AdminResolver { loginPendingTaskAdmin.memo = memo loginPendingTaskAdmin.moderator = moderator - pendingCreationRepository.save(loginPendingTaskAdmin) + loginPendingTasksAdminRepository.save(loginPendingTaskAdmin) } return await getUserCreations(user.id) } @@ -70,8 +70,8 @@ export class AdminResolver { const userRepository = getCustomRepository(UserRepository) const user = await userRepository.findByEmail(email) - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const updatedCreation = await pendingCreationRepository.findOneOrFail({ id }) + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const updatedCreation = await loginPendingTasksAdminRepository.findOneOrFail({ id }) if (updatedCreation.userId !== user.id) throw new Error('user of the pending creation and send user does not correspond') @@ -81,9 +81,9 @@ export class AdminResolver { updatedCreation.date = new Date(creationDate) updatedCreation.moderator = moderator - await pendingCreationRepository.save(updatedCreation) + await loginPendingTasksAdminRepository.save(updatedCreation) const result = new UpdatePendingCreation() - result.amount = parseInt(updatedCreation.amount.toString()) + result.amount = parseInt(amount.toString()) result.memo = updatedCreation.memo result.date = updatedCreation.date result.moderator = updatedCreation.moderator @@ -110,8 +110,8 @@ export class AdminResolver { @Query(() => [PendingCreation]) async getPendingCreations(): Promise { - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const pendingCreations = await pendingCreationRepository.find() + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const pendingCreations = await loginPendingTasksAdminRepository.find() const pendingCreationsPromise = await Promise.all( pendingCreations.map(async (pendingCreation) => { @@ -137,16 +137,16 @@ export class AdminResolver { @Mutation(() => Boolean) async deletePendingCreation(@Arg('id') id: number): Promise { - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const entity = await pendingCreationRepository.findOneOrFail(id) - const res = await pendingCreationRepository.delete(entity) + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const entity = await loginPendingTasksAdminRepository.findOneOrFail(id) + const res = await loginPendingTasksAdminRepository.delete(entity) return !!res } @Mutation(() => Boolean) async confirmPendingCreation(@Arg('id') id: number): Promise { - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const pendingCreation = await pendingCreationRepository.findOneOrFail(id) + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const pendingCreation = await loginPendingTasksAdminRepository.findOneOrFail(id) const transactionRepository = getCustomRepository(TransactionRepository) let transaction = new Transaction() @@ -176,7 +176,7 @@ export class AdminResolver { } else { newBalance = lastUserTransaction.balance } - newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString()) / 10000) + newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString())) const newUserTransaction = new UserTransaction() newUserTransaction.userId = pendingCreation.userId @@ -194,11 +194,11 @@ export class AdminResolver { if (!userBalance) userBalance = balanceRepository.create() userBalance.userId = pendingCreation.userId - userBalance.amount = Number(newBalance * 10000) + userBalance.amount = Number(newBalance) userBalance.modified = new Date() userBalance.recordDate = userBalance.recordDate ? userBalance.recordDate : new Date() await balanceRepository.save(userBalance) - await pendingCreationRepository.delete(pendingCreation) + await loginPendingTasksAdminRepository.delete(pendingCreation) return true } @@ -247,8 +247,8 @@ async function getUserCreations(id: number): Promise { }) .getRawOne() - const pendingCreationRepository = getCustomRepository(PendingCreationRepository) - const pendingAmountMounth = await pendingCreationRepository + const loginPendingTasksAdminRepository = getCustomRepository(LoginPendingTasksAdminRepository) + const pendingAmountMounth = await loginPendingTasksAdminRepository .createQueryBuilder('login_pending_tasks_admin') .select('SUM(login_pending_tasks_admin.amount)', 'sum') .where('login_pending_tasks_admin.userId = :id', { id }) @@ -260,7 +260,7 @@ async function getUserCreations(id: number): Promise { }) .getRawOne() - const pendingAmountLastMounth = await pendingCreationRepository + const pendingAmountLastMounth = await loginPendingTasksAdminRepository .createQueryBuilder('login_pending_tasks_admin') .select('SUM(login_pending_tasks_admin.amount)', 'sum') .where('login_pending_tasks_admin.userId = :id', { id }) @@ -272,7 +272,7 @@ async function getUserCreations(id: number): Promise { }) .getRawOne() - const pendingAmountBeforeLastMounth = await pendingCreationRepository + const pendingAmountBeforeLastMounth = await loginPendingTasksAdminRepository .createQueryBuilder('login_pending_tasks_admin') .select('SUM(login_pending_tasks_admin.amount)', 'sum') .where('login_pending_tasks_admin.userId = :id', { id }) diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 58eb695ea..b2f4b4db5 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -428,7 +428,7 @@ async function addUserTransaction( if (lastUserTransaction) { newBalance += Number( await calculateDecay( - Number(lastUserTransaction.balance * 10000), + Number(lastUserTransaction.balance), lastUserTransaction.balanceDate, transaction.received, ).catch(() => { diff --git a/backend/src/typeorm/repository/PendingCreation.ts b/backend/src/typeorm/repository/LoginPendingTasksAdmin.ts similarity index 64% rename from backend/src/typeorm/repository/PendingCreation.ts rename to backend/src/typeorm/repository/LoginPendingTasksAdmin.ts index 8b49e7ecc..b5c55fcd2 100644 --- a/backend/src/typeorm/repository/PendingCreation.ts +++ b/backend/src/typeorm/repository/LoginPendingTasksAdmin.ts @@ -2,4 +2,4 @@ import { EntityRepository, Repository } from 'typeorm' import { LoginPendingTasksAdmin } from '@entity/LoginPendingTasksAdmin' @EntityRepository(LoginPendingTasksAdmin) -export class PendingCreationRepository extends Repository {} +export class LoginPendingTasksAdminRepository extends Repository {} diff --git a/database/Dockerfile b/database/Dockerfile index f2048284b..ec0537ddf 100644 --- a/database/Dockerfile +++ b/database/Dockerfile @@ -1,7 +1,7 @@ ################################################################################## # BASE ########################################################################### ################################################################################## -FROM node:12.19.0-alpine3.10 as base +FROM node:17-alpine as base # ENVs (available in production aswell, can be overwritten by commandline or env file) ## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame @@ -14,8 +14,6 @@ ENV BUILD_VERSION="0.0.0.0" ENV BUILD_COMMIT="0000000" ## SET NODE_ENV ENV NODE_ENV="production" -## App relevant Envs -#ENV PORT="4000" # Labels LABEL org.label-schema.build-date="${BUILD_DATE}" @@ -34,10 +32,6 @@ LABEL maintainer="support@gradido.net" ## install: git #RUN apk --no-cache add git -# Settings -## Expose Container Port -# EXPOSE ${PORT} - ## Workdir RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} @@ -99,7 +93,7 @@ FROM base as production # Copy "binary"-files from build image COPY --from=build ${DOCKER_WORKDIR}/build ./build # We also copy the node_modules express and serve-static for the run script - COPY --from=build ${DOCKER_WORKDIR}/node_modules ./node_modules +COPY --from=build ${DOCKER_WORKDIR}/node_modules ./node_modules # Copy static files # COPY --from=build ${DOCKER_WORKDIR}/public ./public # Copy package.json for script definitions (lock file should not be needed) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 83f38a95f..cdaf46a7a 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -68,9 +68,6 @@ services: image: gradido/database:test_up build: target: test_up - #networks: - # - external-net - # - internal-net environment: - NODE_ENV="development" volumes: diff --git a/docker-compose.yml b/docker-compose.yml index 9352fd162..ae72f3137 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -116,12 +116,10 @@ services: - mariadb networks: - internal-net - #ports: - # - 4000:4000 + - external-net # this is required to fetch the packages environment: # Envs used in Dockerfile # - DOCKER_WORKDIR="/app" - # - PORT=4000 - BUILD_DATE - BUILD_VERSION - BUILD_COMMIT diff --git a/frontend/babel.config.js b/frontend/babel.config.js index 7acdca661..fab7b82b8 100644 --- a/frontend/babel.config.js +++ b/frontend/babel.config.js @@ -1,12 +1,22 @@ -module.exports = { - presets: ['@babel/preset-env'], - plugins: [ - 'transform-require-context', +module.exports = function (api) { + api.cache(true) + + const presets = ['@babel/preset-env'] + const plugins = [ [ 'component', { styleLibraryName: 'theme-chalk', }, ], - ], + ] + + if (process.env.NODE_ENV === 'test') { + plugins.push('transform-require-context') + } + + return { + presets, + plugins, + } } diff --git a/frontend/package.json b/frontend/package.json index 86b127676..cfa7be87c 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,8 +23,6 @@ "axios": "^0.21.1", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^27.3.1", - "babel-plugin-require-context-hook": "^1.0.0", - "babel-plugin-transform-require-context": "^0.1.1", "babel-preset-vue": "^2.0.2", "bootstrap": "4.3.1", "bootstrap-vue": "^2.5.0", @@ -90,6 +88,7 @@ "@vue/eslint-config-prettier": "^4.0.1", "babel-eslint": "^10.1.0", "babel-plugin-component": "^1.1.0", + "babel-plugin-transform-require-context": "^0.1.1", "dotenv-webpack": "^7.0.3", "node-sass": "^6.0.1", "sass-loader": "^10", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 981917c54..25b0eadc5 100755 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,6 +1,6 @@