@isTest
private class taskManageControllerTest {
	@TestSetup
	public static void setUp() {
		RecordType rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Hp'];
		List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName IN ('Department_GI', 'Department_BF') order by DeveloperName desc];

		Account acc = new Account();
		acc.RecordTypeId = rectCo.Id;
		acc.Name = 'HP test1';

		insert acc;

		List<Account> dept = [select Id, Name from Account where ParentId = :acc.Id and Department_Class_Label__c IN ('消化科', '呼吸科') order by Department_Class_Label__c];

		Account depart1 = new Account();
		depart1.RecordTypeId = rectDpt[0].Id;
		depart1.Name         = '*';
		depart1.Department_Name__c  = 'Gastoro Intestin Test';
		depart1.ParentId            = dept[0].Id;
		depart1.Department_Class__c = dept[0].Id;
		depart1.Hospital__c         = acc.Id;

		Account depart2 = new Account();
		depart2.RecordTypeId = rectDpt[1].Id;
		depart2.Name         = '*';
		depart2.Department_Name__c  = '診療科2';
		depart2.ParentId            = dept[1].Id;
		depart2.Department_Class__c = dept[1].Id;
		depart2.Hospital__c         = acc.Id;
		insert new Account[] {depart1, depart2};


		Task__c task = new Task__c();
		task.Account__c = depart2.id;
		task.Name = '11111';
		task.taskStatus__c = '01 分配';
		task.assignee__c = UserInfo.getUserId();
		insert task;
	
	//  2021-10-22  mzy  任务管理改善   start
		Task__c task2 = new Task__c();
		task2.Account__c = depart2.id;
		task2.Name = '22222';
		task2.taskStatus__c = '01 分配';
		task2.TaskDifferent__c = '上级分配任务';
		task2.assignee__c = UserInfo.getUserId();
		insert task2;

		Task__c task3 = new Task__c();
		task3.Account__c = depart2.id;
		task3.Name = '3333';
		task3.taskStatus__c = '04 取消';
		task3.assignee__c = UserInfo.getUserId();
		insert task3;
     //  2021-10-22   mzy  任务管理改善  end
	}
	@isTest
	public static void test_getCurrentTask() {
		taskManageController.getCurrentTask(Null, Null,
		                                    Null, Null,
		                                    Null, Null,
		                                    Null, Null,
		                                    Null, Null,
		                                    Null, Null,
		                                    Null, Null,
											Null);
	}
	@isTest
	public static void test_confirmOrDelay() {
		task__c task =
		    [select id
		     from Task__c
		     where Name = '11111'];
	// //confirmOrDelay(boolean isDelay, 
	// string delayReason, 
	// string delayReasonOther, 
	// string taskID,
	//Boolean IsGeneratePlan,
	// Date ActivityDate,
	// Date feedbackPlanDate)		 
		taskManageController.confirmOrDelay(false,
		                                    Null,'', task.id,false,Date.today(),Date.today());

	}
	@isTest
	public static void test_resetAssignee() {
		task__c task =
		    [select id
		     from Task__c
		     where Name = '11111'];
		taskManageController.resetAssignee(UserInfo.getUserId(),  task.id);
	}
	@isTest
	public static void test_getMyTask() {
		taskManageController.getMyTask(Null, Null,
		                               Null, Null,
		                               Null, Null,
									   Null
		                              );
	}
	@isTest
	public static void test_getSubTask() {
		taskManageController.getSubTask(Null, Null,
		                                Null, Null,
		                                Null, Null, Null,
										Null
		                               );
	}
	@isTest
	public static void test_cancel() {
		task__c task =
		    [select id
		     from Task__c
		     where Name = '11111'];
		taskManageController.cancel(task.id, null,
		                            Null );
	}
	@isTest
	public static void test_TasksBuild() {
		task__c task =
		    [select id
		     from Task__c
		     where Name = '11111'];
		taskManageController.TasksBuild(
			new list<ID>{UserInfo.getUserId()},Null, Null,
		                                Null, Null,
		                                Null, Null, Null,
										Null
			);
	}
	@isTest
	public static void test_getpickerField() {
		taskManageController.getpickerField();
	}

	//2021-10-22  mzy  任务管理改善  start
	@isTest
	public static void test_resetAssignee_Owner() {
		task__c task =
		    [select id
		     from Task__c
		     where Name = '11111'];
		taskManageController.resetAssignee_Owner(UserInfo.getUserId(),  task.id);
	}
	@isTest
	public static void test_mergeTask() {
		List<task__c> taskList =
		    [select id,Name,taskStatus__c 
		     from Task__c
		     where assignee__c = :UserInfo.getUserId() AND taskStatus__c = '01 分配'];
		//System.assertEquals(null, taskList);	 
		List<String> taskIdList = new List<String> ();
		if(taskList.size()>0){
			for (task__c tsk : taskList) {
				taskIdList.add(tsk.Id);
			}
		}
		taskManageController.mergeTask(taskIdList);
	}
	//2021-10-22  mzy  任务管理改善   end
}