public void WorkOrderResponseMaps() { var workOrder = new Helpers.StubGeneration.Generator <WorkOrder>() .AddDefaultGenerators() .Generate(); AppointmentDetails appointment = new AppointmentDetails { Date = DateTime.UtcNow, Description = "test", End = DateTime.UtcNow, Start = DateTime.UtcNow }; var response = workOrder.ToResponse(appointment, new Uri("https://managementAddress.none"), canAssignOperative: false); PropertyClass propertyClass = workOrder.Site?.PropertyClass.FirstOrDefault(); string addressLine = propertyClass?.Address?.AddressLine; response.CallerNumber.Should().Be(workOrder.Customer.Person.Communication.Where(cc => cc.Channel.Medium == RepairsApi.V2.Generated.CommunicationMediumCode._20).FirstOrDefault()?.Value); response.CallerName.Should().Be(workOrder.Customer.Person.Name.Full); response.DateRaised.Should().Be(workOrder.DateRaised); response.Description.Should().Be(workOrder.DescriptionOfWork); response.Owner.Should().Be(workOrder.AssignedToPrimary.Name); response.Priority.Should().Be(workOrder.WorkPriority.PriorityDescription); response.PriorityCode.Should().Be(workOrder.WorkPriority.PriorityCode); response.Property.Should().Be(addressLine); response.PropertyReference.Should().Be(workOrder.Site?.PropertyClass.FirstOrDefault()?.PropertyReference); response.Reference.Should().Be(workOrder.Id); response.Target.Should().Be(workOrder.WorkPriority.RequiredCompletionDateTime); response.Property.Should().Be(addressLine); response.ExternalAppointmentManagementUrl.ToString().Should().Contain(workOrder.ExternalSchedulerReference); response.CanAssignOperative.Should().BeFalse(); response.PlannerComments.Should().Be(workOrder.PlannerComments); }
private order GenerateDrsOrder(int expectedOrderNumber) { var index = 1; var bookingCodesGenerator = new Helpers.StubGeneration.Generator <bookingCode[]>() .AddDefaultGenerators() .AddValue(_fixture.Create <int>().ToString(), (bookingCode bc) => bc.quantity) .AddValue(_fixture.Create <int>().ToString(), (bookingCode bc) => bc.standardMinuteValue) .AddValue(_fixture.Create <int>().ToString(), (bookingCode bc) => bc.itemValue) .AddValue(expectedOrderNumber.ToString(), (bookingCode bc) => bc.primaryOrderNumber) .AddGenerator(() => (index++).ToString(), (bookingCode bc) => bc.itemNumberWithinBooking); var generator = new Helpers.StubGeneration.Generator <order>() .AddDefaultGenerators() .AddGenerator(() => { index = 1; return(bookingCodesGenerator.Generate()); }) .AddValue(expectedOrderNumber.ToString(), (order o) => o.primaryOrderNumber) .AddValue(expectedOrderNumber.ToString(), (booking b) => b.primaryOrderNumber) .AddValue(expectedOrderNumber.ToString(), (resource r) => r.primaryOrderNumber) .AddValue(orderStatus.PLANNED, (order o) => o.status) .Ignore((order o) => o.phone) .Ignore((booking b) => b.theOrder); var drsOrder = generator.Generate(); drsOrder.orderCommentsExtended = _locationAlerts.Alerts.ToCommentsExtendedString() + _personAlerts.Alerts.ToCommentsExtendedString(); return(drsOrder); }
public async Task StoresExternalSchedulerRef() { const int newId = 1; const string expectedTokenId = "externalRef"; _repairsGatewayMock.ReturnWOId(newId); ContractorUsesExternalScheduler(true); _notificationMock.AddHandler <WorkOrderOpened>(workOrderOpened => { workOrderOpened.TokenId = expectedTokenId; }); var generator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddInfrastructureWorkOrderGenerators() .AddValue(new List <Trade> { new Trade { Code = TradeCode.B2 } }, (WorkElement we) => we.Trade); var workOrder = generator.Generate(); var result = await _classUnderTest.Execute(workOrder); workOrder.ExternalSchedulerReference.Should().Be(expectedTokenId); _repairsGatewayMock.VerifyChangesSaved(); }
public void WorkOrderListItemMapsCorrectly() { var workOrder = new Helpers.StubGeneration.Generator <WorkOrder>() .AddDefaultGenerators() .Generate(); var result = workOrder.ToListItem(); ValidateListItem(workOrder, result); }
public async Task <HttpStatusCode> CancelWorkOrder(int id) { var request = new Helpers.StubGeneration.Generator <WorkOrderComplete>() .AddWorkOrderCompleteGenerators() .SetListLength <JobStatusUpdates>(1) .AddValue(id.ToString(), (WorkOrderComplete woc) => woc.WorkOrderReference.ID) .AddValue(JobStatusUpdateTypeCode.Other_0, (JobStatusUpdates jsu) => jsu.TypeCode) .AddValue(CustomJobStatusUpdates.Cancelled, (JobStatusUpdates jsu) => jsu.OtherType) .Generate(); return(await Post("/api/v2/workOrderComplete", request)); }
private async Task <HttpStatusCode> UpdateJob(int workOrderId, Action <JobStatusUpdate> interceptor = null) { JobStatusUpdate request = new Helpers.StubGeneration.Generator <JobStatusUpdate>() .AddJobStatusUpdateGenerators() .AddValue(JobStatusUpdateTypeCode.Variation_80, (JobStatusUpdate jsu) => jsu.TypeCode) .AddValue(workOrderId.ToString(), (JobStatusUpdate jsu) => jsu.RelatedWorkOrderReference.ID) .AddValue("comments", (JobStatusUpdate jsu) => jsu.Comments) .Generate(); interceptor?.Invoke(request); return(await Post("/api/v2/jobStatusUpdate", request)); }
private IEnumerable <WorkOrder> CreateWorkOrders(int quantity = 5) { var generator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddWorkOrderGenerators() .AddGenerator(() => _workOrderId++, (WorkOrder wo) => wo.Id); var workOrders = generator.GenerateList(quantity); _listWorkOrdersMock .Setup(m => m.Execute(It.IsAny <WorkOrderSearchParameters>())) .ReturnsAsync(workOrders); _repairsGatewayMock.Setup(x => x.GetWorkOrder(Moq.It.IsAny <int>())) .Returns((int reqId) => Task.FromResult(workOrders.Where(wo => wo.Id == reqId).First())); return(workOrders); }
public async Task SetsRSIToOriginalTrue() { var generator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddInfrastructureWorkOrderGenerators() .AddValue(new List <Trade> { new Trade { Code = TradeCode.B2 } }, (WorkElement we) => we.Trade); var workOrder = generator.Generate(); await _classUnderTest.Execute(workOrder); _repairsGatewayMock.LastWorkOrder.WorkElements.All(we => we.RateScheduleItem.All(rsi => rsi.Original)) .Should().BeTrue(); }
public void OperativeWorkOrderListItemMapsCorrectly() { var workOrder = new Helpers.StubGeneration.Generator <WorkOrder>() .AddDefaultGenerators() .Generate(); var result = workOrder.ToOperativeListItem(); ValidateListItem(workOrder, result); var appointment = workOrder.Appointments.FirstOrDefault(); result.Appointment.Date.Should().Be(appointment.Date.Date.ToDate()); result.Appointment.Description.Should().Be(appointment.Day != null ? appointment.Day.AvailableAppointment.Description : Resources.ExternallyManagedAppointment); result.Appointment.Start.Should().Be(appointment.StartTime.ToTime()); result.Appointment.End.Should().Be(appointment.EndTime.ToTime()); result.Appointment.Reason.Should().Be(appointment.AppointmentReason); result.Appointment.Note.Should().Be(appointment.AppointmentNote); }
public void DoesNotSetExternalAppointmentManagementUrlWhenNotDrs() { var workOrder = new Helpers.StubGeneration.Generator <WorkOrder>() .AddDefaultGenerators() .Generate(); workOrder.ExternalSchedulerReference = null; AppointmentDetails appointment = new AppointmentDetails { Date = DateTime.UtcNow, Description = "test", End = DateTime.UtcNow, Start = DateTime.UtcNow }; var response = workOrder.ToResponse(appointment, new Uri("https://managementAddress.none"), false); response.ExternalAppointmentManagementUrl.Should().BeNull(); }
public void Setup() { _fixture = new Fixture(); _fixture.Behaviors.Remove(new ThrowingRecursionBehavior()); _fixture.Behaviors.Add(new OmitOnRecursionBehavior()); _workOrderGenerator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddInfrastructureWorkOrderGenerators(); _sessionId = "sessionId"; _sorGatewayMock = new Mock <IScheduleOfRatesGateway>(); _alertsGatewayMock = new Mock <IAlertsGateway>(); _tenureInformationUseCaseMock = new Mock <ITenureInformationUseCase>(); _sorPriorityGatewayMock = new Mock <ISorPriorityGateway>(); _classUnderTest = new DrsMapping( _sorGatewayMock.Object, _alertsGatewayMock.Object, _tenureInformationUseCaseMock.Object, _sorPriorityGatewayMock.Object, new NullLogger <DrsMapping>() ); _locationAlerts = new Helpers.StubGeneration.Generator <PropertyAlertList>().AddDefaultGenerators().Generate(); _personAlerts = new Helpers.StubGeneration.Generator <PersonAlertList>().AddDefaultGenerators().Generate(); var commonAlerts = new Helpers.StubGeneration.Generator <Alert>().AddDefaultGenerators().GenerateList(5); _locationAlerts.Alerts = _locationAlerts.Alerts.Union(commonAlerts); _personAlerts.Alerts = _personAlerts.Alerts.Union(commonAlerts); _tenureInformation = new Helpers.StubGeneration.Generator <TenureInformation>().AddDefaultGenerators().Generate(); _alertsGatewayMock.Setup(x => x.GetLocationAlertsAsync(It.IsAny <string>())) .ReturnsAsync(_locationAlerts); _alertsGatewayMock.Setup(x => x.GetPersonAlertsAsync(It.IsAny <string>())) .ReturnsAsync(_personAlerts); _tenureInformationUseCaseMock .Setup(x => x.GetTenureInformationWithPropertyReference(It.IsAny <string>())) .ReturnsAsync(_tenureInformation); }
public async Task SetsExternalFlagOnResultWhenContractorHasDrsEnabled() { int newId = 1; _repairsGatewayMock.ReturnWOId(newId); ContractorUsesExternalScheduler(true); var generator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddInfrastructureWorkOrderGenerators() .AddValue(new List <Trade> { new Trade { Code = TradeCode.B2 } }, (WorkElement we) => we.Trade); var workOrder = generator.Generate(); var result = await _classUnderTest.Execute(workOrder); result.ExternallyManagedAppointment.Should().BeTrue(); }
private async Task <HttpStatusCode> CompleteWorkOrder(int workOrderId, bool preAssignOperative = true, Action <WorkOrderComplete> interceptor = null) { if (preAssignOperative) { await AssignOperative(workOrderId, TestDataSeeder.OperativeId); } var request = new Helpers.StubGeneration.Generator <WorkOrderComplete>() .AddWorkOrderCompleteGenerators() .AddValue(workOrderId.ToString(), (WorkOrderComplete woc) => woc.WorkOrderReference.ID) .SetListLength <JobStatusUpdates>(1) .AddValue(JobStatusUpdateTypeCode.Other_0, (JobStatusUpdates jsu) => jsu.TypeCode) .AddValue(CustomJobStatusUpdates.Completed, (JobStatusUpdates jsu) => jsu.OtherType) .Generate(); interceptor?.Invoke(request); var response = await Post("/api/v2/workOrderComplete", request); return(response); }
private void ConfigureGenerator() { _generator = new Helpers.StubGeneration.Generator <WorkOrder>() .AddWorkOrderGenerators(); }