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なので、ライセンスが更新されていないことを確認