예제 #1
0
    protected void ButtonAddTask_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            var task = new Task
            {
                Name            = TextBoxName.Text,
                CategoryId      = Convert.ToInt32(DropDownListCategories.SelectedValue),
                StartDate       = CalendarStartTime.SelectedDate,
                DueDate         = CalendarDueDate.SelectedDate,
                Completed       = CheckBoxIsCompleted.Checked,
                Priority        = Convert.ToInt32(DropDownListPriority.SelectedValue),
                PercentComplete = Convert.ToInt16(TextBoxPercentComplete.Text),
                UserName        = User.Identity.Name
            };

            var validator = new TaskValidator();

            if (validator.Validate(task))
            {
                var repository = TaskRepository.Instance;
                repository.AddTask(task);
                LabelResults.Text = "Successfully added task";
                BulletedListErrorMessages.Items.Clear();
            }
            else
            {
                BulletedListErrorMessages.DataSource = validator.ErrorMessages;
                BulletedListErrorMessages.DataBind();
            }
        }
    }
예제 #2
0
        public void NoTasksError()
        {
            var validator = new TaskValidator();
            var taskTypes = new List <TaskTypes>();

            Assert.False(validator.ValidateTasks(taskTypes));
        }
예제 #3
0
        public void Correct_Task_Passes_Validation()
        {
            // Act
            bool result = new TaskValidator().Validate(_task).IsValid;

            // Verify
            Assert.IsTrue(result, "Task was incorrectly marked as invalid");
        }
예제 #4
0
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            TaskValidator validator = new TaskValidator();

            validator.ValidateUserId(UserId);
            validator.ValidateName(TaskName);

            return(validator.GetValidationResults());
        }
예제 #5
0
        public void TwoTasksError()
        {
            var validator = new TaskValidator();
            var taskTypes = new List <TaskTypes>()
            {
                TaskTypes.DeleteByAttribute, TaskTypes.DeleteBySize
            };

            Assert.False(validator.ValidateTasks(taskTypes));
        }
예제 #6
0
        public async Task Should_pass_if_name_is_unique()
        {
            var mock   = CreateRepository("name1", "name2");
            var target = new TaskValidator(mock);
            var result = await target.ValidateAsync(new Entities.Task {
                Name = "name3"
            });

            Assert.True(result);
        }
예제 #7
0
        public async Task Should_fail_if_name_is_empty()
        {
            var mock   = CreateRepository("name1", "name2");
            var target = new TaskValidator(mock);
            var result = await target.ValidateAsync(new Entities.Task {
                Name = ""
            });

            Assert.False(result);
        }
예제 #8
0
        public void Task_With_Null_Name_Is_Invalid()
        {
            // Setup
            _task.Name = null;

            // Act
            bool result = new TaskValidator().Validate(_task).IsValid;

            // Verify
            Assert.IsFalse(result, "Task was incorrectly marked as valid");
        }
예제 #9
0
        public void Validate()
        {
            var validator = new TaskValidator();

            var validationResult = validator.Validate(this);

            if (!validationResult.IsValid)
            {
                throw new ValidationException(string.Join(";", validationResult.Errors.Select(i => i.ErrorCode)));
            }
        }
예제 #10
0
        public void ValidateInput_WithTaskDescriptionNull_ShouldThrowException()
        {
            var    taskValidator = new TaskValidator();
            Action action        = () => taskValidator.ValidateTask(new Task()
            {
                Id = 1, AssigneeId = 1, Assignee = new Assignee()
                {
                    Id = 1, Name = "Dave"
                }, DueDate = DateTime.Now
            });

            action.Should().Throw <InvalidDataException>().WithMessage("Task must have a description");
        }
예제 #11
0
        public void ValidateInput_WithTaskDescLength_ShouldThrowException()
        {
            var    taskValidator = new TaskValidator();
            Action action        = () => taskValidator.ValidateTask(new Task()
            {
                Id = 1, AssigneeId = 1, Assignee = new Assignee()
                {
                    Id = 1, Name = "Dave"
                }, Description = "AYY", DueDate = DateTime.Now
            });

            action.Should().Throw <InvalidDataException>().WithMessage("Task description has to be at least 5 characters long");
        }
예제 #12
0
    protected void ButtonEditTask_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            try
            {
                // Need to retrieve the task again in case there are multiple tabs open on the browser.
                // This ensures that the task actually still exists and was not already edited to 'completed' status.
                int  taskId     = Convert.ToInt32(Request["taskId"]);
                var  repository = TaskRepository.Instance;
                Task task       = repository.GetTask(taskId);

                if (task == null || task.Completed)
                {
                    throw new Exception(string.Format("Could not edit task with id '{0}'. It does not exist or is already in the completed status", taskId));
                }

                if (task.UserName != User.Identity.Name)
                {
                    throw new Exception("You cannot edit a task that does not belong to you!");
                }

                task.CategoryId      = Convert.ToInt32(DropDownListCategories.SelectedValue);
                task.StartDate       = CalendarStartTime.SelectedDate;
                task.DueDate         = CalendarDueDate.SelectedDate;
                task.Completed       = CheckBoxIsCompleted.Checked;
                task.Priority        = Convert.ToInt32(DropDownListPriority.Text);
                task.PercentComplete = Convert.ToInt16(TextBoxPercentComplete.Text);

                var validator = new TaskValidator();

                if (validator.Validate(task))
                {
                    repository.UpdateTask(task);
                    ButtonEditTask.Enabled = !task.Completed;
                    LabelResults.Text      = "Successfully edited task";
                    BulletedListErrorMessages.Items.Clear();
                }
                else
                {
                    BulletedListErrorMessages.DataSource = validator.ErrorMessages;
                    BulletedListErrorMessages.DataBind();
                }
            }
            catch (Exception ex)
            {
                LabelResults.Text = ex.Message;
            }
        }
    }
예제 #13
0
        public MessageFormat <TaskDTO> Add(TaskDTO taskDTO)
        {
            try
            {
                TaskValidator    taskValidator = new TaskValidator();
                ValidationResult result        = taskValidator.Validate(taskDTO);

                return(this.TaskRepository.Add(taskDTO));
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }
예제 #14
0
        public void Task_Validation()
        {
            var validator = new TaskValidator();

            validator.ShouldHaveValidationErrorFor(x => x.Deadline, new DelegatedTaskViewModel());
            validator.ShouldHaveValidationErrorFor(x => x.Type, new DelegatedTaskViewModel());

            validator.ShouldHaveValidationErrorFor(x => x.Deadline, new DateTime())
            .WithErrorMessage("Deadline can not be empty.");
            validator.ShouldHaveValidationErrorFor(x => x.Type, "")
            .WithErrorMessage("Select type.");


            validator.ShouldNotHaveValidationErrorFor(x => x.Deadline, DateTime.Now);
            validator.ShouldNotHaveValidationErrorFor(x => x.Type, "Order");
        }
예제 #15
0
        public void initialize()
        {
            TaskValidator validator = new TaskValidator();

            repo = new BaseRepository <Task>(validator);

            Task t1 = new Task(1, "desc1");
            Task t2 = new Task(2, "desc2");
            Task t3 = new Task(3, "desc3");
            Task t4 = new Task(4, "desc4");

            repo.add(t1);
            repo.add(t2);
            repo.add(t3);
            repo.add(t4);
        }
예제 #16
0
        public OperationResult <Task> AddTask(Task task)
        {
            TaskValidator    taskValidator    = new TaskValidator();
            ValidationResult validationResult = taskValidator.Validate(task);

            if (!validationResult.IsValid)
            {
                return(CreateFailureResult <Task>("Invalid Data", validationResult.Errors, "400"));
            }
            try
            {
                this.TaskRepository.Add(task);
                return(CreateSuccessResult <Task>("Task Added Successully", task));
            }
            catch (Exception exception)
            {
                Logger.Instance.Error(exception.Message, exception);
                return(CreateFailureResult <Task>(exception.Message, null, "500"));
            }
        }
예제 #17
0
        public void CreateTask(Task task)
        {
            var taskValidator = new TaskValidator();

            errors.Clear();

            ValidationResult result = taskValidator.Validate(task);

            if (result.IsValid)
            {
                _dbContext.Tasks.Add(task);
                _dbContext.SaveChanges();
            }
            else
            {
                foreach (ValidationFailure failure in result.Errors)
                {
                    errors.Add($"{failure.PropertyName}: {failure.ErrorMessage}");
                }
            }
        }
예제 #18
0
        static void Main()
        {
            IValidator <Post> valPost = new PostValidator();
            IValidator <Task> valTask = new TaskValidator();
            //PostsRepository repoPosts = new PostsRepository(valPost);
            FilePostsRepository      repoPosts          = new FilePostsRepository(valPost, "D:/faculta/semIII/2_map/c#/PostsAndTasksApp/PostsAndTasksApp/Files/posts.txt");
            FileTasksRepository      repoTasks          = new FileTasksRepository(valTask, "D:/faculta/semIII/2_map/c#/PostsAndTasksApp/PostsAndTasksApp/Files/tasks.txt");
            JobDescriptionRepository repoJobDescription = new JobDescriptionRepository();

            PostsService          servicePosts          = new PostsService(repoPosts);
            TasksService          serviceTasks          = new TasksService(repoTasks);
            JobDescriptionService serviceJobDescription = new JobDescriptionService(servicePosts, serviceTasks, repoJobDescription);

            PostsController ctrlPosts = new PostsController(valPost, servicePosts);
            TasksController ctrlTasks = new TasksController(valTask, serviceTasks);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            PositionsWin view = new PositionsWin(ctrlPosts, ctrlTasks, serviceJobDescription);

            Application.Run(view);
        }
예제 #19
0
        public void CanThrowAnExceptionOnEmptyParameters()
        {
            var simpleTask = new TestTask("");

            TaskValidator.ValidateTask(simpleTask);
        }
예제 #20
0
        public void CanThrowAnExceptionOnNullStuff()
        {
            var simpleTask = new TestTask(null, "echo {}");

            TaskValidator.ValidateTask(simpleTask);
        }
예제 #21
0
        public void TestInitialize()
        {
            var factory = AssemblyConfiguration.Kernel.Get <ValidatorFactory>();

            _sut = factory.GetInstance <TaskValidator>();
        }