Beispiel #1
0
        public IHttpActionResult Execute(HeyController controller)
        {
            string msg = $"heyRember request {_heyRemember} can't be binded to any method for an unknown reason";

            _log.Error(msg);
            return(controller.ExposedBadRequest(msg));
        }
Beispiel #2
0
        public IHttpActionResult Execute(HeyController controller)
        {
            string msg = $"The requestd resource {_id} doesn't exist";

            _log.Warn(msg);
            return(controller.ExposedNotFound());
        }
Beispiel #3
0
        public void TestPostCanFindTheMethodButHangFireIsNotRunning()
        {
            HeyRememberDto heyObj = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "Test",
                DomainSpecificData = $"[{JsonConvert.SerializeObject(DateTime.Now)}, \"abc\"]"
            };

            var scheduleTypeMock = new Mock <IScheduleType>();

            scheduleTypeMock
            .Setup(type => type.Prototype())
            .Returns(scheduleTypeMock.Object);
            scheduleTypeMock
            .Setup(type => type.Schedule(It.IsAny <HeyRememberDeferredExecution>()))
            .Throws <Exception>();

            var scheduleTypeFactoryMock = new Mock <IJobRepository>();

            scheduleTypeFactoryMock
            .Setup(factory => factory.MakeASchedulePrototype(It.IsAny <HeyRememberDto>()))
            .Returns(scheduleTypeMock.Object);

            var heyController = new HeyController(new HeyService(scheduleTypeFactoryMock.Object, new LogExceptionHandler()));
            var response      = heyController.Post(heyObj);

            Assert.IsInstanceOf <ExceptionResult>(response);
            scheduleTypeMock.Verify(type => type.Schedule(It.IsAny <HeyRememberDeferredExecution>()));
        }
Beispiel #4
0
        public IHttpActionResult Execute(HeyController controller)
        {
            string msg = $"Error on parameters. Ensure that DomainSpecific data are in a correct json form. This are yours: {_heyRemember.DomainSpecificData}. If they are, than have a look to the parameter number {ParamNum + 1}";

            _log.Warn(msg);
            return(controller.ExposedBadRequest(msg));
        }
Beispiel #5
0
        public IHttpActionResult Execute(HeyController controller)
        {
            string msg = $"The resources {_id} have been deleted on user request";

            _log.Info(msg);
            return(controller.ExposedOk());
        }
Beispiel #6
0
        public void SetUp()
        {
            _scheduleTypeMock = new Mock <IScheduleType>();
            _scheduleTypeMock
            .Setup(type => type.Prototype())
            .Returns(_scheduleTypeMock.Object);
            _scheduleTypeMock
            .Setup(type => type.Schedule(It.IsAny <HeyRememberDeferredExecution>()))
            .Returns("Mock");

            _scheduleTypeFactoryMock = new Mock <IJobRepository>();
            _scheduleTypeFactoryMock
            .Setup(factory => factory.MakeASchedulePrototype(It.IsAny <HeyRememberDto>()))
            .Returns(_scheduleTypeMock.Object);

            _heyController = new HeyController(new HeyService(_scheduleTypeFactoryMock.Object, new LogExceptionHandler()));
        }
Beispiel #7
0
        public IHttpActionResult Execute(HeyController controller)
        {
            HeyRememberDeferredExecution deferredExecution = _methodBinder.CreateDeferredExecution();
            HeyRememberDto heyRemember = deferredExecution.HeyRemember;

            try
            {
                string jobId = _scheduleType.Schedule(deferredExecution);
                string heyId = $"{heyRemember.Domain}/{(heyRemember.Type != string.Empty ? heyRemember.Type + "/" : string.Empty)}{heyRemember.Name}/{heyRemember.Id}/{jobId}";

                _log.Info($"{heyRemember} scheduled on {heyId}");

                var heyRememberReturn = new HeyRememberDto(heyRemember);
                heyRememberReturn.When[0] = new FindDatesFromHeyRemember(heyRememberReturn).Next();
                return(_returnType.Return(heyId, heyRememberReturn, controller));
            }
            catch (Exception ex)
            {
                _log.Error($"{heyRemember}: Error while trying to schedule job", ex);
                return(controller.ExposedInternalServerError(ex));
            }
        }
Beispiel #8
0
        public void TestThatWhenTheJobIsScheduledItIsReturnedTheCorrectHttpPath()
        {
            Mock <IMethodBinder> methodBinderMock = new Mock <IMethodBinder>();

            methodBinderMock
            .Setup(binder => binder.CreateDeferredExecution())
            .Returns(new HeyRememberDeferredExecution()
            {
                HeyRemember = _heyObj
            });

            Mock <IScheduleType> scheduleTypeMock = new Mock <IScheduleType>();

            scheduleTypeMock
            .Setup(type => type.Schedule(It.IsAny <HeyRememberDeferredExecution>()))
            .Returns("banana");

            OkHeyResponse response    = new OkHeyResponse(methodBinderMock.Object, scheduleTypeMock.Object, new CreatedHttpReturn());
            var           serviceMock = new Mock <IHeyService>();

            serviceMock
            .Setup(service => service.Create(_heyObj, false))
            .Returns(response);

            HeyController controller = new HeyController(serviceMock.Object)
            {
                Request       = _httpRequestMessage,
                Configuration = _httpConfiguration
            };
            IHttpActionResult result = controller.Post(_heyObj);

            Assert.IsInstanceOf <CreatedAtRouteNegotiatedContentResult <HeyRememberDto> >(result);
            var createdAtResult = result as CreatedAtRouteNegotiatedContentResult <HeyRememberDto>;

            Assert.AreEqual("DefaultApi", createdAtResult.RouteName);
            Assert.AreEqual("TestDomain/TestType/TestId/Default/banana", createdAtResult.RouteValues["id"]);
        }
Beispiel #9
0
 public IHttpActionResult Execute(HeyController controller)
 {
     _log.Error($"{_heyRemember}: error processing this request");
     return(controller.ExposedInternalServerError(_exception));
 }
Beispiel #10
0
 public IHttpActionResult Return(string heyId, HeyRememberDto heyRemember, HeyController controller)
 {
     return(controller.ExposedOk());
 }
Beispiel #11
0
 public IHttpActionResult Return(string heyId, HeyRememberDto heyRemember, HeyController controller)
 {
     return(controller.ExposedCreatedAtRoute("DefaultApi", new { id = heyId }, heyRemember));
 }
Beispiel #12
0
 public IHttpActionResult Execute(HeyController controller)
 {
     _log.Warn($"{_heyRemember}: method not found");
     return(controller.ExposedBadRequest($"{_heyRemember.Name} not found in {_heyRemember.Domain}\\{_heyRemember.Type}"));
 }
Beispiel #13
0
        public void SetUp()
        {
            _backgroundJobServer = HangfireConfig.StartHangfire("TestHeyDb");
            GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute {
                Attempts = 0
            });
            _repository = new HangfireJobRepository();
            var heyService = new HeyService(_repository);

            _heyController = new HeyController(heyService);

            _scheduledId          = "1";
            _scheduledHeyRemember = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "GetTests",
                Id                 = _scheduledId,
                DomainSpecificData = "[]",
                When               = new[] { DateTime.Now + TimeSpan.FromMinutes(60) }
            };

            _processingId          = "2";
            _processingHeyRemember = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "GetTests",
                Id                 = _processingId,
                DomainSpecificData = "[]",
                When               = new[] { DateTime.Now }
            };

            _succededId          = "3";
            _succededHeyRemember = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "GetSuccessTests",
                Id                 = _succededId,
                DomainSpecificData = "[]",
                When               = new[] { DateTime.Now }
            };

            _failedId          = "3";
            _failedHeyRemember = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "FailTests",
                Id                 = _failedId,
                DomainSpecificData = "[]",
                When               = new[] { DateTime.Now }
            };

            _recurringId          = "4";
            _recurringHeyRemember = new HeyRememberDto()
            {
                Domain             = "Hey.Api.Rest.Tests",
                Name               = "RecurringTests",
                Id                 = _recurringId,
                DomainSpecificData = "[]",
                When               = new[] { DateTime.Today },
                CronExpression     = "* * * * *",
            };
        }