public async Task ValidateStrategyLookups <T>(JobStatusUpdateTypeCode typeCode, string otherTypeCode = "") where T : IJobStatusUpdateStrategy
 {
     await ValidateStrategyResolution <T>(new JobStatusUpdate
     {
         TypeCode  = typeCode,
         OtherType = otherTypeCode
     });
 }
        public async Task InvalidUserUpdatingVariationReturns401(string userGroup, JobStatusUpdateTypeCode updateCode)
        {
            // Arrange
            int workOrderId = await CreateVariation();

            SetUserRole(userGroup);
            var code = await UpdateJob(workOrderId, updateCode);

            var workOrder = GetWorkOrderFromDB(workOrderId);

            workOrder.StatusCode.Should().Be(WorkStatusCode.VariationPendingApproval);
            code.Should().Be(HttpStatusCode.Unauthorized);
        }
        public void ThrowUnsupportedWhenNonSupportedTypeCodes(JobStatusUpdateTypeCode typeCode, string otherTypeCode)
        {
            var workOrder = _fixture.Create <WorkOrder>();

            workOrder.Id = 41;
            var jobStatusUpdate = new JobStatusUpdate
            {
                TypeCode  = typeCode,
                OtherType = otherTypeCode
            };

            Assert.ThrowsAsync <NotSupportedException>(async() => await _classUnderTest.ProcessActions(jobStatusUpdate));
        }
        public async Task HoldAndResumeWorkOrder(JobStatusUpdateTypeCode updateCode, WorkStatusCode workOrderHoldCode)
        {
            // Arrange
            var result = await CreateWorkOrder();

            // Act
            await UpdateSorCodes(result.Id, req => req.TypeCode = updateCode);

            var heldOrder = GetWorkOrderFromDB(result.Id);

            await UpdateSorCodes(result.Id, req =>
            {
                req.TypeCode  = JobStatusUpdateTypeCode.Other_0;
                req.OtherType = CustomJobStatusUpdates.Resume;
            });

            var resumedOrder = GetWorkOrderFromDB(result.Id);

            // Assert
            heldOrder.StatusCode.Should().Be(workOrderHoldCode);
            resumedOrder.StatusCode.Should().Be(WorkStatusCode.Open);
        }
 private Task <HttpStatusCode> UpdateJob(int workOrderId, JobStatusUpdateTypeCode typeCode)
 {
     return(UpdateJob(workOrderId, jsu => jsu.TypeCode = typeCode));
 }