From 0a9f125d761243abf3f755b53a8fd5ed8fe46426 Mon Sep 17 00:00:00 2001 From: "maruyama.t" Date: Thu, 28 Dec 2023 04:27:19 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20668:=20=E6=9C=89=E5=8A=B9?= =?UTF-8?q?=E6=9C=9F=E9=99=90=EF=BC=9E=E7=BF=8C=E6=97=A5=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B=E3=81=AE=E3=82=92=EF=BC=9E?= =?UTF-8?q?=E5=BD=93=E6=97=A5=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3421: 有効期限>翌日になっているのを>当日に修正する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3421) - 有効期限>翌日になっているのを>当日に修正 翌日が有効期限のものは割り当ての対象とする。 念のためテストケースを追加 ## レビューポイント - とくになし ## 動作確認状況 - ローカルで確認 ## 補足 - 相談、参考資料などがあれば --- .../src/functions/licenseAutoAllocation.ts | 4 +- .../src/test/licenseAutoAllocation.spec.ts | 60 +++++++++++++++---- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/dictation_function/src/functions/licenseAutoAllocation.ts b/dictation_function/src/functions/licenseAutoAllocation.ts index b3b868b..b4b623f 100644 --- a/dictation_function/src/functions/licenseAutoAllocation.ts +++ b/dictation_function/src/functions/licenseAutoAllocation.ts @@ -13,7 +13,6 @@ import { } from "../constants"; import { DateWithDayEndTime, - DateWithNextDayEndTime, DateWithZeroTime, NewAllocatedLicenseExpirationDate, } from "../common/types/types"; @@ -215,7 +214,6 @@ export async function getAutoAllocatableLicense( ): Promise { try { context.log("[IN]getAutoAllocatableLicense"); - const currentNextDateTime = new DateWithNextDayEndTime(currentDateEndTime); // 割り当て可能なライセンスを取得 const license = await licenseRepository.findOne({ where: { @@ -224,7 +222,7 @@ export async function getAutoAllocatableLicense( LICENSE_ALLOCATED_STATUS.REUSABLE, LICENSE_ALLOCATED_STATUS.UNALLOCATED, ]), - expiry_date: MoreThan(currentNextDateTime) || null, + expiry_date: MoreThan(currentDateEndTime) || null, }, order: { expiry_date: "ASC", diff --git a/dictation_function/src/test/licenseAutoAllocation.spec.ts b/dictation_function/src/test/licenseAutoAllocation.spec.ts index 0e1bb92..170862a 100644 --- a/dictation_function/src/test/licenseAutoAllocation.spec.ts +++ b/dictation_function/src/test/licenseAutoAllocation.spec.ts @@ -81,6 +81,16 @@ describe("licenseAutoAllocation", () => { role: `${USER_ROLES.NONE}`, auto_renew: false, }); + // 更新対象のユーザー(Author二人目) + const user6 = await makeTestUser(source, { + account_id: account1.account.id, + role: `${USER_ROLES.AUTHOR}`, + }); + // 更新対象のユーザー(ただしライセンスが足りない) + const user7 = await makeTestUser(source, { + account_id: account1.account.id, + role: `${USER_ROLES.NONE}`, + }); // 割り当て済みで有効期限が本日のライセンス await createLicense( @@ -143,6 +153,30 @@ describe("licenseAutoAllocation", () => { null, null ); + await createLicense( + source, + 6, + currentDateEndTime, + account1.account.id, + LICENSE_TYPE.CARD, + LICENSE_ALLOCATED_STATUS.ALLOCATED, + user6.id, + null, + null, + null + ); + await createLicense( + source, + 7, + currentDateEndTime, + account1.account.id, + LICENSE_TYPE.CARD, + LICENSE_ALLOCATED_STATUS.ALLOCATED, + user7.id, + null, + null, + null + ); // 割り当て済みの更新対象ではないライセンス const nextDate = new Date(); @@ -163,9 +197,9 @@ describe("licenseAutoAllocation", () => { ); // 有効期限が先の未割当ライセンスを作成 - // idが100,101のものは有効期限が当日、翌日なので自動割り当て対象外 - // idが102のものから割り当てられる - for (let i = 0; i < 10; i++) { + // idが100のものは有効期限が当日なので自動割り当て対象外 + // idが101のものから割り当てられる + for (let i = 0; i < 5; i++) { const date = new Date(); date.setDate(date.getDate() + i); date.setHours(23, 59, 59); // 時分秒を"23:59:59"に固定 @@ -207,6 +241,8 @@ describe("licenseAutoAllocation", () => { const user3Allocated = await selectLicenseByAllocatedUser(source, user3.id); const user4Allocated = await selectLicenseByAllocatedUser(source, user4.id); const user5Allocated = await selectLicenseByAllocatedUser(source, user5.id); + const user6Allocated = await selectLicenseByAllocatedUser(source, user6.id); + const user7Allocated = await selectLicenseByAllocatedUser(source, user7.id); const admin2Allocated = await selectLicenseByAllocatedUser( source, account2.admin.id @@ -218,12 +254,16 @@ describe("licenseAutoAllocation", () => { ); // Author、Typist、Noneの優先順位で割り当てられていることを確認 expect(user1Allocated.license?.id).toBe(104); - expect(user2Allocated.license?.id).toBe(102); + expect(user2Allocated.license?.id).toBe(101); expect(user3Allocated.license?.id).toBe(103); // 有効期限がまだあるので、ライセンスが更新されていないことを確認 expect(user4Allocated.license?.id).toBe(4); // auto_renewがfalseなので、ライセンスが更新されていないことを確認 expect(user5Allocated.license?.id).toBe(5); + // 複数Authorがいる場合、それぞれに割り当てられていることを確認 + expect(user6Allocated.license?.id).toBe(102); + // ライセンスが足りない場合、ライセンスが更新されていないことを確認 + expect(user7Allocated.license?.id).toBe(7); // 複数アカウント分の処理が正常に行われていることの確認 expect(admin2Allocated.license?.id).toBe(200); @@ -369,8 +409,8 @@ describe("licenseAutoAllocation", () => { ); // 有効期限が先の未割当ライセンスを作成 - // idが100,101のものは有効期限が当日、翌日なので自動割り当て対象外 - // idが102のものから割り当てられる + // idが100のものは有効期限が当日なので自動割り当て対象外 + // idが101のものから割り当てられる for (let i = 0; i < 10; i++) { const date = new Date(); date.setDate(dateSeptember22.getDate() + i); @@ -420,12 +460,12 @@ describe("licenseAutoAllocation", () => { const licenseAllocationHistory = await selectLicenseAllocationHistory( source, user1.id, - 104 + 103 ); // Author、Typist、Noneの優先順位で割り当てられていることを確認 - expect(user1Allocated.license?.id).toBe(104); - expect(user2Allocated.license?.id).toBe(102); - expect(user3Allocated.license?.id).toBe(103); + expect(user1Allocated.license?.id).toBe(103); + expect(user2Allocated.license?.id).toBe(101); + expect(user3Allocated.license?.id).toBe(102); // 有効期限がまだあるので、ライセンスが更新されていないことを確認 expect(user4Allocated.license?.id).toBe(4); // auto_renewがfalseなので、ライセンスが更新されていないことを確認