public async Task MapsPriorityCorrectly(string expectedDrsCode)
        {
            var workOrder = _workOrderGenerator.Generate();

            _sorPriorityGatewayMock.Setup(m => m.GetLegacyPriorityCode(It.IsAny <int>())).ReturnsAsync(expectedDrsCode);
            var sorCodes = SetupSorCodes(workOrder);

            var request = await _classUnderTest.BuildCreateOrderRequest(_sessionId, workOrder);

            VerifyCreateOrder(request, workOrder, sorCodes);
            request.createOrder1.theOrder.priority.Should().Be(expectedDrsCode.ToString());
        }
        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();
        }
        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);
        }
예제 #4
0
        public async Task ReturnsResponse()
        {
            // arrange
            var generatedWorkOrders = _generator.GenerateList(5);
            var expectedWorkOrder   = _generator.Generate();

            expectedWorkOrder.Id = 7;
            generatedWorkOrders.Add(expectedWorkOrder);
            var appointment = new AppointmentDetails
            {
                Date        = DateTime.UtcNow,
                Description = "test",
                End         = DateTime.UtcNow,
                Start       = DateTime.UtcNow
            };

            _repairsGatewayMock.ReturnsWorkOrders(generatedWorkOrders);
            _appointmentsGatewayMock.Setup(a => a.GetAppointment(It.IsAny <int>())).ReturnsAsync(appointment);
            var items             = MockTasks();
            var expectedTotalSMVs = items.Sum(i => i.StandardMinuteValue * i.Quantity);

            // act
            var response = await _classUnderTest.Execute(expectedWorkOrder.Id);

            // assert
            var expectedResponse = expectedWorkOrder.ToResponse(appointment, _drsOptions.ManagementAddress, true);

            expectedResponse.TotalSMVs = expectedTotalSMVs;
            response.Should().BeEquivalentTo(expectedResponse);
        }
        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 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();
        }