Skip to content

Commit b44ac1c

Browse files
committed
Booking reference generation behind feature flag
1 parent 424e9d4 commit b44ac1c

2 files changed

Lines changed: 18 additions & 7 deletions

File tree

src/api/Nhs.Appointments.Core/BookingWriteService.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using Newtonsoft.Json.Linq;
22
using Nhs.Appointments.Core.Concurrency;
3+
using Nhs.Appointments.Core.Features;
34
using Nhs.Appointments.Core.Messaging;
45
using Nhs.Appointments.Core.Messaging.Events;
5-
using Nhs.Appointments.Core.ReferenceNumber;
66
using Nhs.Appointments.Core.ReferenceNumber.V1;
77
using Nhs.Appointments.Core.ReferenceNumber.V2;
88

@@ -51,7 +51,8 @@ public class BookingWriteService(
5151
IBookingAvailabilityStateService bookingAvailabilityStateService,
5252
IBookingEventFactory eventFactory,
5353
IMessageBus bus,
54-
TimeProvider time) : IBookingWriteService
54+
TimeProvider time,
55+
IFeatureToggleHelper featureToggleHelper) : IBookingWriteService
5556
{
5657
private static readonly ContactItemType[] ValidNotificationTypes =
5758
[ContactItemType.Email, ContactItemType.Phone];
@@ -74,10 +75,16 @@ public class BookingWriteService(
7475
}
7576

7677
booking.Created = time.GetUtcNow();
78+
79+
if (await featureToggleHelper.IsFeatureEnabled(Flags.BookingReferenceV2))
80+
{
81+
booking.Reference = await referenceNumberProviderV2.GetReferenceNumber();
82+
}
83+
else
84+
{
85+
booking.Reference = await referenceNumberProviderV1.GetReferenceNumber(booking.Site);
86+
}
7787

78-
booking.Reference = await referenceNumberProviderV1.GetReferenceNumber(booking.Site);
79-
80-
booking.Reference = await referenceNumberProviderV2.GetReferenceNumber();
8188
booking.ReminderSent = false;
8289
booking.AvailabilityStatus = AvailabilityStatus.Supported;
8390
await bookingDocumentStore.InsertAsync(booking);

tests/Nhs.Appointments.Core.UnitTests/BookingWriteServiceTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Nhs.Appointments.Core.Concurrency;
2+
using Nhs.Appointments.Core.Features;
23
using Nhs.Appointments.Core.Messaging;
34
using Nhs.Appointments.Core.Messaging.Events;
45
using Nhs.Appointments.Core.ReferenceNumber;
@@ -21,6 +22,8 @@ public class BookingWriteServiceTests
2122
private readonly Mock<IReferenceNumberProvider> _referenceNumberProviderV1 = new();
2223
private readonly Mock<IProvider> _referenceNumberProviderV2 = new();
2324

25+
private readonly Mock<IFeatureToggleHelper> _featureToggleHelper = new();
26+
2427
private readonly Mock<ISiteLeaseManager> _siteLeaseManager = new();
2528
private BookingWriteService _sut;
2629

@@ -35,7 +38,8 @@ public BookingWriteServiceTests()
3538
_bookingAvailabilityStateService.Object,
3639
new EventFactory(),
3740
_messageBus.Object,
38-
TimeProvider.System);
41+
TimeProvider.System,
42+
_featureToggleHelper.Object);
3943
}
4044

4145
[Fact]
@@ -67,7 +71,7 @@ public async Task MakeBooking_AcquiresLock_WhenBooking()
6771
_referenceNumberProviderV1.Object,
6872
_referenceNumberProviderV2.Object,
6973
leaseManager, new BookingAvailabilityStateService(availabilityQueryService, bookingQueryService),
70-
new EventFactory(), _messageBus.Object, TimeProvider.System);
74+
new EventFactory(), _messageBus.Object, TimeProvider.System, _featureToggleHelper.Object);
7175

7276
var task = Task.Run(() => bookingService.MakeBooking(booking));
7377
await Task.Delay(100);

0 commit comments

Comments
 (0)