public void ShouldCreateTasksWithCorrectExecutionOrder() { // Arrange ManifestReader reader = this.CreateManifestReader(); Mock <IDatabaseTaskFactory> factory = new Mock <IDatabaseTaskFactory>(); Mock <IDatabaseTask> task = new Mock <IDatabaseTask>(); factory.Setup(f => f.CanCreate(It.IsAny <XElement>())).Returns(true); factory.Setup(f => f.Create(It.IsAny <XElement>(), It.IsAny <int>(), It.IsAny <IDatabaseVersion>())).Returns(task.Object); reader.Factories = new[] { factory.Object }; // Act IDatabaseVersion version = reader.Read(GetManifest(), ManifestPath, this.databaseArchive.Object); // Assert int expectedOrder = 0; foreach (IDatabaseTask createdTask in version.Tasks) { factory.Verify(f => f.Create(It.IsAny <XElement>(), expectedOrder, It.IsAny <IDatabaseVersion>())); expectedOrder++; } }
public ScriptTask(string fileName, int executionOrder, IDatabaseVersion version, IMessageService messageService, IPropertyService propertyService) : base(fileName, executionOrder, messageService) { this.version = version; this.propertyService = propertyService; this.StringSplitRegex = GetStringSplitRegex(); }
public void ShouldSetManifestPath() { // Arrange ManifestReader reader = this.CreateManifestReader(); // Act IDatabaseVersion version = reader.Read(GetManifest(), ManifestPath, databaseArchive.Object); // Assert Assert.Equal(ManifestPath, version.ManifestPath); }
private IDatabaseTask CreateTask(XElement element, IDatabaseVersion version) { if (this.Factories != null) { IDatabaseTaskFactory factory = this.Factories.FirstOrDefault(f => f.CanCreate(element)); if (factory != null) { return(factory.Create(element, element.ElementsBeforeSelf().Count(), version)); } } return(null); }
public void ShouldUseProviderToCreateVersion() { // Arrange ManifestReader reader = this.CreateManifestReader(); NumericVersion numericVersion = new NumericVersion(14); versionProvider.Setup(v => v.CreateVersion("14")).Returns(numericVersion); // Act IDatabaseVersion version = reader.Read(GetManifest(), ManifestPath, databaseArchive.Object); // Assert Assert.Equal(numericVersion, version.Version); }
/// <summary> /// Checks whether the specified version has been fully installed. /// </summary> /// <param name="session">The hibernate session.</param> /// <param name="version">The version to check.</param> /// <returns>true if the version exists and all its tasks have been installed, otherwise false.</returns> private bool CheckVersion(ISession session, IDatabaseVersion version) { var installedVersion = this.VersionProvider.GetVersion(session, version.Version); if (installedVersion == null) { this.MessageService.WriteLine(string.Format("Version {0} has not been installed.", version.Version.VersionText)); return(false); } return(CheckTasks(version, installedVersion)); }
public void ShouldUseTaskFactoryToCreateTasks() { // Arrange ManifestReader reader = this.CreateManifestReader(); Mock <IDatabaseTaskFactory> factory = new Mock <IDatabaseTaskFactory>(); Mock <IDatabaseTask> task = new Mock <IDatabaseTask>(); factory.Setup(f => f.CanCreate(It.Is <XElement>(r => r.Name == "script"))).Returns(true); factory.Setup(f => f.Create(It.Is <XElement>(r => r.Name == "script"), 0, It.IsAny <IDatabaseVersion>())).Returns(task.Object); reader.Factories = new[] { factory.Object }; // Act IDatabaseVersion version = reader.Read(GetManifest(OneTaskManifestPath), OneTaskManifestPath, this.databaseArchive.Object); // Assert Assert.Same(task.Object, version.Tasks.Single()); }
/// <summary> /// Checks whether all the tasks in the specified version have been run. /// </summary> /// <param name="version">The database version.</param> /// <param name="installedVersion">The current installed version.</param> /// <returns>true if all the tasks have been installed, otherwise false.</returns> private bool CheckTasks(IDatabaseVersion version, VersionBase installedVersion) { bool hasOutputVersion = false; bool allTasksInstalled = true; foreach (var task in version.Tasks) { if (!this.VersionProvider.HasExecutedScript(installedVersion, version.Version, task)) { if (!hasOutputVersion) { this.MessageService.WriteLine(string.Format("Version {0} missing:", version.Version.VersionText)); hasOutputVersion = true; } this.MessageService.WriteLine(" " + task.FileName); allTasksInstalled = false; } } return(allTasksInstalled); }
public IDatabaseTask Create(XElement element, int executionOrder, IDatabaseVersion version) { return(new ScriptTask(element.Attribute(XName.Get("file")).Value, executionOrder, version, this.MessageService, this.PropertyService)); }
/// <summary> /// compares this IDbVersion to another /// </summary> /// <param name="other"></param> /// <returns></returns> public int CompareTo(IDatabaseVersion other) { Version otherVersion = new Version(other.VersionString); int comparisonResult = this._underlyingVersion.CompareTo(otherVersion); return comparisonResult; }
private IEnumerable <IDatabaseTask> CreateTasks(XElement element, IDatabaseVersion version) { return(element.Elements() .Select(e => this.CreateTask(e, version)) .OfType <IDatabaseTask>()); // Use to remove nulls }