public void TryLoadPathsForScriptCreationAsync_ArgumentNullException_Project() { // Arrange var vsMock = Mock.Of <IVersionService>(); var fsaMock = Mock.Of <IFileSystemAccess>(); var loggerMock = Mock.Of <ILogger>(); ISqlProjectService service = new SqlProjectService(vsMock, fsaMock, loggerMock); // Act & Assert // ReSharper disable AssignNullToNotNullAttribute Assert.Throws <ArgumentNullException>(() => service.TryLoadPathsForScriptCreationAsync(null, null, null, false)); // ReSharper restore AssignNullToNotNullAttribute }
public async Task TryLoadPathsForScriptCreationAsync_SuccessfullyCreated_SpecificVersion_NoPublishProfile_Async() { // Arrange var project = new SqlProject("a", @"C:\TestProject\TestProject.sqlproj", "c"); project.ProjectProperties.SqlTargetName = "TestSqlTarget"; project.ProjectProperties.DacVersion = new Version(40, 23, 4, 4948); var configuration = new ConfigurationModel { ArtifactsPath = "_TestDeployment", PublishProfilePath = ConfigurationModel.UseSinglePublishProfileSpecialKeyword, CreateDocumentationWithScriptCreation = true }; var vsMock = new Mock <IVersionService>(); vsMock.Setup(m => m.FormatVersion(It.IsNotNull <Version>(), configuration)) .Returns((Version version, ConfigurationModel c) => version.ToString()); var fsaMock = new Mock <IFileSystemAccess>(); fsaMock.Setup(m => m.GetFilesIn(@"C:\TestProject", "*.publish.xml")) .Returns(new string[0]); var loggerMock = new Mock <ILogger>(); ISqlProjectService service = new SqlProjectService(vsMock.Object, fsaMock.Object, loggerMock.Object); // Act var paths = await service.TryLoadPathsForScriptCreationAsync(project, configuration, new Version(40, 23, 3, 4932), false); // Assert Assert.IsNotNull(paths); loggerMock.Verify(m => m.LogErrorAsync(It.IsAny <string>()), Times.Never); loggerMock.Verify(m => m.LogErrorAsync(It.IsAny <Exception>(), It.IsAny <string>()), Times.Never); Assert.AreEqual(@"C:\TestProject", paths.Directories.ProjectDirectory); Assert.AreEqual(string.Empty, paths.DeploySources.PublishProfilePath); Assert.AreEqual(@"C:\TestProject\_TestDeployment\latest", paths.Directories.LatestArtifactsDirectory); Assert.AreEqual(@"C:\TestProject\_TestDeployment\40.23.4.4948", paths.Directories.NewArtifactsDirectory); Assert.AreEqual(@"C:\TestProject\_TestDeployment\40.23.4.4948\TestSqlTarget.dacpac", paths.DeploySources.NewDacpacPath); Assert.AreEqual(@"C:\TestProject\_TestDeployment\40.23.3.4932\TestSqlTarget.dacpac", paths.DeploySources.PreviousDacpacPath); Assert.AreEqual(@"C:\TestProject\_TestDeployment\40.23.4.4948\TestSqlTarget_40.23.3.4932_40.23.4.4948.sql", paths.DeployTargets.DeployScriptPath); Assert.AreEqual(@"C:\TestProject\_TestDeployment\40.23.4.4948\TestSqlTarget_40.23.3.4932_40.23.4.4948.xml", paths.DeployTargets.DeployReportPath); }
public async Task TryLoadPathsForScriptCreationAsync_Error_NoProjectDirectory_Async() { // Arrange var project = new SqlProject("a", @"C:\", "c"); var configuration = new ConfigurationModel(); var vsMock = Mock.Of <IVersionService>(); var fsaMock = Mock.Of <IFileSystemAccess>(); var loggedErrorMessages = new List <string>(); var loggerMock = new Mock <ILogger>(); loggerMock.Setup(m => m.LogErrorAsync(It.IsAny <string>())) .Callback((string message) => loggedErrorMessages.Add(message)) .Returns(Task.CompletedTask); ISqlProjectService service = new SqlProjectService(vsMock, fsaMock, loggerMock.Object); // Act var paths = await service.TryLoadPathsForScriptCreationAsync(project, configuration, new Version(1, 0), false); // Assert Assert.IsNull(paths); Assert.AreEqual(1, loggedErrorMessages.Count); Assert.AreEqual(@"Cannot get project directory for C:\", loggedErrorMessages[0]); }