public void GivenConfigWithProjectWithJobAndUpdateSteamWorkshopItemTask__WhenParsing__JobShouldHaveTask() { const string lua = @" local p = project('test') local j = p:add_job('test-job') j:add_task(update_steam_workshop_item { app_id = 32470, title = 'my-test-item', description_file = 'path/to/description', item_folder = 'path/to/folder', visibility = visibility.private, language = 'English' }) "; _mockFileData.TextContents = lua; JobStub jobStub = new JobStub(); TaskDummy taskDummy = new TaskDummy(); BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub, taskDummy); MakeSutAndParse(factoryStub); ITask actualTask = jobStub.Tasks.First(); Assert.AreEqual(taskDummy, actualTask); }
public void Execute_JobClassProvided_ShouldScheduleNewJob() { const string groupName = "Group"; const string jobName = "Job"; var stub = new SchedulerHostStub(new[] { typeof(System.Object) }); var command = new AddTriggerCommand(() => stub.Value, new RegisteredInputType[0]); AddTriggerOutput result = (AddTriggerOutput)command.Execute(new AddTriggerInput { Group = groupName, Job = jobName, JobClass = typeof(System.Object).ToString(), Name = "Trigger", TriggerType = "Simple" }); result.AssertSuccessfull(); GroupStub group = stub.GetSingleGroup(); JobStub job = group.GetSingleJob(); TriggerStub trigger = job.GetSingleTrigger(); Assert.That(group.Name, Is.EqualTo(groupName)); Assert.That(job.Name, Is.EqualTo(jobName)); Assert.That(job.JobType, Is.EqualTo(typeof(System.Object))); Assert.That(trigger.Name, Is.EqualTo("Trigger")); }
public void GivenJobWithMultipleTasks__WhenCallingParse__JobShouldHaveAllTasks() { const string lua = @" local p = project('test') local j = p:add_job('test-job') j:add_tasks { run_process('echo'), copy('a', 'b') } "; _mockFileData.TextContents = lua; JobStub jobStub = new JobStub(); ITask[] expectedTasks = { new TaskDummy(), new TaskDummy() }; BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Job = jobStub, TaskBuilder = new IteratingTaskBuilderStub { Tasks = expectedTasks.ToList() } }; MakeSutAndParse(factoryStub); List <ITask> actualTasks = jobStub.Tasks; CollectionAssert.AreEqual(expectedTasks, actualTasks); }
public void Execute_NoJobClass_ShouldAddTriggerToExistingJob() { const string groupName = "Group"; const string jobName = "Job"; var stub = new SchedulerHostStub(); var command = new AddTriggerCommand(() => stub.Value, new RegisteredInputType[0]); AddTriggerOutput result = (AddTriggerOutput)command.Execute(new AddTriggerInput { Group = groupName, Job = jobName, Name = "Trigger", TriggerType = "Simple" }); result.AssertSuccessfull(); GroupStub group = stub.GetSingleGroup(); JobStub job = group.GetSingleJob(); TriggerStub trigger = job.GetSingleTrigger(); Assert.That(group.Name, Is.EqualTo(groupName)); Assert.That(job.Name, Is.EqualTo(jobName)); Assert.That(job.JobType, Is.Null); Assert.That(trigger.Name, Is.EqualTo("Trigger")); }
public void GivenProjectWithJobAndTwoTasks__WhenCallingParse__ShouldAddBothTasksToJob() { const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <eaw-ci:BuildConfiguration ConfigVersion=""1.0.0"" xmlns:eaw-ci=""eaw-ci"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <Projects> <Project Id=""idvalue0""> <Jobs> <Job Id=""idvalue1"" Name=""TestJob""> <Tasks> <Task Id=""idvalue2"" Name=""FirstTask"" xsi:type=""eaw-ci:Copy""> <CopyFromPath>path/to/first/source</CopyFromPath> <CopyToPath>path/to/first/dest</CopyToPath> <CopySubfolders>true</CopySubfolders> <CopyFileByPattern>*</CopyFileByPattern> <AlwaysOverwrite>false</AlwaysOverwrite> </Task> <Task Id=""idvalue3"" Name=""SecondTask"" xsi:type=""eaw-ci:Copy""> <CopyFromPath>path/to/second/source</CopyFromPath> <CopyToPath>path/to/second/dest</CopyToPath> <CopySubfolders>true</CopySubfolders> <CopyFileByPattern>*</CopyFileByPattern> <AlwaysOverwrite>false</AlwaysOverwrite> </Task> </Tasks> </Job> </Jobs> </Project> </Projects> </eaw-ci:BuildConfiguration>"; _mockFileData.TextContents = xml; JobStub jobStub = new JobStub(); TaskDummy firstTask = new TaskDummy(); TaskDummy secondTask = new TaskDummy(); IteratingTaskBuilderStub taskBuilderStub = new IteratingTaskBuilderStub(); taskBuilderStub.Tasks.Add(firstTask); taskBuilderStub.Tasks.Add(secondTask); BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Job = jobStub, TaskBuilder = taskBuilderStub }; XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub); sut.Parse(Path); AssertJobHasExpectedTask(jobStub, firstTask); AssertJobHasExpectedTask(jobStub, secondTask); }
public void GivenLuaJobWithJob__WhenCallingAddTasksWithNonTaskValue__ShouldThrowLuaScriptException() { using NLua.Lua luaInterpreter = new NLua.Lua(); LuaTable invalidTable = MakeLuaTable(luaInterpreter, "invalidTable"); invalidTable[1] = "Invalid"; JobStub jobStub = new JobStub(); LuaJob sut = new LuaJob(jobStub); sut.add_tasks(invalidTable); }
public void GivenLuaProject__WhenAddingJob__ShouldReturnLuaJob() { JobStub jobStub = new JobStub(); BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Project = new ProjectStub(), Job = jobStub }; LuaProject sut = new LuaProject("TestProject", factoryStub); LuaJob actual = sut.add_job("test-job"); Assert.IsInstanceOfType(actual, typeof(LuaJob)); }
public void GivenLuaJobWithJob__WhenCallingAddTask__ContainedJobShouldHaveTask() { JobStub jobStub = new JobStub(); TaskDummy taskDummy = new TaskDummy(); LuaJob sut = new LuaJob(jobStub); LuaTaskStub luaTaskStub = new LuaTaskStub { Task = taskDummy }; sut.add_task(luaTaskStub); CollectionAssert.Contains(jobStub.Tasks, taskDummy); }
public void New_activator_given_kernel_should_call_kernel_to_resolve_job_type() { var jobType = typeof(JobStub); var actualJob = new JobStub(); var kernel = A.Fake<IKernel>(); A.CallTo(() => kernel.Resolve(jobType)).Returns(actualJob); var activator = new WindsorJobActivator(kernel); var returnedJob = activator.ActivateJob(jobType); A.CallTo(() => kernel.Resolve(jobType)).MustHaveHappened(); Assert.AreEqual(actualJob, returnedJob); }
public void New_activator_given_kernel_should_call_kernel_to_resolve_job_type() { var jobType = typeof(JobStub); var actualJob = new JobStub(); var kernel = A.Fake <IKernel>(); A.CallTo(() => kernel.Resolve(jobType)).Returns(actualJob); var activator = new WindsorJobActivator(kernel); var returnedJob = activator.ActivateJob(jobType); A.CallTo(() => kernel.Resolve(jobType)).MustHaveHappened(); Assert.AreEqual(actualJob, returnedJob); }
public void GivenGlobalCopyTaskAndReferenceInProjectJob__WhenCallingParse__ShouldAddTaskToJob() { const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <eaw-ci:BuildConfiguration ConfigVersion=""1.0.0"" xmlns:eaw-ci=""eaw-ci"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <GlobalTasks> <TaskDefinition Id=""TestTask"" xsi:type=""eaw-ci:Copy""> <CopyFromPath>path/to/source</CopyFromPath> <CopyToPath>path/to/dest</CopyToPath> <CopySubfolders>true</CopySubfolders> <CopyFileByPattern>*</CopyFileByPattern> <AlwaysOverwrite>false</AlwaysOverwrite> </TaskDefinition> </GlobalTasks> <Projects> <Project Id=""idvalue1""> <Jobs> <Job Id=""idvalue2"" Name=""TestJob""> <Tasks> <TaskReference ReferenceId=""TestTask"" /> </Tasks> </Job> </Jobs> </Project> </Projects> </eaw-ci:BuildConfiguration>"; _mockFileData.TextContents = xml; JobStub jobStub = new JobStub(); TaskBuilderStub taskBuilderStub = new TaskBuilderStub(); BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Job = jobStub, TaskBuilder = taskBuilderStub }; XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub); sut.Parse(Path); AssertJobHasExpectedTask(jobStub, taskBuilderStub.Task); }
public void GivenConfigWithProjectAndJob__WhenParsing__ProjectShouldHaveJob() { const string lua = @" local p = project('test') p:add_job('test-job') "; _mockFileData.TextContents = lua; JobStub jobStub = new JobStub(); BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub); IEnumerable <IProject> projects = MakeSutAndParse(factoryStub); ProjectStub actual = projects.First() as ProjectStub; IJob actualJob = actual?.Jobs.First(); Assert.AreSame(jobStub, actualJob); Assert.AreEqual("test-job", actualJob?.Name); }
public void GivenLuaProjectWithJob__WhenGettingProject__ProjectShouldHaveJob() { JobStub jobStub = new JobStub(); BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Project = new ProjectStub(), Job = jobStub }; LuaProject sut = new LuaProject("TestProject", factoryStub); sut.add_job("test-job"); ProjectStub actual = sut.Project as ProjectStub; IJob actualJob = actual?.Jobs.First(); Assert.AreSame(jobStub, actualJob); Assert.AreEqual("test-job", actualJob?.Name); }
public void GivenConfigWithProjectWithJobAndCopyTask__WhenParsing__JobShouldHaveTask() { const string lua = @" local p = project('test') local j = p:add_job('test-job') j:add_task(copy('a', 'b')) "; _mockFileData.TextContents = lua; JobStub jobStub = new JobStub(); TaskDummy taskDummy = new TaskDummy(); BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub, taskDummy); MakeSutAndParse(factoryStub); ITask actualTask = jobStub.Tasks.First(); Assert.AreEqual(taskDummy, actualTask); }
public void GivenLuaJobWithJob__WhenCallingAddTasks__ContainedJobShouldHaveAllTasks() { using NLua.Lua luaInterpreter = new NLua.Lua(); TaskDummy firstTaskDummy = new TaskDummy(); TaskDummy secondTaskDummy = new TaskDummy(); LuaTable taskTable = MakeLuaTable(luaInterpreter, "taskTable"); taskTable[1] = new LuaTaskStub { Task = firstTaskDummy }; taskTable[2] = new LuaTaskStub { Task = secondTaskDummy }; JobStub jobStub = new JobStub(); LuaJob sut = new LuaJob(jobStub); sut.add_tasks(taskTable); ITask[] expectedTasks = { firstTaskDummy, secondTaskDummy }; CollectionAssert.AreEqual(expectedTasks, jobStub.Tasks); }
GivenTwoGlobalTasksAndReferenceToSecondInProjectJob__WhenCallingParse__ShouldBuildSecondGlobalTask() { const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <eaw-ci:BuildConfiguration ConfigVersion=""1.0.0"" xmlns:eaw-ci=""eaw-ci"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <GlobalTasks> <TaskDefinition Id=""TestTask"" xsi:type=""eaw-ci:Copy""> <CopyFromPath>invalid</CopyFromPath> <CopyToPath>invalid</CopyToPath> <CopySubfolders>false</CopySubfolders> <CopyFileByPattern>*</CopyFileByPattern> <AlwaysOverwrite>false</AlwaysOverwrite> </TaskDefinition> <TaskDefinition Id=""ExpectedTask"" Name=""ExpectedTask"" xsi:type=""eaw-ci:Copy""> <CopyFromPath>path/to/source</CopyFromPath> <CopyToPath>path/to/dest</CopyToPath> <CopySubfolders>true</CopySubfolders> <CopyFileByPattern>*</CopyFileByPattern> <AlwaysOverwrite>false</AlwaysOverwrite> </TaskDefinition> </GlobalTasks> <Projects> <Project Id=""idvalue1""> <Jobs> <Job Id=""idvalue2"" Name=""TestJob""> <Tasks> <TaskReference ReferenceId=""ExpectedTask"" /> </Tasks> </Job> </Jobs> </Project> </Projects> </eaw-ci:BuildConfiguration>"; _mockFileData.TextContents = xml; JobStub jobStub = new JobStub(); TaskBuilderMock taskBuilderMock = new TaskBuilderMock(new Dictionary <string, object> { { "Id", "ExpectedTask" }, { "Name", "ExpectedTask" }, { "CopyFromPath", "path/to/source" }, { "CopyToPath", "path/to/dest" }, { "CopySubfolders", true }, { "CopyFileByPattern", "*" }, { "AlwaysOverwrite", false } }); BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub { Job = jobStub, TaskBuilder = taskBuilderMock }; XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub); sut.Parse(Path); taskBuilderMock.Verify(); }
private static void AssertJobHasExpectedTask(JobStub jobStub, ITask element) { CollectionAssert.Contains(jobStub.Tasks, element, "Should Job should have expected task, but does not."); }