Пример #1
0
        public void FetchAssetVolumePerCycleSettings_InvalidAssetUIDs_GivesBadRequest()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = this._injectConfig.AssetUIDs,
                TargetValue = 250.98
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.BucketVolumeinCuMeter
            });

            SetupController(10, request, Guid.NewGuid(), Guid.NewGuid());
            _target.ControllerContext.HttpContext.Request.Body = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new string[] { Guid.Empty.ToString() })));

            var result         = _target.Fetch(null).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetVolumePerCycleSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.BadRequest);
            //Assert.NotNull(responseObject.Errors);
            //Assert.True(responseObject.Errors.Count > 0);
            //Assert.Equal(responseObject.Errors[0].ErrorCode, (int)ErrorCodes.InvalidAssetUID);
            //Assert.Equal(responseObject.Errors[0].Message, string.Format(UtilHelpers.GetEnumDescription(ErrorCodes.InvalidAssetUID), Guid.Empty.ToString()));
        }
Пример #2
0
        //[ChunkedEncodingFilter(typeof(AssetSettingsRequest), "request")]
        // POST api/<controller>
        public async Task <ActionResult <AssetVolumePerCycleSettingsResponse> > Save(AssetSettingsRequest request)
        {
            request = await base.ReadRequestContentAsync(request);

            AssetSettingsRequestBase serviceRequest = new AssetSettingsRequestBase();

            if (request != null)
            {
                serviceRequest = new AssetSettingsRequestBase
                {
                    StartDate    = DateTime.Parse(DateTime.UtcNow.ToShortDateString()),
                    TargetValues = new Dictionary <AssetTargetType, double?> {
                        { AssetTargetType.BucketVolumeinCuMeter, request.TargetValue }
                    },
                    CustomerUid = base.GetCustomerContext(Request),
                    UserUid     = base.GetUserContext(Request),
                    AssetUIds   = request.AssetUIds
                };
            }

            this._loggingService.Debug("Updating Asset Settings Volume Per Cycle for the given request : " + JsonConvert.SerializeObject(request), MethodInfo.GetCurrentMethod().Name);

            this._loggingService.Debug("Request : " + JsonConvert.SerializeObject(request), MethodInfo.GetCurrentMethod().Name);

            var result = await this._assetSettingsService.Save(serviceRequest);

            this._loggingService.Debug("Updating Asset Settings Bucket volume per cycle response : " + JsonConvert.SerializeObject(result), MethodInfo.GetCurrentMethod().Name);

            return(base.SendResponse(HttpStatusCode.OK, new AssetVolumePerCycleSettingsResponse(result.AssetSettingsLists, result.Errors.OfType <AssetErrorInfo>().ToList <AssetErrorInfo>())));
        }
Пример #3
0
        public void SaveAssetVolumePerCycleSettings_InvalidAssetUIDInAssetUIDs_GivesBadRequest()
        {
            var request = new AssetSettingsRequest
            {
                TargetValue = 250.98
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.BucketVolumeinCuMeter
            });
            request.AssetUIds = new List <string>(this._injectConfig.AssetUIDs);

            request.AssetUIds.Add(Guid.Empty.ToString()); //Invalid AssetUId

            SetupController(10, request, Guid.NewGuid(), Guid.NewGuid());

            var result         = _target.Save(request).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetVolumePerCycleSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.OK);
            //Assert.NotNull(responseObject.Errors);
            //Assert.True(responseObject.Errors.Count > 0);
            //Assert.Equal(responseObject.Errors[0].ErrorCode, (int)ErrorCodes.InvalidAssetUID);
            //Assert.Equal(responseObject.Errors[0].Message, string.Format(UtilHelpers.GetEnumDescription(ErrorCodes.InvalidAssetUID), Guid.Empty.ToString()));
        }
Пример #4
0
        public void Save_TargetValueNegative_ThrowsDomainException()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.BucketVolumeinCuMeter, -1 }
                }
            };

            try
            {
                var result = this._assetSettingsService.Save(request).Result;
            }
            catch (AggregateException aggregateEx)
            {
                Assert.NotNull(aggregateEx.InnerException);
                var domainEx = (DomainException)aggregateEx.InnerException;
                Assert.NotNull(domainEx);
                Assert.NotNull(domainEx.Errors);
                Assert.Equal(domainEx.Errors.First().ErrorCode, (int)ErrorCodes.TargetValueIsNegative);
                Assert.Equal(domainEx.Errors.First().Message, UtilHelpers.GetEnumDescription(ErrorCodes.TargetValueIsNegative));
            }
        }
Пример #5
0
        public void SaveAssetMileageSettings_AssetUIDsNull_GivesBadRequest()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = null,
                TargetValue = 12
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.OdometerinKmsPerWeek
            });

            SetupController(10, request, Guid.NewGuid(), Guid.NewGuid());

            var result         = _target.Save(request).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetMileageSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.BadRequest);
            //Assert.NotNull(responseObject.Errors);
            //Assert.True(responseObject.Errors.Count > 0);
            //Assert.Equal(responseObject.Errors[0].ErrorCode, (int)ErrorCodes.AssetUIDListNull);
            //Assert.Equal(responseObject.Errors[0].Message, UtilHelpers.GetEnumDescription(ErrorCodes.AssetUIDListNull));
        }
Пример #6
0
        public void SaveAssetEstimatedPayloadPerCycleSettings_TargetValueNegative_GivesBadRequest()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = this._injectConfig.AssetUIDs,
                TargetValue = -555
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.PayloadPerCycleInTonnes
            });

            SetupController(10, request, Guid.NewGuid(), Guid.NewGuid());
            var result = _target.Save(request).Result;

            Assert.NotNull(result);

            //var response = result.Result as JsonResult;
            //Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.BadRequest);

            //var responseObject = response.Value as AssetEstimatedPayloadPerCycleSettingsResponse;
            //Assert.NotNull(responseObject.Errors);
            //Assert.True(responseObject.Errors.Count > 0);
            //Assert.Equal(responseObject.Errors[0].ErrorCode, (int)ErrorCodes.TargetValueIsNegative);
            //Assert.Equal(responseObject.Errors[0].Message, UtilHelpers.GetEnumDescription(ErrorCodes.TargetValueIsNegative));
        }
Пример #7
0
        public void Save_InvalidAllAssetUIDs_ThrowsDomainException()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = null,
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.BucketVolumeinCuMeter, 100 }
                }
            };
            var invalidAssetUID = new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() };

            try
            {
                request.AssetUIds = invalidAssetUID.ToList();
                var result = this._assetSettingsService.Save(request).Result;
            }
            catch (AggregateException aggregateEx)
            {
                Assert.NotNull(aggregateEx.InnerException);
                var domainEx = (DomainException)aggregateEx.InnerException;
                Assert.NotNull(domainEx);
                Assert.NotNull(domainEx.Errors);
                Assert.Equal(domainEx.Errors.First().ErrorCode, (int)ErrorCodes.InvalidAssetUID);
                Assert.Equal(domainEx.Errors.First().Message, string.Format(UtilHelpers.GetEnumDescription(ErrorCodes.InvalidAssetUID), string.Join(",", invalidAssetUID)));
            }
        }
Пример #8
0
        public void Save_ValidRequest_ThreeOldRecords_ReturnValidResponse()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?> {
                    { AssetTargetType.BucketVolumeinCuMeter, 123.2 }
                },
                TargetValue = 200,
                StartDate   = DateTime.Now.Date
            };

            var assetSettingsDtoCloned = new List <AssetSettingsDto>(this._assetSettingsDtos);
            var assetSettingsDtos      = this._assetSettingsDtos.FindAll(y => request.AssetUIds.Contains(y.AssetUID.ToString()));

            var result = this._assetSettingsService.Save(request).Result;

            Assert.NotNull(result);
            Received.InOrder(() =>
            {
                this._stubAssetSettingsRepository.FetchAssetConfig(Arg.Any <List <string> >(), Arg.Any <AssetSettingsDto>());
                this._stubAssetSettingsRepository.FetchAssetConfig(Arg.Any <List <string> >(), Arg.Any <AssetSettingsDto>());
            });
        }
Пример #9
0
        public void Save_ValidRequest_OneOldRecord_TwoNewRecords_ReturnValidResponse()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?> {
                    { AssetTargetType.BucketVolumeinCuMeter, 123.2 }
                },
                TargetValue = 200,
                StartDate   = DateTime.Now.AddDays(1)
            };

            var  assetSettingsDtoCloned = new List <AssetSettingsDto>(this._assetSettingsDtos);
            var  assetSettingsDto       = this._assetSettingsDtos.Where(x => request.AssetUIds.Contains(x.AssetUID.ToString()));
            Guid modifiedAssetUID       = Guid.Empty;

            foreach (var assetSettings in assetSettingsDto.Take(1))
            {
                modifiedAssetUID        = assetSettings.AssetUID;
                assetSettings.StartDate = DateTime.Now.AddDays(-1);
            }
            this._assetSettingsDtos.RemoveAll(x => assetSettingsDto.Where(y => y.AssetUID != modifiedAssetUID).Select(y => y.AssetUID).Contains(x.AssetUID));

            var result = this._assetSettingsService.Save(request).Result;

            Assert.NotNull(result);

            this._stubTransactions.Execute(Arg.Any <List <Action> >());

            this._assetSettingsDtos = assetSettingsDtoCloned;
        }
Пример #10
0
        public void Fetch_InvalidAssetUIDInAssetUIDs_ThrowsDomainException()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(2).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?> {
                    { AssetTargetType.BucketVolumeinCuMeter, 123.2 }
                },
            };
            var invalidAssetUID = Guid.NewGuid().ToString();

            try
            {
                request.AssetUIds.Add(invalidAssetUID);
                var result = this._assetSettingsService.Fetch(request).Result;
            }
            catch (AggregateException aggregateEx)
            {
                Assert.NotNull(aggregateEx.InnerException);
                var domainEx = (DomainException)aggregateEx.InnerException;
                Assert.NotNull(domainEx);
                Assert.NotNull(domainEx.Errors);
                Assert.Equal(domainEx.Errors.First().ErrorCode, (int)ErrorCodes.InvalidAssetUID);
                Assert.Equal(domainEx.Errors.First().Message, string.Format(UtilHelpers.GetEnumDescription(ErrorCodes.InvalidAssetUID), invalidAssetUID));
            }
        }
Пример #11
0
 private void SetupController(int count, AssetSettingsRequest request, Guid?customerUID, Guid?userUID)
 {
     _target = _injectConfig.Resolve <AssetVolumePerCycleSettingsController>();
     _target.ControllerContext = GetMockHttpContext();
     if (customerUID != null)
     {
         _target.ControllerContext.HttpContext.Request.Headers.Add(Constants.VISIONLINK_CUSTOMERUID, customerUID.ToString());
     }
     if (userUID != null)
     {
         _target.ControllerContext.HttpContext.Request.Headers.Add(Constants.USERUID_API, userUID.ToString());
     }
     _target.ControllerContext.HttpContext.Request.Body = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(request)));
 }
Пример #12
0
        public void Fetch_ValidRequest_ReturnValidResponse()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.BucketVolumeinCuMeter, 1000 }
                }
            };

            var result = this._assetSettingsService.Fetch(request).Result;

            Assert.NotNull(result);
            Assert.True(result.AssetSettingsLists.Count == 3);
        }
Пример #13
0
        public void SaveAssetVolumePerCycleSettings_ValidAssetUIds_GivesCreated()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = this._injectConfig.AssetUIDs,
                TargetValue = 250.98
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.BucketVolumeinCuMeter
            });

            SetupController(10, request, Guid.NewGuid(), Guid.NewGuid());
            var result         = _target.Save(request).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetVolumePerCycleSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.OK);
        }
Пример #14
0
        public void Save_ValidRequest_ThreeOldRecords_ThreeNewRecords_ReturnValidResponse()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?> {
                    { AssetTargetType.BucketVolumeinCuMeter, 123.2 }
                },
                TargetValue = 200,
                StartDate   = DateTime.Now.AddDays(1)
            };

            var result = this._assetSettingsService.Save(request).Result;

            Assert.NotNull(result);
            Assert.True(result.AssetSettingsLists.Count == 3);
            this._stubTransactions.Execute(Arg.Any <List <Action> >());
        }
Пример #15
0
        public void Save_InvalidAssetUIDInAssetUIDs_ThrowsDomainException()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(2).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.BucketVolumeinCuMeter, 100 }
                }
            };
            var invalidAssetUID = Guid.NewGuid().ToString();

            request.AssetUIds.Add(invalidAssetUID);
            var result = this._assetSettingsService.Save(request).Result;

            Assert.Equal(result.Errors.Count, 1);
            Assert.Equal(result.Errors.First().ErrorCode, (int)ErrorCodes.InvalidAssetUID);
            Assert.Equal(result.Errors.First().Message, string.Format(UtilHelpers.GetEnumDescription(ErrorCodes.InvalidAssetUID), invalidAssetUID));
        }
Пример #16
0
        public void Fetch_UserUIDNull_ThrowsDomainException()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = new List <string>(this._assetUIDs.Select(x => x.ToString())),
                CustomerUid = this._customerUid,
                UserUid     = null
            };

            try
            {
                var result = this._assetSettingsService.Fetch(request).Result;
            }
            catch (AggregateException aggregateEx)
            {
                Assert.NotNull(aggregateEx.InnerException);
                var domainEx = (DomainException)aggregateEx.InnerException;
                Assert.NotNull(domainEx);
                Assert.NotNull(domainEx.Errors);
                Assert.Equal(domainEx.Errors.First().ErrorCode, (int)ErrorCodes.UserUIDNull);
                Assert.Equal(domainEx.Errors.First().Message, UtilHelpers.GetEnumDescription(ErrorCodes.UserUIDNull));
            }
        }
Пример #17
0
        public void SaveAssetVolumePerCycleSettings_UserUidNull_GivesBadRequest()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds   = this._injectConfig.AssetUIDs,
                TargetValue = 250.98
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.BucketVolumeinCuMeter
            });

            SetupController(10, request, Guid.NewGuid(), null);
            var result         = _target.Save(request).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetVolumePerCycleSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.BadRequest);
            //Assert.NotNull(responseObject.Errors);
            //Assert.True(responseObject.Errors.Count > 0);
            //Assert.Equal(responseObject.Errors[0].ErrorCode, (int)ErrorCodes.UserUIDNull);
            //Assert.Equal(responseObject.Errors[0].Message, UtilHelpers.GetEnumDescription(ErrorCodes.UserUIDNull));
        }
Пример #18
0
        public void Save_ValidRequest_ThreeNewRecords_ReturnValidResponse()
        {
            var request = new AssetSettingsRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?> {
                    { AssetTargetType.BucketVolumeinCuMeter, 123.2 }
                },
                TargetValue = 200,
                StartDate   = DateTime.Now
            };

            var assetSettingsDtoCloned = new List <AssetSettingsDto>(this._assetSettingsDtos);

            this._assetSettingsDtos.RemoveAll(x => request.AssetUIds.Contains(x.AssetUID.ToString()));

            var result = this._assetSettingsService.Save(request).Result;

            Assert.NotNull(result);
            this._stubTransactions.Execute(Arg.Any <List <Action> >());
            this._assetSettingsDtos = assetSettingsDtoCloned;
        }