public void TryDistributeTotalInput_ClientHourRegistrationHoursAreUpdatedAsExpected() { // Arrange new DispatcherFrame(); var headerClient = new ForecastRegistrationDateColumn(new DateTime(2013, 1, 1)) { ForecastTypeRegistration = new ForecastTypeRegistration(ForecastTestData.ProjectHoursOnlyForecastType, null) }; var headerOpen = new ForecastRegistrationDateColumn(new DateTime(2013, 1, 2)) { ForecastTypeRegistration = new ForecastTypeRegistration(ForecastTestData.DedicatedAndProjectHoursForcastType, null) }; var sut = new ProjectRegistration { Registrations = new ObservableCollection <ProjectHourRegistration>() }; AddClientHourRegistration(sut, headerClient, 7.5m); AddClientHourRegistration(sut, headerOpen, 4); // Act sut.TryDistributeTotalInput("14"); // Assert Assert.That(sut.Registrations.Single(x => x.SelectedPresencetypeSupportsProjectHoursOnly()).Hours, Is.EqualTo(7)); Assert.That(sut.Registrations.Single(x => x.SelectedPresencetypeSupportsDedicatedHours).Hours, Is.EqualTo(7)); }
private void UpdateProjectContributors(Project project, ProjectRegistration projectIn) { var existingContributors = unitOfWork.UserProjects.GetAllFromProject(project.Id); unitOfWork.UserProjects.RemoveRange(existingContributors); var userProjects = new List <UserProject>(); userProjects.Add(new UserProject { Project = project, User = project.Owner }); if (projectIn.Contributors.Count > 0) { foreach (var user in projectIn.Contributors) { var userProject = new UserProject { Project = project, User = user }; userProjects.Add(userProject); } } if (userProjects.Count > 0) { unitOfWork.UserProjects.AddRange(userProjects); } unitOfWork.Complete(); }
public bool Create(ProjectRegistration projectIn) { if (string.IsNullOrEmpty(projectIn.Name) || (projectIn.Owner == null) || (projectIn.Categories.Count < 1)) { return(false); } var project = new Project { Name = projectIn.Name, Description = projectIn.Description, Owner = projectIn.Owner, UserProjects = new List <UserProject>(), ProjectCategories = new List <ProjectCategory>() }; unitOfWork.Projects.Add(project); unitOfWork.Complete(); UpdateProjectContributors(project, projectIn); UpdateProjectCategories(project, projectIn); return(true); }
public void GenerateBaseDataByDate_DateIsInFebuary2013_DateDependentCollectionsAreInitialized() { // Arrange var frame = new DispatcherFrame(); var fixture = InitializeFixture(); var generator = new ForecastRegistrationDataGenerator(ForecastTestData.MockForecastTypeProvider(fixture).Object, null, new CopyStatusCommandHandler()); var timeEntryService = new Mock <ITimeEntryService>(); var appSettings = new Mock <IAppSettings>(); var viewModel = new ForecastRegistrationViewModel(generator, new ProjectSearchViewModel(null), null, null, null, null, null, ForecastTestData.MockForecastTypeProvider(fixture).Object, timeEntryService.Object, appSettings.Object, null); var clientRegistration = new ProjectRegistration { Registrations = new ObservableCollection <ProjectHourRegistration>() }; viewModel.ProjectRegistrations = new ProjectRegistrations { clientRegistration }; var date = new DateTime(2013, 2, 1); // Act generator.GenerateBaseDataByDate(date, viewModel); // Assert Assert.That(viewModel.DateColumns, Is.Not.Empty); Assert.That(viewModel.PresenceRegistrations, Is.Not.Empty); }
public void CreateRegistrationsFromHeaders_DateHeadersHasTwoItems_ReturnsTwoHourRegistrations() { // Arrange var frame = new DispatcherFrame(); var dateHeaders = new List <ForecastRegistrationDateColumn>() { new ForecastRegistrationDateColumn(new DateTime(2013, 1, 1)), new ForecastRegistrationDateColumn(new DateTime(2013, 1, 2)) }; var viewModel = new Mock <IForecastRegistrationViewModel>(); viewModel.SetupGet(x => x.PresenceRegistrations).Returns(new ObservableCollection <ForecastTypeRegistration>( dateHeaders.Select(x => { var newItem = new ForecastTypeRegistration(ForecastTestData.ProjectHoursOnlyForecastType, null); x.ForecastTypeRegistration = newItem; return(newItem); }).ToList() )); var clientReg = new ProjectRegistration(); var generator = new ForecastRegistrationDataGenerator(null, null, null); // Act var result = generator.CreateProjectHoursFromHeaders(dateHeaders, viewModel.Object, clientReg); // Assert Assert.That(result.Count, Is.EqualTo(2)); Assert.That(result.Any(x => x.Hours != 0), Is.False); Assert.That(result.Any(x => !x.Parent.Equals(clientReg)), Is.False); }
public ProjectRegistration CreateClientRegistration(string clientName) { var client1 = new ProjectRegistration { ProjectName = clientName }; client1.Registrations = CreateClientDateRegistrations(client1); return(client1); }
private void AddClientHourRegistration(ProjectRegistration projectRegistration, ForecastRegistrationDateColumn dateColumn, decimal hours) { var clientHourReg = new ProjectHourRegistration(projectRegistration) { Hours = hours }; dateColumn.AddProjectHours(clientHourReg); }
private void AddDateColumnWithClientRegistration(ProjectRegistration projectRegistration, decimal hours, bool isEditEnabled) { var dateColumn = new ForecastRegistrationDateColumn(new DateTime(2013, 1, 1)); var clientHourRegistration = new ProjectHourRegistration(projectRegistration) { Hours = hours, IsEditEnabled = isEditEnabled }; dateColumn.AddProjectHours(clientHourRegistration); projectRegistration.Registrations.Add(clientHourRegistration); }
public void TryDistributeTotalInput_InputStringIsNotInt_AbortsUpdate() { // Arrange var sut = new ProjectRegistration { Registrations = new ObservableCollection <ProjectHourRegistration>() }; // Act sut.TryDistributeTotalInput("abc"); // Assert }
public void ApplyHoursToAll_IntputIsFifteenthOfMonth_AllDaysAreupdated() { // Arrange var clientRegistration = new ProjectRegistration(); clientRegistration.Registrations = new ObservableCollection <ProjectHourRegistration>(CreateHoursForMonth(2, 2013, 7.5m, clientRegistration)); var source = clientRegistration .Registrations .Single(x => x.DateColumn.Date.Day == 15); source.Hours = 0; // Act clientRegistration.ApplyHoursToAll(source); // Assert Assert.That(clientRegistration.Registrations.Any(x => x.Hours != 0), Is.False); }
public DeployItem(ProjectRegistration projectRegistration) { InitializeComponent(); nameLabel.Text = projectRegistration.Name; if (projectRegistration.IsNugetPackage) { typeLabel.Text = "Nuget"; } else if (projectRegistration.IsUpdatePackage) { typeLabel.Text = "Update"; } else { typeLabel.Text = "None"; } }
private void UpdateProjectCategories(Project project, ProjectRegistration projectIn) { var existingCategories = unitOfWork.ProjectCategories.GetAllFromProject(project.Id); unitOfWork.ProjectCategories.RemoveRange(existingCategories); var projectCategories = new List <ProjectCategory>(); foreach (var category in projectIn.Categories) { var projectCategory = new ProjectCategory { Project = project, Category = category }; projectCategories.Add(projectCategory); } unitOfWork.ProjectCategories.AddRange(projectCategories); unitOfWork.Complete(); }
public bool Update(ProjectRegistration projectIn) { if (string.IsNullOrEmpty(projectIn.Name) || (projectIn.Owner == null) || (projectIn.Categories.Count < 1)) { Console.Error.WriteLine("Wrong parameters for updating a project"); return(false); } var project = unitOfWork.Projects.Find(p => p.Name == projectIn.OldName).Single(); project.Name = projectIn.Name; project.Owner = projectIn.Owner; project.Description = projectIn.Description; unitOfWork.Complete(); UpdateProjectContributors(project, projectIn); UpdateProjectCategories(project, projectIn); return(true); }
public void ApplyHoursForward_InputIsTenthOfMonth_DaysAfterTenthAreUpdated() { // Arrange var clientRegistration = new ProjectRegistration(); clientRegistration.Registrations = new ObservableCollection <ProjectHourRegistration>(CreateHoursForMonth(1, 2013, 7.5m, clientRegistration)); var source = clientRegistration .Registrations .Single(x => x.DateColumn.Date.Day == 10); source.Hours = 6; // Act clientRegistration.ApplyHoursForward(source); // Assert var preTenth = clientRegistration.Registrations.Where(x => x.DateColumn.Date.Day < 10); Assert.That(preTenth.Any(x => x.Hours != 7.5m), Is.False); var postTenth = clientRegistration.Registrations.Where(x => x.DateColumn.Date.Day > 10); Assert.That(postTenth.Any(x => x.Hours != 6), Is.False); }
public void ApplyHoursBackwards_IntputIsTwentiethOfMonth_DaysBeforeTwentiethAreUpdated() { // Arrange var clientRegistration = new ProjectRegistration(); clientRegistration.Registrations = new ObservableCollection <ProjectHourRegistration>(CreateHoursForMonth(2, 2013, 7.5m, clientRegistration)); var source = clientRegistration .Registrations .Single(x => x.DateColumn.Date.Day == 20); source.Hours = 4.75m; // Act clientRegistration.ApplyHoursBackward(source); // Assert var preTwentieth = clientRegistration.Registrations.Where(x => x.DateColumn.Date.Day < 20); Assert.That(preTwentieth.Any(x => x.Hours != 4.75m), Is.False); var postTenth = clientRegistration.Registrations.Where(x => x.DateColumn.Date.Day > 20); Assert.That(postTenth.Any(x => x.Hours != 7.5m), Is.False); }
ResultValueBindErrorsOk(_ => ProjectRegistration.RegisterProject(BoutiqueContainer)).
private ObservableCollection <ProjectHourRegistration> CreateClientDateRegistrations(ProjectRegistration parent) { var dateColumns = CreateDateHeaders(); var result = new ObservableCollection <ProjectHourRegistration>(); foreach (var forecastDateColumn in dateColumns) { var clientHourReg = new ProjectHourRegistration(parent) { Hours = 6.5m }; forecastDateColumn.AddProjectHours(clientHourReg); result.Add(clientHourReg); } result.Last().Hours = 0; return(result); }
public virtual ObservableCollection <ProjectHourRegistration> CreateProjectHoursFromHeaders(IEnumerable <ForecastRegistrationDateColumn> dateHeaders , IForecastRegistrationViewModel viewModel , ProjectRegistration parent) { var result = new ObservableCollection <ProjectHourRegistration>(); foreach (var dateHeader in dateHeaders) { var projectHours = new ProjectHourRegistration(parent); dateHeader.AddProjectHours(projectHours); // Hookup for updating totals var dateItem = projectHours.DateColumn; projectHours .HoursUpdated .Subscribe(x => { viewModel.CalculateTotals(dateItem); viewModel.RaiseCanExecuteActions(); }); InitializeIsEditEnabled(viewModel, projectHours); result.Add(projectHours); } return(result); }
private IEnumerable <ProjectHourRegistration> CreateHoursForMonth(int month, int year, decimal defaultHours, ProjectRegistration parent) { var result = new List <ProjectHourRegistration>(); var day = new DateTime(year, month, 1); while (day.Month == month) { if (!day.IsWeekend()) { var dateColumn = new ForecastRegistrationDateColumn(day); var hourReg = new ProjectHourRegistration(parent) { Hours = defaultHours }; dateColumn.AddProjectHours(hourReg); result.Add(hourReg); } day = day.AddDays(1); } return(result); }