public ReleaseNoteViewModel(IReleaseNoteRepositories repos, Guid id, IUserNotify notify, ISecurityContext ctx) { this.repos = repos; this.notify = notify; this.ctx = ctx; saveCommand = ViewModelSource.Create(() => new SaveReleaseNoteCommand(this, repos, notify, ctx)); shipCommand = ViewModelSource.Create(() => new ShipReleaseNoteCommand(this, repos, notify, ctx)); unshipCommand = ViewModelSource.Create(() => new UnshipReleaseNoteCommand(this, repos, notify, ctx)); ReleaseNotePipes = new PlainPipeBindingList(); if (id == Guid.Empty) { NewRailcar(); } else { ReleaseNote = repos.ReleaseNoteRepo.Get(id); if (ReleaseNote == null) { log.Error(string.Format("Release Note (id:{0}) does not exist.", id)); // TODO: user message? close document? } else { IList <Pipe> pipes = repos.ReleaseNoteRepo.GetReleasedNotePipe(id); foreach (var p in pipes) { ReleaseNotePipes.Add(new PlainPipe(p)); } } } }
public ReleaseNoteViewModel(IReleaseNoteRepositories repos, Guid id, IUserNotify notify, ISecurityContext ctx) { try { this.repos = repos; this.notify = notify; this.ctx = ctx; saveCommand = ViewModelSource.Create(() => new SaveReleaseNoteCommand(this, repos, notify, ctx)); shipCommand = ViewModelSource.Create(() => new ShipReleaseNoteCommand(this, repos, notify, ctx)); unshipCommand = ViewModelSource.Create(() => new UnshipReleaseNoteCommand(this, repos, notify, ctx)); ReleaseNotePipes = new PlainPipeBindingList(); if (id == Guid.Empty) { NewRailcar(); } else { ReleaseNote = repos.SimpleNoteRepo.Get(id); if (ReleaseNote == null) { log.Error(string.Format("Release Note (id:{0}) does not exist.", id)); // TODO: user message? close document? } else { IList <SimplePipe> pipes = repos.SimpleNoteRepo.GetReleasedNotePipe(id); foreach (var p in pipes) { ReleaseNotePipes.Add(new PlainPipe(p)); } } } } catch (RepositoryException ex) { log.Warn(this.GetType().Name + " | " + ex.ToString()); notify.ShowWarning(Program.LanguageManager.GetString(StringResources.Notification_Error_Db_Message), Program.LanguageManager.GetString(StringResources.Notification_Error_Db_Header)); } }
public void TestSaveNewRailcar() { //FIX: Test was broken! var notify = new Mock<IUserNotify>(); var view = new Mock<IModifiable>(); var railcarRepo = new Mock<IRailcarRepository>(); var pipeRepo = new Mock<IPipeRepository>(); var releaseRepo = new Mock<IReleaseNoteRepository>(); var simpleReleaseRepo = new Mock<ISimpleNoteRepository>(); //pipeRepo.Setup(x => x.GetStored()).Returns(new List<SimplePipe>() { new SimplePipe() }); var repos = new Mock<IReleaseNoteRepositories>(); var ctx = new Mock<ISecurityContext>(); repos.SetupGet(_ => _.PipeRepo).Returns(pipeRepo.Object); repos.SetupGet(_ => _.RailcarRepo).Returns(railcarRepo.Object); repos.SetupGet(_ => _.ReleaseNoteRepo).Returns(releaseRepo.Object); repos.SetupGet(_ => _.SimpleNoteRepo).Returns(simpleReleaseRepo.Object); var viewModel = new ReleaseNoteViewModel(repos.Object, Guid.Empty, notify.Object,ctx.Object); viewModel.ModifiableView = new Mock<IModifiable>().Object; var validatable = new Mock<IValidatable>(); validatable.Setup(x => x.Validate()).Returns(true); viewModel.validatableView = validatable.Object; viewModel.ReleaseNote = new SimpleNote(); viewModel.Number = "Test Railcar"; viewModel.Date = DateTime.Now; viewModel.ModifiableView = view.Object; viewModel.Railcar.Pipes.Add(new SimplePipe()); var command = new SaveReleaseNoteCommand(viewModel, repos.Object, notify.Object, ctx.Object); command.Execute(); repos.Verify(_ => _.BeginTransaction(), Times.Once()); //railcarRepo.Verify(_ => _.SaveOrUpdate(viewModel.Railcar), Times.Once()); repos.Verify(_ => _.Commit(), Times.Once()); //railcarRepo.Verify(_ => _.Evict(viewModel.Railcar), Times.Once()); }
public void AddFileToRailcar() { if (!Directory.Exists(Directories.FilesToAttachFolder)) { Directory.CreateDirectory(Directories.FilesToAttachFolder); DirectoryInfo directoryInfo = new DirectoryInfo(Directories.FilesToAttachFolder); directoryInfo.Attributes |= FileAttributes.Hidden; } using (FileStream fs = System.IO.File.Create(Directories.FilesToAttachFolder + "test.txt")) { Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file."); fs.Write(info, 0, info.Length); } var notify = new Mock<IUserNotify>(); var view = new Mock<IModifiable>(); var railcarRepo = new Mock<IRailcarRepository>(); var simpleNoteRepo = new Mock<ISimpleNoteRepository>(); var pipeRepo = new Mock<IPipeRepository>(); var ctx = new Mock<ISecurityContext>(); pipeRepo.Setup(x => x.GetStored()).Returns(new List<Pipe>() { new Pipe() }); var repos = new Mock<IReleaseNoteRepositories>(); repos.SetupGet(_ => _.PipeRepo).Returns(pipeRepo.Object); repos.SetupGet(_ => _.RailcarRepo).Returns(railcarRepo.Object); repos.SetupGet(_ => _.SimpleNoteRepo).Returns(simpleNoteRepo.Object); var fileRepo = new Mock<IFileRepository>(); var projectRepo = new Mock<IProjectRepository>(); var externalFilesRepo = new Mock<IExternalFilesRepositories>(); projectRepo.Setup(x => x.GetSingle()).Returns(new Project()); externalFilesRepo.SetupGet(_ => _.FileRepo).Returns(fileRepo.Object); externalFilesRepo.SetupGet(_ => _.ProjectRepo).Returns(projectRepo.Object); var fileViewModel = new ExternalFilesViewModel(externalFilesRepo.Object, notify.Object); fileViewModel.FilesToAttach.Add("test.txt", "test.txt"); var viewModel = new ReleaseNoteViewModel(repos.Object, Guid.Empty, notify.Object, ctx.Object); viewModel.ModifiableView = new Mock<IModifiable>().Object; var validatable = new Mock<IValidatable>(); validatable.Setup(x => x.Validate()).Returns(true); viewModel.validatableView = validatable.Object; viewModel.Railcar.Number = "Test Railcar"; viewModel.Number = "Test Railcar"; viewModel.Date = DateTime.Now; viewModel.ModifiableView = view.Object; viewModel.FilesFormViewModel = fileViewModel; viewModel.Railcar.Pipes.Add(new SimplePipe()); var command = new SaveReleaseNoteCommand(viewModel, repos.Object, notify.Object, ctx.Object); command.Execute(); repos.Verify(_ => _.BeginTransaction(), Times.Once()); simpleNoteRepo.Verify(_ => _.SaveOrUpdate(It.IsAny<SimpleNote>()), Times.Once()); repos.Verify(_ => _.Rollback(), Times.AtMostOnce()); repos.Verify(_ => _.Commit(), Times.Once()); simpleNoteRepo.Verify(_ => _.Evict(It.IsAny<SimpleNote>()), Times.Once()); if (Directory.Exists(Directories.TargetPath)) { Directory.Delete(Directories.TargetPath, true); } }