/// <summary>
        /// setup code
        /// </summary>
        private void before_each()
        {
            _tasks = new List<TaskItem>();
            _taskRepository = Substitute.For<ITaskRepository>();
            _collectionSource = Substitute.For<ICollectionViewSourceFactory>();

            var wrappedCollectionViewSource = new WrappedCollectionViewSource<TaskItem>();
            _collectionSource.CreateTaskListViewSource().Returns(wrappedCollectionViewSource);
            _taskListViewModel = null;
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="taskRepository">persistence layer of task repo</param>
        /// <param name="factory"></param>
        public TaskListViewModel(ITaskRepository taskRepository, ICollectionViewSourceFactory factory)
        {
            _taskRepository = taskRepository;
            //default task is empty
            NewTaskDescription = string.Empty;
            _activeTaskListState = TaskListState.All;
            VisibleTasks = factory.CreateTaskListViewSource();
            _currentActiveFilter = AllFilter;

            //relay commands
            AddNewTask = new RelayCommand(CreateNewTask);
            DeleteTask = new RelayCommand<TaskItemViewModel>(deleteTask);
            ToggleStateOfTask = new RelayCommand<TaskItemViewModel>(toggleCopleteTask);
            DeleteCompleted = new RelayCommand(DeleteCompletedTask, () => ClearCompletedTasksEnabled);

            FetchTasks();
            
           
        }