public void Parse_Positive() { var actionWorkflow1 = new ActionWorkflow { Name = "workflow-1" }; var actionWorkflow2 = new ActionWorkflow { Name = "workflow-2" }; var deserializerMock = Mock.Create <IDeserializer>(); Mock.Arrange(() => deserializerMock.Deserialize <ActionWorkflow>( Arg.Matches <StreamReader>(r => Path.GetFileName((r.BaseStream as FileStream).Name) == _fixture.Files[0]))) .Returns(actionWorkflow1); Mock.Arrange(() => deserializerMock.Deserialize <ActionWorkflow>( Arg.Matches <StreamReader>(r => Path.GetFileName((r.BaseStream as FileStream).Name) == _fixture.Files[1]))) .Returns(actionWorkflow2); var deserializerFactoryMock = Mock.Create <IDeserializerFactory>(); Mock.Arrange(() => deserializerFactoryMock.Get()).Returns(deserializerMock); var parser = new WorkflowParser(deserializerFactoryMock); IEnumerable <WorkflowInfo> result = parser.Parse(_fixture.Files); Assert.Equal(2, result.Count()); WorkflowInfo workflowInfo = result.First(); Assert.Equal(_fixture.Files[0], workflowInfo.File.FilePath); Assert.Equal(actionWorkflow1, workflowInfo.Workflow); workflowInfo = result.Last(); Assert.Equal(_fixture.Files[1], workflowInfo.File.FilePath); Assert.Equal(actionWorkflow2, workflowInfo.Workflow); }
public void Test_GettersSetters() { const string file = "test-file"; var actionWorkflow = new ActionWorkflow(); var wfi = new WorkflowInfo(file, actionWorkflow); Assert.NotNull(wfi.File); Assert.Equal(file, wfi.File.FilePath); Assert.Same(actionWorkflow, wfi.Workflow); }
public void Test_GettersSetters() { const string name = "test-name"; var jobs = new Dictionary <string, Job> { { "some-key", new Job() }, }; var actionWorkflow = new ActionWorkflow { Name = name, Jobs = jobs }; Assert.Equal(name, actionWorkflow.Name); Assert.Equal(jobs, actionWorkflow.Jobs); }
public void Run_ShouldUpgrade(bool shouldUpgrade, bool isOutdatedEmpty) { const string repository = "test-repository"; IEnumerable <WorkflowInfo> infos = new List <WorkflowInfo>(); var workflowServiceMock = Mock.Create <IWorkflowService>(); Mock.Arrange(() => workflowServiceMock.GetWorkflows(repository)).Returns(infos); IDictionary <WorkflowInfo, IEnumerable <GitHubAction> > outdated; var actionPrinterMock = Mock.Create <IActionPrinter>(); if (isOutdatedEmpty) { outdated = new Dictionary <WorkflowInfo, IEnumerable <GitHubAction> >(); Mock.Arrange(() => actionPrinterMock.PrintHeader(Arg.AnyString, Arg.AnyString)) .OccursNever(); Mock.Arrange(() => actionPrinterMock.Print(Arg.IsAny <IEnumerable <GitHubAction> >())) .OccursNever(); Mock.Arrange(() => actionPrinterMock.PrintNoUpgradeNeeded()).DoNothing().OccursOnce(); } else { const string fileName = ".github/test-file"; var actionWorkflow = new ActionWorkflow { Name = "test-action-workflow-name" }; var actions = new List <GitHubAction>(); outdated = new Dictionary <WorkflowInfo, IEnumerable <GitHubAction> > { { new WorkflowInfo($"some-folder/{fileName}", actionWorkflow), actions } }; Mock.Arrange(() => actionPrinterMock.PrintHeader(actionWorkflow.Name, fileName)) .DoNothing().OccursOnce(); Mock.Arrange(() => actionPrinterMock.Print(actions)) .DoNothing().OccursOnce(); Mock.Arrange(() => actionPrinterMock.PrintNoUpgradeNeeded()).OccursNever(); } var gitHubServiceMock = Mock.Create <IGitHubService>(); Mock.Arrange(() => gitHubServiceMock.GetOutdated(infos)).Returns(outdated); var progressBarMock = Mock.Create <Ghacu.Runner.Cli.Progress.IProgressBar>(); Mock.Arrange(() => progressBarMock.Report(0.25)).DoNothing().OccursOnce(); Mock.Arrange(() => progressBarMock.Dispose()).DoNothing().OccursOnce(); var streamerMock = Mock.Create <IStreamer>(); Mock.Arrange(() => streamerMock.Push <CliService>(Arg.IsAny <StreamOptions>())).OccursNever(); IAssertable pushEmptySetup = Mock.Arrange(() => streamerMock.PushEmpty()).DoNothing(); IAssertable runUpgradeSetup = Mock.Arrange(() => actionPrinterMock.PrintRunUpgrade()).DoNothing(); if (isOutdatedEmpty) { pushEmptySetup.OccursNever(); runUpgradeSetup.OccursNever(); } else if (!shouldUpgrade) { pushEmptySetup.OccursOnce(); runUpgradeSetup.OccursOnce(); } var service = new CliService( workflowServiceMock, gitHubServiceMock, actionPrinterMock, null, streamerMock); service.Run(repository, shouldUpgrade); Mock.Assert(workflowServiceMock); Mock.Assert(gitHubServiceMock); Mock.Assert(actionPrinterMock); Mock.Assert(streamerMock); }
public void Upgrade_FileValid(string[] current, string[] latest, string[] result) { var actionWorkflow = new ActionWorkflow { Jobs = new Dictionary <string, Job> { { "github", new Job { Steps = current.Select((v, i) => { var step = new Step { Uses = $"own{i}/repo{i}@{v}" }; step.Action.LatestVersion = latest[i]; return(step); }) } }, { "docker", new Job { Steps = current.Select((v, i) => { var step = new Step { Uses = $"docker://d{i}.com:{v}" }; step.Action.LatestVersion = latest[i]; return(step); }) } } } }; var original = @" name: Test jobs: github: steps: "; original += string.Join("\n", current.Select( (v, i) => $" uses: own{i}/repo{i}@{v}")); original += @" docker: steps: "; original += string.Join("\n", current.Select( (v, i) => $" uses: docker://d{i}.com:{v}")); var expected = @" name: Test jobs: github: steps: "; expected += string.Join("\n", result.Select( (v, i) => $" uses: own{i}/repo{i}@{v}")); expected += @" docker: steps: "; expected += string.Join("\n", result.Select( (v, i) => $" uses: docker://d{i}.com:{v}")); const string file = "./test.yml"; File.WriteAllText(file, original); try { var wfi = new WorkflowInfo(file, actionWorkflow); wfi.Upgrade(); Assert.Equal(expected, File.ReadAllText(file)); } finally { File.Delete(file); } }