Merged PR 894: API修正(アカウント削除系)
## 概要 [Task4034: API修正(アカウント削除系)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/4034) - アカウント削除時にJobNumberテーブルのレコードも削除するように修正 - パートナー削除時にJobNumberテーブルのレコードも削除するように修正 - テスト修正 ## レビューポイント - テストケースに不足はないか - ジョブナンバーテーブルの削除順に問題はないか ## クエリの変更 - Repositoryを変更し、クエリが変更された場合は変更内容を確認する - JobNumberテーブルのレコードを削除する処理を追加した - 既存のクエリに影響はなし ## 動作確認状況 - ローカルで確認 - 行った修正がデグレを発生させていないことを確認できるか - 既存のテストが通ることを確認 - テストしていなかった観点(ソート条件も削除されているか等)も確認するように修正 ## 補足 - 相談、参考資料などがあれば
This commit is contained in:
parent
35e2d626a0
commit
dfdc6a33ad
@ -40,6 +40,7 @@ import { TermsModule } from '../../features/terms/terms.module';
|
|||||||
import { CacheModule } from '@nestjs/common';
|
import { CacheModule } from '@nestjs/common';
|
||||||
import { RedisModule } from '../../gateways/redis/redis.module';
|
import { RedisModule } from '../../gateways/redis/redis.module';
|
||||||
import { RedisService } from '../../gateways/redis/redis.service';
|
import { RedisService } from '../../gateways/redis/redis.service';
|
||||||
|
import { JobNumberRepositoryModule } from '../../repositories/job_number/job_number.repository.module';
|
||||||
|
|
||||||
export const makeTestingModule = async (
|
export const makeTestingModule = async (
|
||||||
datasource: DataSource,
|
datasource: DataSource,
|
||||||
@ -79,6 +80,7 @@ export const makeTestingModule = async (
|
|||||||
SortCriteriaRepositoryModule,
|
SortCriteriaRepositoryModule,
|
||||||
WorktypesRepositoryModule,
|
WorktypesRepositoryModule,
|
||||||
TermsRepositoryModule,
|
TermsRepositoryModule,
|
||||||
|
JobNumberRepositoryModule,
|
||||||
RedisModule,
|
RedisModule,
|
||||||
CacheModule.register({ isGlobal: true, ttl: 86400 }),
|
CacheModule.register({ isGlobal: true, ttl: 86400 }),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { License } from '../../repositories/licenses/entity/license.entity';
|
|||||||
import { AccountArchive } from '../../repositories/accounts/entity/account_archive.entity';
|
import { AccountArchive } from '../../repositories/accounts/entity/account_archive.entity';
|
||||||
import { Task } from '../../repositories/tasks/entity/task.entity';
|
import { Task } from '../../repositories/tasks/entity/task.entity';
|
||||||
import { JobNumber } from '../../repositories/job_number/entity/job_number.entity';
|
import { JobNumber } from '../../repositories/job_number/entity/job_number.entity';
|
||||||
|
import { SortCriteria } from '../../repositories/sort_criteria/entity/sort_criteria.entity';
|
||||||
|
|
||||||
type InitialTestDBState = {
|
type InitialTestDBState = {
|
||||||
tier1Accounts: { account: Account; users: User[] }[];
|
tier1Accounts: { account: Account; users: User[] }[];
|
||||||
@ -239,6 +240,11 @@ export const makeTestAccount = async (
|
|||||||
if (!account || !admin) {
|
if (!account || !admin) {
|
||||||
throw new Error('Unexpected null');
|
throw new Error('Unexpected null');
|
||||||
}
|
}
|
||||||
|
// sort_criteriaテーブルにデータを追加
|
||||||
|
await createSortCriteria(datasource, userId, 'JOB_NUMBER', 'ASC');
|
||||||
|
|
||||||
|
// job_numberテーブルにデータを追加
|
||||||
|
await createJobNumber(datasource, accountId, '00000000');
|
||||||
|
|
||||||
return {
|
return {
|
||||||
account: account,
|
account: account,
|
||||||
@ -325,6 +331,8 @@ export const makeTestUser = async (
|
|||||||
if (!user) {
|
if (!user) {
|
||||||
throw new Error('Unexpected null');
|
throw new Error('Unexpected null');
|
||||||
}
|
}
|
||||||
|
// sort_criteriaテーブルにデータを追加
|
||||||
|
await createSortCriteria(datasource, user.id, 'FILE_LENGTH', 'ASC');
|
||||||
return user;
|
return user;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -434,6 +442,33 @@ export const getTasks = async (
|
|||||||
return tasks;
|
return tasks;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// job_numberテーブルにレコードを作成する
|
||||||
|
export const createJobNumber = async (
|
||||||
|
datasource: DataSource,
|
||||||
|
accountId: number,
|
||||||
|
jobNumber: string,
|
||||||
|
): Promise<void> => {
|
||||||
|
await datasource.getRepository(JobNumber).insert({
|
||||||
|
account_id: accountId,
|
||||||
|
job_number: jobNumber,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// job_numberテーブルのレコードを更新する
|
||||||
|
export const updateJobNumber = async (
|
||||||
|
datasource: DataSource,
|
||||||
|
accountId: number,
|
||||||
|
jobNumber: string,
|
||||||
|
): Promise<void> => {
|
||||||
|
await datasource.getRepository(JobNumber).update(
|
||||||
|
{ account_id: accountId },
|
||||||
|
{
|
||||||
|
job_number: jobNumber,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
// job_numberを取得する
|
// job_numberを取得する
|
||||||
export const getJobNumber = async (
|
export const getJobNumber = async (
|
||||||
datasource: DataSource,
|
datasource: DataSource,
|
||||||
@ -446,3 +481,46 @@ export const getJobNumber = async (
|
|||||||
});
|
});
|
||||||
return jobNumber;
|
return jobNumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// sort_criteriaを作成する
|
||||||
|
export const createSortCriteria = async (
|
||||||
|
datasource: DataSource,
|
||||||
|
userId: number,
|
||||||
|
parameter: string,
|
||||||
|
direction: string,
|
||||||
|
): Promise<void> => {
|
||||||
|
await datasource.getRepository(SortCriteria).insert({
|
||||||
|
user_id: userId,
|
||||||
|
parameter: parameter,
|
||||||
|
direction: direction,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 指定したユーザーのsort_criteriaを更新する
|
||||||
|
export const updateSortCriteria = async (
|
||||||
|
datasource: DataSource,
|
||||||
|
userId: number,
|
||||||
|
parameter: string,
|
||||||
|
direction: string,
|
||||||
|
): Promise<void> => {
|
||||||
|
await datasource.getRepository(SortCriteria).update(
|
||||||
|
{ user_id: userId },
|
||||||
|
{
|
||||||
|
parameter: parameter,
|
||||||
|
direction: direction,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 指定したユーザーのsort_criteriaを取得する
|
||||||
|
export const getSortCriteria = async (
|
||||||
|
datasource: DataSource,
|
||||||
|
userId: number,
|
||||||
|
): Promise<SortCriteria | null> => {
|
||||||
|
const sortCriteria = await datasource.getRepository(SortCriteria).findOne({
|
||||||
|
where: {
|
||||||
|
user_id: userId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return sortCriteria;
|
||||||
|
};
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import {
|
|||||||
createWorktype,
|
createWorktype,
|
||||||
getLicenseOrders,
|
getLicenseOrders,
|
||||||
getOptionItems,
|
getOptionItems,
|
||||||
getSortCriteria,
|
getSortCriteriaList,
|
||||||
getTypistGroup,
|
getTypistGroup,
|
||||||
getTypistGroupMember,
|
getTypistGroupMember,
|
||||||
getTypistGroupMembers,
|
getTypistGroupMembers,
|
||||||
@ -42,6 +42,8 @@ import {
|
|||||||
getUserArchive,
|
getUserArchive,
|
||||||
getAccountArchive,
|
getAccountArchive,
|
||||||
getTasks,
|
getTasks,
|
||||||
|
getSortCriteria,
|
||||||
|
getJobNumber,
|
||||||
} from '../../common/test/utility';
|
} from '../../common/test/utility';
|
||||||
import { AccountsService } from './accounts.service';
|
import { AccountsService } from './accounts.service';
|
||||||
import { Context, makeContext } from '../../common/log';
|
import { Context, makeContext } from '../../common/log';
|
||||||
@ -92,10 +94,7 @@ import {
|
|||||||
} from '../workflows/test/utility';
|
} from '../workflows/test/utility';
|
||||||
import { UsersService } from '../users/users.service';
|
import { UsersService } from '../users/users.service';
|
||||||
import { truncateAllTable } from '../../common/test/init';
|
import { truncateAllTable } from '../../common/test/init';
|
||||||
import {
|
import { createTask, getCheckoutPermissions } from '../tasks/test/utility';
|
||||||
createTask,
|
|
||||||
getCheckoutPermissions,
|
|
||||||
} from '../tasks/test/utility';
|
|
||||||
import { createCheckoutPermissions } from '../tasks/test/utility';
|
import { createCheckoutPermissions } from '../tasks/test/utility';
|
||||||
import { TestLogger } from '../../common/test/logger';
|
import { TestLogger } from '../../common/test/logger';
|
||||||
import { Account } from '../../repositories/accounts/entity/account.entity';
|
import { Account } from '../../repositories/accounts/entity/account.entity';
|
||||||
@ -418,7 +417,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(0);
|
expect(accounts.length).toBe(0);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(0);
|
expect(users.length).toBe(0);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(0);
|
expect(sortCriteria.length).toBe(0);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -486,7 +485,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(0);
|
expect(accounts.length).toBe(0);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(0);
|
expect(users.length).toBe(0);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(0);
|
expect(sortCriteria.length).toBe(0);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -557,7 +556,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(0);
|
expect(accounts.length).toBe(0);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(0);
|
expect(users.length).toBe(0);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(0);
|
expect(sortCriteria.length).toBe(0);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -630,7 +629,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(1);
|
expect(accounts.length).toBe(1);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(1);
|
expect(users.length).toBe(1);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(1);
|
expect(sortCriteria.length).toBe(1);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -715,7 +714,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(0);
|
expect(accounts.length).toBe(0);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(0);
|
expect(users.length).toBe(0);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(0);
|
expect(sortCriteria.length).toBe(0);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -803,7 +802,7 @@ describe('createAccount', () => {
|
|||||||
expect(accounts.length).toBe(1);
|
expect(accounts.length).toBe(1);
|
||||||
const users = await getUsers(source);
|
const users = await getUsers(source);
|
||||||
expect(users.length).toBe(1);
|
expect(users.length).toBe(1);
|
||||||
const sortCriteria = await getSortCriteria(source);
|
const sortCriteria = await getSortCriteriaList(source);
|
||||||
expect(sortCriteria.length).toBe(1);
|
expect(sortCriteria.length).toBe(1);
|
||||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||||
expect(b2cService.deleteUser).toBeCalledWith(
|
expect(b2cService.deleteUser).toBeCalledWith(
|
||||||
@ -7227,6 +7226,27 @@ describe('deleteAccountAndData', () => {
|
|||||||
);
|
);
|
||||||
expect(LicenseAllocationHistoryRecordA.length).toBe(0);
|
expect(LicenseAllocationHistoryRecordA.length).toBe(0);
|
||||||
|
|
||||||
|
// 第五階層のアカウントAの管理者ユーザーが持つsortCriteriaが削除されていること
|
||||||
|
const sortCriteriaAccuntAAdmin = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier5AccountsA.admin.id,
|
||||||
|
);
|
||||||
|
expect(sortCriteriaAccuntAAdmin).toBe(null);
|
||||||
|
|
||||||
|
// 第五階層のアカウントAの一般ユーザーが持つsortCriteriaが削除されていること
|
||||||
|
const sortCriteriaAccuntAUser = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
userA?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(sortCriteriaAccuntAUser).toBe(null);
|
||||||
|
|
||||||
|
// 第五階層のアカウントAのJobNumberが削除されていること
|
||||||
|
const jobNumberAccuntA = await getJobNumber(
|
||||||
|
source,
|
||||||
|
tier5AccountsA.account.id,
|
||||||
|
);
|
||||||
|
expect(jobNumberAccuntA).toBe(null);
|
||||||
|
|
||||||
// 第五階層のアカウントBは削除されていないこと
|
// 第五階層のアカウントBは削除されていないこと
|
||||||
const accountRecordB = await getAccount(source, tier5AccountsB.account.id);
|
const accountRecordB = await getAccount(source, tier5AccountsB.account.id);
|
||||||
expect(accountRecordB?.id).not.toBeNull();
|
expect(accountRecordB?.id).not.toBeNull();
|
||||||
@ -7266,6 +7286,31 @@ describe('deleteAccountAndData', () => {
|
|||||||
await getLicenseAllocationHistoryArchive(source);
|
await getLicenseAllocationHistoryArchive(source);
|
||||||
expect(LicenseAllocationHistoryArchive.length).toBe(1);
|
expect(LicenseAllocationHistoryArchive.length).toBe(1);
|
||||||
|
|
||||||
|
// 第五階層のアカウントBの管理者ユーザーが持つsortCriteriaが削除されていないこと
|
||||||
|
const sortCriteriaAccuntBAdmin = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier5AccountsB.admin.id,
|
||||||
|
);
|
||||||
|
expect(sortCriteriaAccuntBAdmin?.user_id).toBe(tier5AccountsB.admin.id);
|
||||||
|
expect(sortCriteriaAccuntBAdmin?.direction).toBe('ASC');
|
||||||
|
expect(sortCriteriaAccuntBAdmin?.parameter).toBe('JOB_NUMBER');
|
||||||
|
// 第五階層のアカウントBの一般ユーザーが持つsortCriteriaが削除されていないこと
|
||||||
|
const sortCriteriaAccuntBUser = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
userB?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(sortCriteriaAccuntBUser?.user_id).toBe(userB?.id ?? 0);
|
||||||
|
expect(sortCriteriaAccuntBUser?.direction).toBe('ASC');
|
||||||
|
expect(sortCriteriaAccuntBUser?.parameter).toBe('FILE_LENGTH');
|
||||||
|
|
||||||
|
// 第五階層のアカウントBのJobNumberが削除されていないこと
|
||||||
|
const jobNumberAccuntB = await getJobNumber(
|
||||||
|
source,
|
||||||
|
tier5AccountsB.account.id,
|
||||||
|
);
|
||||||
|
expect(jobNumberAccuntB?.account_id).toBe(tier5AccountsB.account.id);
|
||||||
|
expect(jobNumberAccuntB?.job_number).toBe('00000000');
|
||||||
|
|
||||||
expect(_subject).toBe('Account Deleted Notification [U-111]');
|
expect(_subject).toBe('Account Deleted Notification [U-111]');
|
||||||
expect(_url).toBe('http://localhost:8081/');
|
expect(_url).toBe('http://localhost:8081/');
|
||||||
});
|
});
|
||||||
@ -8524,6 +8569,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
// パートナーアカウント情報の削除
|
// パートナーアカウント情報の削除
|
||||||
@ -8539,6 +8599,25 @@ describe('deletePartnerAccount', () => {
|
|||||||
expect(account4Record).toBe(null);
|
expect(account4Record).toBe(null);
|
||||||
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
||||||
expect(userRecordA).toBe(null);
|
expect(userRecordA).toBe(null);
|
||||||
|
// パートナーアカウントのユーザーが削除されていること
|
||||||
|
const userRecord = await getUsers(source);
|
||||||
|
expect(
|
||||||
|
userRecord.filter((x) => x.account_id === tier4Account.id).length,
|
||||||
|
).toBe(0);
|
||||||
|
// パートナーアカウントのJobNumberが削除されていること
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber).toBe(null);
|
||||||
|
// パートナーアカウントのソート条件が削除されていること
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria).toBe(null);
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria).toBe(null);
|
||||||
|
|
||||||
// パートナーアカウントのライセンスが削除されていること
|
// パートナーアカウントのライセンスが削除されていること
|
||||||
const licenseRecord = await source.manager.find(License, {
|
const licenseRecord = await source.manager.find(License, {
|
||||||
@ -8716,6 +8795,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -8865,6 +8959,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -9028,6 +9137,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
// パートナーアカウント情報の削除
|
// パートナーアカウント情報の削除
|
||||||
@ -9047,6 +9171,25 @@ describe('deletePartnerAccount', () => {
|
|||||||
expect(account4Record).toBe(null);
|
expect(account4Record).toBe(null);
|
||||||
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
||||||
expect(userRecordA).toBe(null);
|
expect(userRecordA).toBe(null);
|
||||||
|
// パートナーアカウントのユーザーが削除されていること
|
||||||
|
const userRecord = await getUsers(source);
|
||||||
|
expect(
|
||||||
|
userRecord.filter((x) => x.account_id === tier4Account.id).length,
|
||||||
|
).toBe(0);
|
||||||
|
// パートナーアカウントのJobNumberが削除されていること
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber).toBe(null);
|
||||||
|
// パートナーアカウントのソート条件が削除されていること
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria).toBe(null);
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria).toBe(null);
|
||||||
|
|
||||||
// パートナーアカウントのライセンスが削除されていること
|
// パートナーアカウントのライセンスが削除されていること
|
||||||
const licenseRecord = await source.manager.find(License, {
|
const licenseRecord = await source.manager.find(License, {
|
||||||
@ -9234,6 +9377,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
// パートナーアカウント情報の削除
|
// パートナーアカウント情報の削除
|
||||||
@ -9253,6 +9411,25 @@ describe('deletePartnerAccount', () => {
|
|||||||
expect(account4Record).toBe(null);
|
expect(account4Record).toBe(null);
|
||||||
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
||||||
expect(userRecordA).toBe(null);
|
expect(userRecordA).toBe(null);
|
||||||
|
// パートナーアカウントのユーザーが削除されていること
|
||||||
|
const userRecord = await getUsers(source);
|
||||||
|
expect(
|
||||||
|
userRecord.filter((x) => x.account_id === tier4Account.id).length,
|
||||||
|
).toBe(0);
|
||||||
|
// パートナーアカウントのJobNumberが削除されていること
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber).toBe(null);
|
||||||
|
// パートナーアカウントのソート条件が削除されていること
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria).toBe(null);
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria).toBe(null);
|
||||||
|
|
||||||
// パートナーアカウントのライセンスが削除されていること
|
// パートナーアカウントのライセンスが削除されていること
|
||||||
const licenseRecord = await source.manager.find(License, {
|
const licenseRecord = await source.manager.find(License, {
|
||||||
@ -9426,6 +9603,21 @@ describe('deletePartnerAccount', () => {
|
|||||||
tier4Account.id,
|
tier4Account.id,
|
||||||
);
|
);
|
||||||
expect(templateFileRecord.length).toBe(1);
|
expect(templateFileRecord.length).toBe(1);
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber?.job_number).toBe('00000000');
|
||||||
|
expect(tier4AccountJobNumber?.account_id).toBe(tier4Account.id);
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountAdminSortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria?.direction).toBe('ASC');
|
||||||
|
expect(tier4AccountTypistSortCriteria?.parameter).toBe('FILE_LENGTH');
|
||||||
}
|
}
|
||||||
|
|
||||||
// パートナーアカウント情報の削除
|
// パートナーアカウント情報の削除
|
||||||
@ -9441,6 +9633,25 @@ describe('deletePartnerAccount', () => {
|
|||||||
expect(account4Record).toBe(null);
|
expect(account4Record).toBe(null);
|
||||||
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
const userRecordA = await getUser(source, tier4Admin?.id ?? 0);
|
||||||
expect(userRecordA).toBe(null);
|
expect(userRecordA).toBe(null);
|
||||||
|
// パートナーアカウントのユーザーが削除されていること
|
||||||
|
const userRecord = await getUsers(source);
|
||||||
|
expect(
|
||||||
|
userRecord.filter((x) => x.account_id === tier4Account.id).length,
|
||||||
|
).toBe(0);
|
||||||
|
// パートナーアカウントのJobNumberが削除されていること
|
||||||
|
const tier4AccountJobNumber = await getJobNumber(source, tier4Account.id);
|
||||||
|
expect(tier4AccountJobNumber).toBe(null);
|
||||||
|
// パートナーアカウントのソート条件が削除されていること
|
||||||
|
const tier4AccountAdminSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
tier4Admin?.id ?? 0,
|
||||||
|
);
|
||||||
|
expect(tier4AccountAdminSortCriteria).toBe(null);
|
||||||
|
const tier4AccountTypistSortCriteria = await getSortCriteria(
|
||||||
|
source,
|
||||||
|
typist.id,
|
||||||
|
);
|
||||||
|
expect(tier4AccountTypistSortCriteria).toBe(null);
|
||||||
|
|
||||||
// パートナーアカウントのライセンスが削除されていること
|
// パートナーアカウントのライセンスが削除されていること
|
||||||
const licenseRecord = await source.manager.find(License, {
|
const licenseRecord = await source.manager.find(License, {
|
||||||
|
|||||||
@ -2359,7 +2359,7 @@ export class AccountsService {
|
|||||||
country = targetAccount.country;
|
country = targetAccount.country;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// アカウントの削除に失敗した場合はエラーを返す
|
// アカウントの削除に失敗した場合はエラーを返す
|
||||||
this.logger.log(`[${context.getTrackingId()}] ${e}`);
|
this.logger.log(`[${context.getTrackingId()}] error=${e}`);
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`[OUT] [${context.getTrackingId()}] ${this.deleteAccountAndData.name}`,
|
`[OUT] [${context.getTrackingId()}] ${this.deleteAccountAndData.name}`,
|
||||||
);
|
);
|
||||||
@ -2382,7 +2382,7 @@ export class AccountsService {
|
|||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// ADB2Cユーザーの削除失敗時は、MANUAL_RECOVERY_REQUIREDを出して処理続行
|
// ADB2Cユーザーの削除失敗時は、MANUAL_RECOVERY_REQUIREDを出して処理続行
|
||||||
this.logger.log(`[${context.getTrackingId()}] ${e}`);
|
this.logger.log(`[${context.getTrackingId()}] error=${e}`);
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`${MANUAL_RECOVERY_REQUIRED} [${context.getTrackingId()}] Failed to delete ADB2C users: ${accountId}, users_id: ${dbUsers.map(
|
`${MANUAL_RECOVERY_REQUIRED} [${context.getTrackingId()}] Failed to delete ADB2C users: ${accountId}, users_id: ${dbUsers.map(
|
||||||
(x) => x.external_id,
|
(x) => x.external_id,
|
||||||
@ -2398,7 +2398,7 @@ export class AccountsService {
|
|||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// blobstorageコンテナを削除で失敗した場合は、MANUAL_RECOVERY_REQUIRED出して正常終了
|
// blobstorageコンテナを削除で失敗した場合は、MANUAL_RECOVERY_REQUIRED出して正常終了
|
||||||
this.logger.log(`[${context.getTrackingId()}] ${e}`);
|
this.logger.log(`[${context.getTrackingId()}] error=${e}`);
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`${MANUAL_RECOVERY_REQUIRED}[${context.getTrackingId()}] Failed to delete blob container: ${accountId}, country: ${country}`,
|
`${MANUAL_RECOVERY_REQUIRED}[${context.getTrackingId()}] Failed to delete blob container: ${accountId}, country: ${country}`,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import { AudioFile } from '../../../repositories/audio_files/entity/audio_file.e
|
|||||||
* @param dataSource データソース
|
* @param dataSource データソース
|
||||||
* @returns 該当ソート条件一覧
|
* @returns 該当ソート条件一覧
|
||||||
*/
|
*/
|
||||||
export const getSortCriteria = async (dataSource: DataSource) => {
|
export const getSortCriteriaList = async (dataSource: DataSource) => {
|
||||||
return await dataSource.getRepository(SortCriteria).find();
|
return await dataSource.getRepository(SortCriteria).find();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { DataSource } from 'typeorm';
|
|||||||
import { Term } from '../../../repositories/terms/entity/term.entity';
|
import { Term } from '../../../repositories/terms/entity/term.entity';
|
||||||
import { Account } from '../../../repositories/accounts/entity/account.entity';
|
import { Account } from '../../../repositories/accounts/entity/account.entity';
|
||||||
import { User } from '../../../repositories/users/entity/user.entity';
|
import { User } from '../../../repositories/users/entity/user.entity';
|
||||||
|
import { JobNumber } from '../../../repositories/job_number/entity/job_number.entity';
|
||||||
|
|
||||||
export const createTermInfo = async (
|
export const createTermInfo = async (
|
||||||
datasource: DataSource,
|
datasource: DataSource,
|
||||||
@ -34,5 +35,6 @@ export const deleteAccount = async (
|
|||||||
id: number,
|
id: number,
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
await dataSource.getRepository(User).delete({ account_id: id });
|
await dataSource.getRepository(User).delete({ account_id: id });
|
||||||
|
await dataSource.getRepository(JobNumber).delete({ account_id: id });
|
||||||
await dataSource.getRepository(Account).delete({ id: id });
|
await dataSource.getRepository(Account).delete({ id: id });
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,7 +3,6 @@ import { makeErrorResponse } from '../../common/error/makeErrorResponse';
|
|||||||
import { makeBlobstorageServiceMockValue } from './test/files.service.mock';
|
import { makeBlobstorageServiceMockValue } from './test/files.service.mock';
|
||||||
import { DataSource } from 'typeorm';
|
import { DataSource } from 'typeorm';
|
||||||
import {
|
import {
|
||||||
createJobNumber,
|
|
||||||
createLicense,
|
createLicense,
|
||||||
createTask,
|
createTask,
|
||||||
createUserGroupAndMember,
|
createUserGroupAndMember,
|
||||||
@ -14,12 +13,14 @@ import {
|
|||||||
import { FilesService } from './files.service';
|
import { FilesService } from './files.service';
|
||||||
import { makeContext } from '../../common/log';
|
import { makeContext } from '../../common/log';
|
||||||
import {
|
import {
|
||||||
|
createJobNumber,
|
||||||
getJobNumber,
|
getJobNumber,
|
||||||
getTasks,
|
getTasks,
|
||||||
makeHierarchicalAccounts,
|
makeHierarchicalAccounts,
|
||||||
makeTestAccount,
|
makeTestAccount,
|
||||||
makeTestSimpleAccount,
|
makeTestSimpleAccount,
|
||||||
makeTestUser,
|
makeTestUser,
|
||||||
|
updateJobNumber,
|
||||||
} from '../../common/test/utility';
|
} from '../../common/test/utility';
|
||||||
import { makeTestingModule } from '../../common/test/modules';
|
import { makeTestingModule } from '../../common/test/modules';
|
||||||
import {
|
import {
|
||||||
@ -858,8 +859,8 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最新のジョブナンバーでjob_numberテーブルを作成
|
// 最新のジョブナンバーでjob_numberテーブルを更新
|
||||||
await createJobNumber(source, accountId, '00000003');
|
await updateJobNumber(source, accountId, '00000003');
|
||||||
|
|
||||||
const service = module.get<FilesService>(FilesService);
|
const service = module.get<FilesService>(FilesService);
|
||||||
const spy = jest
|
const spy = jest
|
||||||
@ -944,8 +945,8 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最新のジョブナンバーでjob_numberテーブルを作成
|
// 最新のジョブナンバーでjob_numberテーブルを更新
|
||||||
await createJobNumber(source, accountId, '00000003');
|
await updateJobNumber(source, accountId, '00000003');
|
||||||
|
|
||||||
const service = module.get<FilesService>(FilesService);
|
const service = module.get<FilesService>(FilesService);
|
||||||
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
||||||
@ -1033,8 +1034,8 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最新のジョブナンバーでjob_numberテーブルを作成
|
// 最新のジョブナンバーでjob_numberテーブルを更新
|
||||||
await createJobNumber(source, accountId, '00000004');
|
await updateJobNumber(source, accountId, '00000004');
|
||||||
|
|
||||||
const service = module.get<FilesService>(FilesService);
|
const service = module.get<FilesService>(FilesService);
|
||||||
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
||||||
@ -1127,8 +1128,8 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最新のジョブナンバーでjob_numberテーブルを作成
|
// 最新のジョブナンバーでjob_numberテーブルを更新
|
||||||
await createJobNumber(source, accountId, '00000004');
|
await updateJobNumber(source, accountId, '00000004');
|
||||||
|
|
||||||
const service = module.get<FilesService>(FilesService);
|
const service = module.get<FilesService>(FilesService);
|
||||||
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
// メール送信関数が呼ばれたかどうかで判定を行う。実際のメール送信は行わない。
|
||||||
@ -2335,8 +2336,6 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
|||||||
expect(jobNumber?.job_number).toEqual('99999999');
|
expect(jobNumber?.job_number).toEqual('99999999');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const module = await makeTestingModuleWithBlobAndNotification(
|
const module = await makeTestingModuleWithBlobAndNotification(
|
||||||
source,
|
source,
|
||||||
blobParam,
|
blobParam,
|
||||||
|
|||||||
@ -110,18 +110,6 @@ export const createTask = async (
|
|||||||
return { audioFileId: audioFile.id, taskId: task.id };
|
return { audioFileId: audioFile.id, taskId: task.id };
|
||||||
};
|
};
|
||||||
|
|
||||||
// job_numberテーブルにレコードを作成する
|
|
||||||
export const createJobNumber = async (
|
|
||||||
datasource: DataSource,
|
|
||||||
accountId: number,
|
|
||||||
jobNumber: string,
|
|
||||||
): Promise<void> => {
|
|
||||||
await datasource.getRepository(JobNumber).insert({
|
|
||||||
account_id: accountId,
|
|
||||||
job_number: jobNumber,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getTaskFromJobNumber = async (
|
export const getTaskFromJobNumber = async (
|
||||||
datasource: DataSource,
|
datasource: DataSource,
|
||||||
jobNumber: string,
|
jobNumber: string,
|
||||||
|
|||||||
@ -24,9 +24,11 @@ import {
|
|||||||
import { Adb2cTooManyRequestsError } from '../../gateways/adb2c/adb2c.service';
|
import { Adb2cTooManyRequestsError } from '../../gateways/adb2c/adb2c.service';
|
||||||
import { makeContext } from '../../common/log';
|
import { makeContext } from '../../common/log';
|
||||||
import {
|
import {
|
||||||
|
createSortCriteria,
|
||||||
makeTestAccount,
|
makeTestAccount,
|
||||||
makeTestSimpleAccount,
|
makeTestSimpleAccount,
|
||||||
makeTestUser,
|
makeTestUser,
|
||||||
|
updateSortCriteria,
|
||||||
} from '../../common/test/utility';
|
} from '../../common/test/utility';
|
||||||
import {
|
import {
|
||||||
ADMIN_ROLES,
|
ADMIN_ROLES,
|
||||||
@ -36,7 +38,6 @@ import {
|
|||||||
USER_ROLES,
|
USER_ROLES,
|
||||||
} from '../../constants';
|
} from '../../constants';
|
||||||
import { makeTestingModule } from '../../common/test/modules';
|
import { makeTestingModule } from '../../common/test/modules';
|
||||||
import { createSortCriteria } from '../users/test/utility';
|
|
||||||
import { createWorktype } from '../accounts/test/utility';
|
import { createWorktype } from '../accounts/test/utility';
|
||||||
import {
|
import {
|
||||||
createWorkflow,
|
createWorkflow,
|
||||||
@ -3863,7 +3864,7 @@ describe('getNextTask', () => {
|
|||||||
role: USER_ROLES.TYPIST,
|
role: USER_ROLES.TYPIST,
|
||||||
});
|
});
|
||||||
|
|
||||||
await createSortCriteria(source, typistUserId, 'JOB_NUMBER', 'ASC');
|
await updateSortCriteria(source, typistUserId, 'JOB_NUMBER', 'ASC');
|
||||||
|
|
||||||
const { taskId: taskId1 } = await createTask(
|
const { taskId: taskId1 } = await createTask(
|
||||||
source,
|
source,
|
||||||
@ -4007,7 +4008,7 @@ describe('getNextTask', () => {
|
|||||||
role: USER_ROLES.TYPIST,
|
role: USER_ROLES.TYPIST,
|
||||||
});
|
});
|
||||||
|
|
||||||
await createSortCriteria(source, typistUserId, 'JOB_NUMBER', 'ASC');
|
await updateSortCriteria(source, typistUserId, 'JOB_NUMBER', 'ASC');
|
||||||
|
|
||||||
const { taskId: taskId1, audioFileId: audioFileId1 } = await createTask(
|
const { taskId: taskId1, audioFileId: audioFileId1 } = await createTask(
|
||||||
source,
|
source,
|
||||||
|
|||||||
@ -263,7 +263,6 @@ export const getTask = async (
|
|||||||
return task;
|
return task;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export const getCheckoutPermissions = async (
|
export const getCheckoutPermissions = async (
|
||||||
datasource: DataSource,
|
datasource: DataSource,
|
||||||
task_id: number,
|
task_id: number,
|
||||||
|
|||||||
@ -6,7 +6,11 @@ import {
|
|||||||
getTemplateFiles,
|
getTemplateFiles,
|
||||||
updateTaskTemplateFile,
|
updateTaskTemplateFile,
|
||||||
} from './test/utility';
|
} from './test/utility';
|
||||||
import { getTasks, makeTestAccount, makeTestUser } from '../../common/test/utility';
|
import {
|
||||||
|
getTasks,
|
||||||
|
makeTestAccount,
|
||||||
|
makeTestUser,
|
||||||
|
} from '../../common/test/utility';
|
||||||
import { makeContext } from '../../common/log';
|
import { makeContext } from '../../common/log';
|
||||||
import { TemplateFilesRepositoryService } from '../../repositories/template_files/template_files.repository.service';
|
import { TemplateFilesRepositoryService } from '../../repositories/template_files/template_files.repository.service';
|
||||||
import { HttpException, HttpStatus } from '@nestjs/common';
|
import { HttpException, HttpStatus } from '@nestjs/common';
|
||||||
|
|||||||
@ -165,16 +165,3 @@ export const makeTestingModuleWithAdb2c = async (
|
|||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createSortCriteria = async (
|
|
||||||
datasource: DataSource,
|
|
||||||
userId: number,
|
|
||||||
parameter: string,
|
|
||||||
direction: string,
|
|
||||||
): Promise<void> => {
|
|
||||||
await datasource.getRepository(SortCriteria).insert({
|
|
||||||
user_id: userId,
|
|
||||||
parameter: parameter,
|
|
||||||
direction: direction,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|||||||
@ -67,6 +67,7 @@ import {
|
|||||||
PartnerLicenseInfoForRepository,
|
PartnerLicenseInfoForRepository,
|
||||||
} from '../../features/accounts/types/types';
|
} from '../../features/accounts/types/types';
|
||||||
import { AccountArchive } from './entity/account_archive.entity';
|
import { AccountArchive } from './entity/account_archive.entity';
|
||||||
|
import { JobNumber } from '../job_number/entity/job_number.entity';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AccountsRepositoryService {
|
export class AccountsRepositoryService {
|
||||||
@ -1245,6 +1246,15 @@ export class AccountsRepositoryService {
|
|||||||
context,
|
context,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// jobNumberのテーブルのレコードを削除する
|
||||||
|
const jobNumberRepo = entityManager.getRepository(JobNumber);
|
||||||
|
await deleteEntity(
|
||||||
|
jobNumberRepo,
|
||||||
|
{ account_id: accountId },
|
||||||
|
this.isCommentOut,
|
||||||
|
context,
|
||||||
|
);
|
||||||
|
|
||||||
// アカウントを削除
|
// アカウントを削除
|
||||||
await deleteEntity(
|
await deleteEntity(
|
||||||
accountRepo,
|
accountRepo,
|
||||||
@ -1624,6 +1634,15 @@ export class AccountsRepositoryService {
|
|||||||
context,
|
context,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// JobNumberのテーブルのレコードを削除する
|
||||||
|
const jobNumberRepo = entityManager.getRepository(JobNumber);
|
||||||
|
await deleteEntity(
|
||||||
|
jobNumberRepo,
|
||||||
|
{ account_id: targetAccountId },
|
||||||
|
this.isCommentOut,
|
||||||
|
context,
|
||||||
|
);
|
||||||
|
|
||||||
// アカウントを削除
|
// アカウントを削除
|
||||||
await deleteEntity(
|
await deleteEntity(
|
||||||
accountRepo,
|
accountRepo,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user