Merged PR 895: API修正(アカウント作成系)
## 概要 [Task4043: API修正(アカウント作成系)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/4043) - アカウント作成時にJobNumberの初期値を設定するように修正 - パートナーアカウント作成時にJobNumberの初期値を設定するように修正 - リカバリ処理にJobNumberのレコード削除を追加 - テスト修正 ## レビューポイント - JobNumber作成処理の追加する箇所に問題はないか - テストケースに不足はないか ## クエリの変更 - Repositoryを変更し、クエリが変更された場合は変更内容を確認する - Before/Afterのクエリ - 既存のクエリに修正はなし ## 動作確認状況 - ローカルで確認 - 行った修正がデグレを発生させていないことを確認できるか - 具体的にどのような確認をしたか - 既存テストが通ることを確認 - パートナーアカウント作成のテストにメール送信内容のチェックを追加 - ソート条件が作成・削除されていることを確認するテストを追加 ## 補足 - 相談、参考資料などがあれば
This commit is contained in:
parent
dfdc6a33ad
commit
fe5e8b8e1c
@ -454,7 +454,6 @@ export const createJobNumber = async (
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// job_numberテーブルのレコードを更新する
|
||||
export const updateJobNumber = async (
|
||||
datasource: DataSource,
|
||||
|
||||
@ -339,3 +339,16 @@ export const STORAGE_SIZE_PER_LICENSE = 5;
|
||||
* @const {number}
|
||||
*/
|
||||
export const STORAGE_WARNING_THRESHOLD_PERCENT = 80;
|
||||
|
||||
/**
|
||||
* JobNumberの初期値
|
||||
* @const {string}
|
||||
*/
|
||||
export const INITIAL_JOB_NUMBER = '00000000';
|
||||
|
||||
|
||||
/**
|
||||
* JobNumberの最大値
|
||||
* @const {string}
|
||||
*/
|
||||
export const MAX_JOB_NUMBER = '99999999';
|
||||
|
||||
@ -49,6 +49,7 @@ import { AccountsService } from './accounts.service';
|
||||
import { Context, makeContext } from '../../common/log';
|
||||
import {
|
||||
ADB2C_SIGN_IN_TYPE,
|
||||
INITIAL_JOB_NUMBER,
|
||||
LICENSE_ALLOCATED_STATUS,
|
||||
LICENSE_ISSUE_STATUS,
|
||||
LICENSE_TYPE,
|
||||
@ -223,6 +224,16 @@ describe('createAccount', () => {
|
||||
expect(user?.account_id).toBe(accountId);
|
||||
expect(user?.role).toBe(role);
|
||||
|
||||
// jobNumberの初期値が正しく設定されているか確認
|
||||
const jobNumber = await getJobNumber(source, accountId);
|
||||
expect(jobNumber?.job_number).toBe(INITIAL_JOB_NUMBER);
|
||||
|
||||
// sortCriteriaが正しく設定されているか確認
|
||||
const sortCriteria = await getSortCriteria(source, user?.id ?? 0);
|
||||
expect(sortCriteria?.user_id).toBe(user?.id);
|
||||
expect(sortCriteria?.direction).toBe('ASC');
|
||||
expect(sortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||
|
||||
// 想定通りのメールが送られているか確認
|
||||
expect(_subject).toBe('User Registration Notification [U-102]');
|
||||
expect(
|
||||
@ -878,7 +889,26 @@ describe('createPartnerAccount', () => {
|
||||
},
|
||||
});
|
||||
|
||||
overrideSendgridService(service, {});
|
||||
let _subject = '';
|
||||
let _url: string | undefined = '';
|
||||
overrideSendgridService(service, {
|
||||
sendMail: async (
|
||||
context: Context,
|
||||
to: string[],
|
||||
cc: string[],
|
||||
from: string,
|
||||
subject: string,
|
||||
text: string,
|
||||
html: string,
|
||||
) => {
|
||||
const urlPattern = /https?:\/\/[^\s]+/g;
|
||||
const urls = text.match(urlPattern);
|
||||
const url = urls?.pop();
|
||||
|
||||
_subject = subject;
|
||||
_url = url;
|
||||
},
|
||||
});
|
||||
|
||||
overrideBlobstorageService(service, {
|
||||
createContainer: async () => {
|
||||
@ -918,6 +948,19 @@ describe('createPartnerAccount', () => {
|
||||
expect(createdAccount?.tier).toBe(2);
|
||||
expect(createdAccount?.primary_admin_user_id).toBe(createdUser?.id);
|
||||
expect(createdAccount?.secondary_admin_user_id).toBe(null);
|
||||
const sortCriteria = await getSortCriteria(source, createdUser?.id ?? 0);
|
||||
expect(sortCriteria).not.toBeNull();
|
||||
expect(sortCriteria?.user_id).toBe(createdUser?.id);
|
||||
expect(sortCriteria?.direction).toBe('ASC');
|
||||
expect(sortCriteria?.parameter).toBe('JOB_NUMBER');
|
||||
const jobNumber = await getJobNumber(source, accountId);
|
||||
expect(jobNumber?.job_number).toBe(INITIAL_JOB_NUMBER);
|
||||
|
||||
// 想定通りのメールが送られているか確認
|
||||
expect(_subject).toBe('User Registration Notification [U-114]');
|
||||
expect(
|
||||
_url?.startsWith('http://localhost:8081/mail-confirm/user?verify='),
|
||||
).toBeTruthy();
|
||||
}
|
||||
});
|
||||
|
||||
@ -1308,6 +1351,10 @@ describe('createPartnerAccount', () => {
|
||||
expect(users.length).toBe(2);
|
||||
expect(users[0].external_id).toBe(parentExternalId);
|
||||
expect(users[1].external_id).toBe(partnerExternalId);
|
||||
const sortCriteria = await getSortCriteriaList(source);
|
||||
expect(sortCriteria.length).toBe(2);
|
||||
const jobNumber = await getJobNumber(source, accounts[1].id);
|
||||
expect(jobNumber?.job_number).toBe(INITIAL_JOB_NUMBER);
|
||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||
expect(b2cService.deleteUser).toBeCalledWith(partnerExternalId, context);
|
||||
}
|
||||
@ -1487,6 +1534,10 @@ describe('createPartnerAccount', () => {
|
||||
expect(users.length).toBe(2);
|
||||
expect(users[0].external_id).toBe(parentExternalId);
|
||||
expect(users[1].external_id).toBe(partnerExternalId);
|
||||
const sortCriteria = await getSortCriteriaList(source);
|
||||
expect(sortCriteria.length).toBe(2);
|
||||
const jobNumber = await getJobNumber(source, accounts[1].id);
|
||||
expect(jobNumber?.job_number).toBe(INITIAL_JOB_NUMBER);
|
||||
// ADB2Cユーザー削除メソッドが呼ばれているか確認
|
||||
expect(b2cService.deleteUser).toBeCalledWith(partnerExternalId, context);
|
||||
// コンテナ削除メソッドが呼ばれているか確認
|
||||
|
||||
@ -26,6 +26,7 @@ import {
|
||||
getTaskListSortableAttribute,
|
||||
} from '../../common/types/sort/util';
|
||||
import {
|
||||
INITIAL_JOB_NUMBER,
|
||||
LICENSE_ALLOCATED_STATUS,
|
||||
LICENSE_EXPIRATION_THRESHOLD_DAYS,
|
||||
LICENSE_ISSUE_STATUS,
|
||||
@ -210,6 +211,20 @@ export class AccountsRepositoryService {
|
||||
throw new Error(`invalid update. result.affected=${result.affected}`);
|
||||
}
|
||||
|
||||
// job_numberの初期値を設定
|
||||
const jobNumberRepo = entityManager.getRepository(JobNumber);
|
||||
const initialJobNumber = jobNumberRepo.create({
|
||||
account_id: persistedAccount.id,
|
||||
job_number: INITIAL_JOB_NUMBER,
|
||||
});
|
||||
await insertEntity(
|
||||
JobNumber,
|
||||
jobNumberRepo,
|
||||
initialJobNumber,
|
||||
this.isCommentOut,
|
||||
context,
|
||||
);
|
||||
|
||||
// ユーザーのタスクソート条件を作成
|
||||
const sortCriteria = new SortCriteria();
|
||||
{
|
||||
@ -245,6 +260,14 @@ export class AccountsRepositoryService {
|
||||
const accountsRepo = entityManager.getRepository(Account);
|
||||
const usersRepo = entityManager.getRepository(User);
|
||||
const sortCriteriaRepo = entityManager.getRepository(SortCriteria);
|
||||
const jobNumberRepo = entityManager.getRepository(JobNumber);
|
||||
// JobNumberを削除
|
||||
await deleteEntity(
|
||||
jobNumberRepo,
|
||||
{ account_id: accountId },
|
||||
this.isCommentOut,
|
||||
context,
|
||||
);
|
||||
// ソート条件を削除
|
||||
await deleteEntity(
|
||||
sortCriteriaRepo,
|
||||
|
||||
@ -12,6 +12,7 @@ import {
|
||||
import { Task } from './entity/task.entity';
|
||||
import {
|
||||
ADMIN_ROLES,
|
||||
MAX_JOB_NUMBER,
|
||||
NODE_ENV_TEST,
|
||||
TASK_STATUS,
|
||||
USER_ROLES,
|
||||
@ -921,7 +922,7 @@ export class TasksRepositoryService {
|
||||
}
|
||||
|
||||
let newJobNumber: string = '';
|
||||
if (currentJobNumberData.job_number === '99999999') {
|
||||
if (currentJobNumberData.job_number === MAX_JOB_NUMBER) {
|
||||
// 末尾なら00000001に戻る
|
||||
newJobNumber = '00000001';
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user