Esempio n. 1
0
        public async Task PutSendsUpdateTaskCommandAsyncWithCorrectAllReadyTask()
        {
            var allReadyTask = new AllReadyTask();
            var model        = new TaskViewModel {
                Name = "name", Description = "description", StartDateTime = DateTime.UtcNow, EndDateTime = DateTime.UtcNow
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <TaskByTaskIdQuery>())).Returns(allReadyTask);

            var determineIfATaskIsEditable = new Mock <IDetermineIfATaskIsEditable>();

            determineIfATaskIsEditable.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>(), null)).Returns(true);

            var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object, null);
            await sut.Put(It.IsAny <int>(), model);

            mediator.Verify(x => x.SendAsync(It.Is <UpdateTaskCommandAsync>(y => y.AllReadyTask == allReadyTask)), Times.Once);
        }
        public async Task PostSendsTaskByTaskIdQueryWithCorrectTaskId()
        {
            var model = new TaskViewModel {
                EventId = 1, Id = 1
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <EventByIdQuery>())).Returns(new Event());
            mediator.Setup(x => x.Send(It.IsAny <TaskByTaskIdQuery>())).Returns(new AllReadyTask());

            var provider = new Mock <IDetermineIfATaskIsEditable>();

            provider.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>(), null)).Returns(true);

            var sut = new TaskApiController(mediator.Object, provider.Object, null);
            await sut.Post(model);

            mediator.Verify(x => x.Send(It.Is <TaskByTaskIdQuery>(y => y.TaskId == model.Id)));
        }
Esempio n. 3
0
        public async Task PostReturnsHttpStatusCodeResultOf201()
        {
            var model = new TaskViewModel {
                EventId = 1, Id = 0
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <EventByIdQuery>())).Returns(new Event());

            var provider = new Mock <IDetermineIfATaskIsEditable>();

            provider.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>(), null)).Returns(true);

            var sut    = new TaskApiController(mediator.Object, provider.Object, null);
            var result = await sut.Post(model) as StatusCodeResult;

            Assert.IsType <StatusCodeResult>(result);
            Assert.Equal(result.StatusCode, 201);
        }
Esempio n. 4
0
        public async Task PutReturnsHttpStatusCodeResultOf204()
        {
            var allReadyTask = new AllReadyTask();
            var model        = new TaskViewModel {
                Name = "name", Description = "description", StartDateTime = DateTime.UtcNow, EndDateTime = DateTime.UtcNow
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <TaskByTaskIdQuery>())).Returns(allReadyTask);

            var determineIfATaskIsEditable = new Mock <IDetermineIfATaskIsEditable>();

            determineIfATaskIsEditable.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>())).Returns(true);

            var sut    = new TaskApiController(null, mediator.Object, determineIfATaskIsEditable.Object);
            var result = await sut.Put(It.IsAny <int>(), model) as HttpStatusCodeResult;

            Assert.IsType <HttpStatusCodeResult>(result);
            Assert.Equal(result.StatusCode, 204);
        }
Esempio n. 5
0
        public async Task UnregisterTaskReturnsNullForTaskWhenResultTaskIsNull()
        {
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult());

            var userManager = MockHelper.CreateUserManagerMock();

            userManager.Setup(x => x.GetUserId(It.IsAny <ClaimsPrincipal>())).Returns(It.IsAny <string>());

            var sut = new TaskApiController(mediator.Object, null, userManager.Object);

            sut.SetDefaultHttpContext();

            var jsonResult = await sut.UnregisterTask(It.IsAny <int>());

            var result = jsonResult.GetValueForProperty <string>("Task");

            Assert.IsType <JsonResult>(jsonResult);
            Assert.Null(result);
        }
Esempio n. 6
0
        public async Task UnregisterTaskSendsTaskUnenrollCommandWithCorrectTaskIdAndUserId()
        {
            const string userId = "1";
            const int    taskId = 1;

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult());

            var userManager = MockHelper.CreateUserManagerMock();

            userManager.Setup(x => x.GetUserId(It.IsAny <ClaimsPrincipal>())).Returns(userId);

            var sut = new TaskApiController(mediator.Object, null, userManager.Object);

            sut.SetFakeUser(userId);

            await sut.UnregisterTask(taskId);

            mediator.Verify(x => x.SendAsync(It.Is <TaskUnenrollCommand>(y => y.TaskId == taskId && y.UserId == userId)));
        }
Esempio n. 7
0
        public async Task ChangeStatusReturnsCorrectStatus()
        {
            const string status = "status";

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <TaskStatusChangeCommandAsync>())).Returns(() => Task.FromResult(new TaskChangeResult {
                Status = status
            }));

            var sut = new TaskApiController(null, mediator.Object, null);

            sut.SetDefaultHttpContext();

            var jsonResult = await sut.ChangeStatus(new TaskChangeModel());

            var result = jsonResult.GetValueForProperty <string>("Status");

            Assert.IsType <JsonResult>(jsonResult);
            Assert.IsType <string>(result);
            Assert.Equal(result, status);
        }
Esempio n. 8
0
        public async Task UnregisterTaskReturnsCorrectStatus()
        {
            const string status = "status";

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult {
                Status = status
            });

            var sut = new TaskApiController(null, mediator.Object, null);

            sut.SetDefaultHttpContext();

            var jsonResult = await sut.UnregisterTask(It.IsAny <int>());

            var result = jsonResult.GetValueForProperty <string>("Status");

            Assert.IsType <JsonResult>(jsonResult);
            Assert.IsType <string>(result);
            Assert.Equal(result, status);
        }
Esempio n. 9
0
        public async Task PostSendsTaskByTaskIdQueryWithCorrectTaskId()
        {
            var model = new TaskViewModel {
                ActivityId = 1, Id = 1
            };

            var dataAccess = new Mock <IAllReadyDataAccess>();

            dataAccess.Setup(x => x.GetActivity(It.IsAny <int>())).Returns(new Activity());
            dataAccess.Setup(x => x.GetTask(It.IsAny <int>())).Returns(new AllReadyTask());

            var mediator = new Mock <IMediator>();

            var provider = new Mock <IDetermineIfATaskIsEditable>();

            provider.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>())).Returns(true);

            var sut = new TaskApiController(dataAccess.Object, mediator.Object, provider.Object);
            await sut.Post(model);

            mediator.Verify(x => x.Send(It.Is <TaskByTaskIdQuery>(y => y.TaskId == model.Id)));
        }
        public async Task PostSendsAddTaskCommandAsyncWithCorrectData()
        {
            var model = new TaskViewModel {
                EventId = 1, Id = 1
            };
            var allReadyTask = new AllReadyTask();

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <EventByEventIdQuery>())).ReturnsAsync(new Event());
            mediator.SetupSequence(x => x.SendAsync(It.IsAny <TaskByTaskIdQuery>()))
            .ReturnsAsync(allReadyTask).ReturnsAsync(null);

            var determineIfATaskIsEditable = new Mock <IDetermineIfATaskIsEditable>();

            determineIfATaskIsEditable.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>(), null)).Returns(true);

            var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object, null);
            await sut.Post(model);

            mediator.Verify(x => x.SendAsync(It.Is <AddTaskCommand>(y => y.AllReadyTask == allReadyTask)), Times.Once);
        }
Esempio n. 11
0
        public async Task PostSendsAddTaskCommandAsyncWithCorrectData()
        {
            var model = new TaskViewModel {
                ActivityId = 1, Id = 1
            };
            var allReadyTask = new AllReadyTask();

            var dataAccess = new Mock <IAllReadyDataAccess>();

            dataAccess.Setup(x => x.GetActivity(It.IsAny <int>())).Returns(new Activity());
            dataAccess.Setup(x => x.GetTask(It.IsAny <int>())).Returns(allReadyTask);

            var mediator = new Mock <IMediator>();

            var determineIfATaskIsEditable = new Mock <IDetermineIfATaskIsEditable>();

            determineIfATaskIsEditable.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>())).Returns(true);

            var sut = new TaskApiController(dataAccess.Object, mediator.Object, determineIfATaskIsEditable.Object);
            await sut.Post(model);

            mediator.Verify(x => x.SendAsync(It.Is <AddTaskCommandAsync>(y => y.AllReadyTask == allReadyTask)), Times.Once);
        }
Esempio n. 12
0
        public async Task PostReturnsHttpStatusCodeResultOf201()
        {
            var model = new TaskViewModel {
                ActivityId = 1, Id = 1
            };

            var dataAccess = new Mock <IAllReadyDataAccess>();

            dataAccess.Setup(x => x.GetActivity(It.IsAny <int>())).Returns(new Activity());
            dataAccess.Setup(x => x.GetTask(It.IsAny <int>())).Returns(new AllReadyTask());

            var mediator = new Mock <IMediator>();

            var provider = new Mock <IDetermineIfATaskIsEditable>();

            provider.Setup(x => x.For(It.IsAny <ClaimsPrincipal>(), It.IsAny <AllReadyTask>())).Returns(true);

            var sut    = new TaskApiController(dataAccess.Object, mediator.Object, provider.Object);
            var result = await sut.Post(model) as HttpStatusCodeResult;

            Assert.IsType <HttpStatusCodeResult>(result);
            Assert.Equal(result.StatusCode, 201);
        }
Esempio n. 13
0
        // deprecate further down...

        public Pipeline CreateNew(string name, string organisation, string email, string telephone, string subject, string comment, int nodeId = 0, double value = 0, int probability = 50, int statusId = 0, Dictionary <string, dynamic> customProps = null)
        {
            var newPipeline = new Pipeline();

            // we need at least name, email and organisation
            if (String.IsNullOrEmpty(name) || String.IsNullOrEmpty(email))
            {
                return(newPipeline);
            }

            var taskController     = new TaskApiController();
            var orgController      = new OrganisationApiController();
            var contactController  = new ContactApiController();
            var pipelineController = new PipelineApiController();

            int currentOrgId = 0;

            if (!string.IsNullOrEmpty(organisation))
            {
                // check if we have an org with that email, if not create one
                var currentOrg = orgController.GetByName(organisation);
                if (currentOrg == null)  // organisation is optional
                {
                    currentOrg = orgController.PostSave(new Organisation()
                    {
                        Id          = 0,
                        UserId      = 0,
                        Name        = organisation,
                        DateCreated = DateTime.Now,
                        Email       = email
                    });

                    currentOrgId = currentOrg.Id;
                }
            }

            // check if we have a member with that email, if not create one
            var contact = contactController.GetByEmail(email);

            if (contact == null)
            {
                var newContact = new Contact()
                {
                    Id = 0,
                    OrganisationIds = currentOrgId.ToString(),
                    Name            = name,
                    Telephone       = telephone,
                    Email           = email
                };
                contact = contactController.PostSave(newContact);
            }

            // install cookie for personalised content
            HttpCookie cookie = new HttpCookie("PipelineContactId");

            cookie.Value   = contact.Id.ToString();
            cookie.Expires = DateTime.MaxValue;
            HttpContext.Current.Response.SetCookie(cookie);

            //finally, create a new pipeline and note
            newPipeline = pipelineController.PostSave(new Pipeline()
            {
                Name           = subject,
                DateCreated    = DateTime.Now,
                StatusId       = statusId,
                OrganisationId = currentOrgId,
                ContactId      = contact.Id,
                Value          = value,
                DateComplete   = DateTime.Now,
                Probability    = probability, // todo: read from node
            });

            if (customProps != null)
            {
                newPipeline.UpdateProperties(customProps);
            }


            if (!String.IsNullOrEmpty(comment))
            {
                var newNote = taskController.PostSave(new GrowCreate.PipelineCRM.Models.Task()
                {
                    Description = comment,
                    PipelineId  = newPipeline.Id,
                    UserId      = -1
                });
            }
            return(newPipeline);
        }