예제 #1
0
        public void FetchAssetFuelBurnRateSettings_InvalidAssetUIDs_GivesBadRequest()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = this._injectConfig.AssetUIDs,
                IdleTargetValue = 5,
                WorkTargetValue = 10
            };

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

            SetupController(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().Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetFuelBurnRateSettingsResponse;

            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
        // POST api/<controller>
        public async Task <ActionResult <AssetFuelBurnRateSettingsResponse> > Fetch(List <String> assetUIDs = null)
        {
            assetUIDs = await base.ReadRequestContentAsync(assetUIDs);

            var request = new AssetFuelBurnRateSettingRequest
            {
                StartDate       = DateTime.Parse(DateTime.UtcNow.ToShortDateString()),
                CustomerUid     = base.GetCustomerContext(Request),
                UserUid         = base.GetUserContext(Request),
                AssetUIds       = assetUIDs,
                IdleTargetValue = 0,
                WorkTargetValue = 0,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 0 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 0 }
                }
            };

            this._loggingService.Info("Fetching Asset Settings Burn Rate for the given request : " + JsonConvert.SerializeObject(request), MethodInfo.GetCurrentMethod().Name);
            var result = await this._assetSettingsService.Fetch(request);

            this._loggingService.Debug("Fetching Asset Settings Burn Rate response : " + JsonConvert.SerializeObject(result), MethodInfo.GetCurrentMethod().Name);

            return(base.SendResponse(HttpStatusCode.OK, new AssetFuelBurnRateSettingsResponse(result.AssetSettingsLists, result.Errors.OfType <AssetErrorInfo>().ToList <AssetErrorInfo>())));
        }
예제 #3
0
        public void SaveAssetFuelBurnRateSettings_InvalidAssetUIDInAssetUIDs_GivesBadRequest()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds = new List <string> {
                    Guid.Empty.ToString()
                },
                IdleTargetValue = 5,
                WorkTargetValue = 10
            };

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

            request.AssetUIds = new List <string>(this._injectConfig.AssetUIDs);

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

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

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

            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 SaveAssetFuelBurnRateSettings_AssetUIDsNull_GivesBadRequest()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = null,
                IdleTargetValue = 1,
                WorkTargetValue = 10
            };

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

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

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

            Assert.NotNull(result);
            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));
        }
예제 #5
0
        public void Save_InvalidAllAssetUIDs_ThrowsDomainException()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = null,
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = 100,
                WorkTargetValue = 1000,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 100 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 1000 }
                }
            };
            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)));
            }
        }
예제 #6
0
        public void Save_WorkTargetValueIsZero_ThrowsDomainException()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = new List <string>(this._assetUIDs.Select(x => x.ToString())),
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = -1,
                WorkTargetValue = 0,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, -1 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 0 }
                }
            };

            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.IdleValueShouldNotBeNegative);
                Assert.Equal(domainEx.Errors.First().Message, UtilHelpers.GetEnumDescription(ErrorCodes.IdleValueShouldNotBeNegative));
            }
        }
예제 #7
0
        public void Save_AssetUIDNull_ThrowsDomainException()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = null,
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = 100,
                WorkTargetValue = 1000,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 100 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 1000 }
                }
            };

            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.AssetUIDListNull);
                Assert.Equal(domainEx.Errors.First().Message, UtilHelpers.GetEnumDescription(ErrorCodes.AssetUIDListNull));
            }
        }
예제 #8
0
        public void Save_ValidRequest_ThreeOldRecords_ReturnValidResponse()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds    = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid  = this._customerUid,
                UserUid      = this._userUid,
                TargetValues = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 100 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 1000 }
                },
                IdleTargetValue = 100,
                WorkTargetValue = 1000,
                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);
            this._stubTransactions.Execute(Arg.Any <List <Action> >());
        }
예제 #9
0
 private void SetupController(AssetFuelBurnRateSettingRequest request, Guid?customerUID, Guid?userUID)
 {
     _target = _injectConfig.Resolve <AssetFuelBurnRateSettingsController>();
     _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)));
 }
예제 #10
0
        public void SaveAssetFuelBurnRateSettings_UnsetTargetValuesNull_GivesSuccess()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = this._injectConfig.AssetUIDs,
                IdleTargetValue = null,
                WorkTargetValue = null
            };

            _injectConfig.BuildRepositoryStub(10, request, new List <AssetTargetType> {
                AssetTargetType.IdlingBurnRateinLiPerHour, AssetTargetType.WorkingBurnRateinLiPerHour
            });
            SetupController(request, Guid.NewGuid(), Guid.NewGuid());
            var result         = _target.Save(request).Result;
            var response       = result.Result as JsonResult;
            var responseObject = response.Value as AssetFuelBurnRateSettingsResponse;

            Assert.NotNull(response);
            //Assert.Equal(response.StatusCode, (int)HttpStatusCode.OK);
        }
예제 #11
0
        public async Task <ActionResult <AssetFuelBurnRateSettingsResponse> > Save(AssetFuelBurnRateSettingRequest burnRateRequest)
        {
            burnRateRequest = await base.ReadRequestContentAsync(burnRateRequest);

            burnRateRequest.CustomerUid  = base.GetCustomerContext(Request);
            burnRateRequest.UserUid      = base.GetUserContext(Request);
            burnRateRequest.StartDate    = DateTime.Parse(DateTime.UtcNow.ToShortDateString());
            burnRateRequest.TargetValues = new Dictionary <AssetTargetType, double?>
            {
                { AssetTargetType.IdlingBurnRateinLiPerHour, burnRateRequest.IdleTargetValue },
                { AssetTargetType.WorkingBurnRateinLiPerHour, burnRateRequest.WorkTargetValue }
            };

            this._loggingService.Debug("Updating Asset Settings Burn Rate for the given request : " + JsonConvert.SerializeObject(burnRateRequest), MethodInfo.GetCurrentMethod().Name);

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

            this._loggingService.Debug("Updating Asset Settings Burn Rate response : " + JsonConvert.SerializeObject(result), MethodInfo.GetCurrentMethod().Name);

            return(base.SendResponse(HttpStatusCode.OK, new AssetFuelBurnRateSettingsResponse(result.AssetSettingsLists, result.Errors.OfType <AssetErrorInfo>().ToList <AssetErrorInfo>())));
        }
예제 #12
0
        public void Save_WorkTargetValueAndIdleTargetValueIsZero_GivesOK()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = new List <string>(this._assetUIDs.Select(x => x.ToString())),
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = 0,
                WorkTargetValue = 0,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 0 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 0 }
                }
            };

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

            Assert.NotNull(result);
            this._stubTransactions.Execute(Arg.Any <List <Action> >());
        }
예제 #13
0
        public void Fetch_ValidRequest_ReturnValidResponse()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = 100,
                WorkTargetValue = 1000,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 100 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 1000 }
                }
            };

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

            Assert.NotNull(result);
            Assert.True(result.AssetSettingsLists.Count == 3);
        }
예제 #14
0
        public void Save_ValidRequest_OneOldRecord_TwoNewRecords_ReturnValidResponse()
        {
            var request = new AssetFuelBurnRateSettingRequest
            {
                AssetUIds       = new List <string>(this._assetUIDs.Take(3).Select(x => x.ToString())),
                CustomerUid     = this._customerUid,
                UserUid         = this._userUid,
                IdleTargetValue = 100,
                WorkTargetValue = 1000,
                TargetValues    = new Dictionary <AssetTargetType, double?>
                {
                    { AssetTargetType.IdlingBurnRateinLiPerHour, 100 },
                    { AssetTargetType.WorkingBurnRateinLiPerHour, 1000 }
                },
                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.Received(1).Execute(Arg.Any <List <Action> >());

            this._assetSettingsDtos = assetSettingsDtoCloned;
        }