예제 #1
0
        public async Task GetProjectTaskEntriesByDate_AddedTimeEntryForGivenDate_ShouldAddOnlyOneEntry()
        {
            this._context.Users.Add(new User("UserTest", "User2", "User2", "Admin", "jkjkjk")
            {
                Id = _userContext.UserId
            });
            this._context.Clients.Add(new Client("testclient1")
            {
                Id = 1
            });
            this._context.Projects.Add(new Project("testProject1", 1, "examplecode")
            {
                Id = 1
            });
            this._context.ProjectTasks.Add(new ProjectTask("testTask1", 1, true)
            {
                Id = 1
            });
            _context.SaveChanges();

            var firstResult = await _repository.GetProjectTaskEntriesForCurrentUserByDate(2019, 2, 10);

            int numOfEnries = firstResult.ToList().Count;

            var newEntry = new ProjectTaskEntry(_userContext.UserId, 1, 50, new DateTime(2019, 2, 10), "Nasa nota")
            {
                Id = 50
            };
            await _repository.AddTimeEntry(newEntry);

            var result = await _repository.GetProjectTaskEntriesForCurrentUserByDate(2019, 2, 10);

            result.ToList().Count.Should().Be(numOfEnries + 1);
        }
예제 #2
0
        public async Task GetProjectTaskEntriesByDate_AddedTimeEntryForGivenDate_ReturnNonEmptyResult()
        {
            this._context.Users.Add(new User("UserTest", "User2", "User2", "Admin", "jkjkjk")
            {
                Id = _userContext.UserId
            });
            this._context.Clients.Add(new Client("testclient1")
            {
                Id = 1
            });
            this._context.Projects.Add(new Project("testProject1", 1, "examplecode")
            {
                Id = 1
            });
            this._context.ProjectTasks.Add(new ProjectTask("testTask1", 1, true)
            {
                Id = 1
            });
            _context.SaveChanges();
            var newEntry = new ProjectTaskEntry(_userContext.UserId, 1, 50, new DateTime(2019, 2, 10), "Nasa nota")
            {
                Id = 50
            };

            await _repository.AddTimeEntry(newEntry);

            var result = await _repository.GetProjectTaskEntriesForCurrentUserByDate(2019, 2, 10);

            result.Should().NotBeEmpty();
        }
예제 #3
0
        public async Task UpdateTaskEntry_AddedTaskEntryAndChangedValues_ReturnsTaskEntryWithUpdatedValues()
        {
            // Arrange
            this._context.Users.Add(new User("UserTest", "User2", "User2", "Admin", "jkjkjk")
            {
                Id = _userContext.UserId
            });
            this._context.Clients.Add(new Client("testclient1")
            {
                Id = 1
            });
            this._context.Projects.Add(new Project("testProject1", 1, "examplecode")
            {
                Id = 1
            });
            this._context.ProjectTasks.Add(new ProjectTask("testTask1", 1, true)
            {
                Id = 1
            });
            var entry = new ProjectTaskEntry(_userContext.UserId, 1, 50, new DateTime(2019, 8, 3), "Note")
            {
                Id = 55
            };

            _context.ProjectTaskEntries.Add(entry);
            _context.SaveChanges();
            entry.DurationInMin = 100;

            // Act
            _repository.UpdateTaskEntry(entry);
            var updatedEntry = await _repository.GetProjectTaskEntryByIdAsync(55);

            // Assert
            updatedEntry.DurationInMin.Should().Be(100);
        }
예제 #4
0
        public async Task GetProjectTaskEntryById_ProjectTaskEntryIdIs10_ReturnsProjectTaskEntryWithId10()
        {
            this._context.Users.Add(new User("UserTest", "User2", "User2", "Admin", "jkjkjk")
            {
                Id = _userContext.UserId
            });
            this._context.Clients.Add(new Client("testclient1")
            {
                Id = 1
            });
            this._context.Projects.Add(new Project("testProject1", 1, "examplecode")
            {
                Id = 1
            });
            this._context.ProjectTasks.Add(new ProjectTask("testTask1", 1, true)
            {
                Id = 1
            });
            _context.SaveChanges();
            var entry = new ProjectTaskEntry(_userContext.UserId, 1, 50, new DateTime(2019, 8, 3), "Note")
            {
                Id = 10
            };

            await _repository.AddTimeEntry(entry);

            var result = await _repository.GetProjectTaskEntryByIdAsync(10);

            var projectTaskEntryInDb = _context.ProjectTaskEntries.Find(10);

            result.Should().NotBeNull();
            result.Id.Should().Be(10);
            result.Should().BeEquivalentTo(projectTaskEntryInDb);
        }
예제 #5
0
        public void Constructor_ZeroOrNegativeProjectTaskId_ThrowArgumentException(int projectTaksId)
        {
            ProjectTaskEntry _entry1;

            Action act = () => _entry1 = new ProjectTaskEntry(1, projectTaksId, 20, DateTime.Now, "Notee");

            act.Should().Throw <ArgumentException>().WithMessage("Id field can not be set to negative value or zero!");
        }
예제 #6
0
        public void Constructor_NegativeOrZeroUserId_ThrowArgumentException(int userId)
        {
            ProjectTaskEntry _entry1;

            Action act = () => _entry1 = new ProjectTaskEntry(userId, 1, 20, DateTime.Now, "Notee");

            act.Should().Throw <ArgumentException>();
        }
예제 #7
0
        public void Constructor_OverOneDayDurationInMin_ThrowArgumentException()
        {
            ProjectTaskEntry _entry1;

            Action act = () => _entry1 = new ProjectTaskEntry(1, 1, 2000, DateTime.Now, "Notee");

            act.Should().Throw <ArgumentException>();
        }
예제 #8
0
        public void Constructor_NegativeOrZeroDurationInMin_ThrowArgumentException(int durationInMin)
        {
            ProjectTaskEntry _entry1;

            Action act = () => _entry1 = new ProjectTaskEntry(1, 1, durationInMin, DateTime.Now, "Notee");

            act.Should().Throw <ArgumentException>().WithMessage("Duration can not be <=0!");
        }
예제 #9
0
        public async Task <ProjectTaskEntry> AddTimeEntry(ProjectTaskEntry newProjectTaskEntry)
        {
            await _context.ProjectTaskEntries.AddAsync(newProjectTaskEntry);

            await _context.SaveChangesAsync();

            return(newProjectTaskEntry);
        }
예제 #10
0
 public static ProjectTaskEntryUpdateDTO ToUpdateDTO(this ProjectTaskEntry pte)
 {
     return(new ProjectTaskEntryUpdateDTO()
     {
         Id = pte.Id,
         ProjectId = pte.ProjectTask.ProjectId,
         ProjectTaskId = pte.ProjectTaskId,
         durationInMin = pte.DurationInMin,
         Note = pte.Note
     });
 }
예제 #11
0
 public static ProjectTaskEntryDTO ToDTO(this ProjectTaskEntry pte)
 {
     return(new ProjectTaskEntryDTO()
     {
         Id = pte.Id,
         ProjectName = pte.ProjectTask.Project.Name,
         ProjectCode = pte.ProjectTask.Project.Code,
         ProjectTask = pte.ProjectTask.Name,
         ClientName = pte.ProjectTask.Project.Client.Name,
         durationInMin = pte.DurationInMin,
         Note = pte.Note
     });
 }
예제 #12
0
        public static async Task PostNewTimeEntry(this HttpClient client, ProjectTaskEntry model)
        {
            var insertModel = new ProjectTaskEntryInsertDTO()
            {
                UserId        = model.UserId,
                ProjectTaskId = model.ProjectTaskId,
                DurationInMin = model.DurationInMin,
                Day           = model.Date.Day,
                Month         = model.Date.Month,
                Year          = model.Date.Year,
                Note          = model.Note
            };
            var response = await client.PostAsJsonAsync("api/entries", insertModel);

            response.EnsureSuccessStatusCode();
        }
예제 #13
0
        public async Task PostProjectTaskEntry_AssignTwoTaskEntriesToCurrentUser_ReturnsAListOfTwoAAssignedEntries()
        {
            _client = new IntegrationWebApplicationFactory <Startup>().WithWebHostBuilder(builder =>
            {
                builder.ConfigureTestServices(services =>
                {
                    var serviceDesc = services.FirstOrDefault(desc => desc.ServiceType == typeof(ICurrentUserContext));
                    services.Remove(serviceDesc);
                    _currentUserContext = new CurrentUserContext()
                    {
                        UserId = 3
                    };
                    services.AddTransient <ICurrentUserContext>(x => _currentUserContext);
                    var sp     = services.BuildServiceProvider();
                    _dbContext = sp.GetRequiredService <TaskterDbContext>();
                });
            }).CreateClient();

            _dbContext.Users.Add(new User("test", "user1", "user1", "Admin", "http://google.com")
            {
                Id = _currentUserContext.UserId
            });
            _dbContext.Clients.Add(new Client("Client")
            {
                Id = 100
            });
            _dbContext.Projects.Add(new Project("Project 1", 100, null)
            {
                Id = 101
            });
            _dbContext.ProjectTasks.Add(new ProjectTask("ProjectTask1", 101, true)
            {
                Id = 102
            });
            _dbContext.ProjectTaskEntries.RemoveRange(_dbContext.ProjectTaskEntries.ToList());
            _dbContext.SaveChanges();
            ProjectTaskEntry newEntry  = new ProjectTaskEntry(3, 102, 30, DateTime.Now, "Notee");
            ProjectTaskEntry newEntry2 = new ProjectTaskEntry(3, 102, 55, DateTime.Now, "Notee2");

            await _client.PostNewTimeEntry(newEntry);

            await _client.PostNewTimeEntry(newEntry2);

            var listOfEntries = _dbContext.ProjectTaskEntries.ToList();

            listOfEntries.Count.Should().Be(2);
        }
예제 #14
0
        public async Task UpdateEntry_AddedOneEntryChangedValuesOfEntry_ReturnsNoContentAndUpdatedEntry()
        {
            _client = new IntegrationWebApplicationFactory <Startup>().WithWebHostBuilder(builder =>
            {
                builder.ConfigureTestServices(services =>
                {
                    var serviceDesc = services.FirstOrDefault(desc => desc.ServiceType == typeof(ICurrentUserContext));
                    services.Remove(serviceDesc);
                    _currentUserContext = new CurrentUserContext()
                    {
                        UserId = 3
                    };
                    services.AddTransient <ICurrentUserContext>(x => _currentUserContext);
                    var sp     = services.BuildServiceProvider();
                    _dbContext = sp.GetRequiredService <TaskterDbContext>();
                });
            }).CreateClient();

            _dbContext.Users.Add(new User("test1", "test 1", "test lastName", "admin", "http://google.com")
            {
                Id = _currentUserContext.UserId
            });
            var clientSeed = new Client("testClient")
            {
                Id = 20
            };

            _dbContext.Clients.Add(clientSeed);
            var seedProjectsList = new List <Project>()
            {
                new Project("test project 1", 20, null)
                {
                    Id = 10, Client = clientSeed
                },
                new Project("test project 2", 20, null)
                {
                    Id = 11, Client = clientSeed
                }
            };

            _dbContext.AddRange(seedProjectsList);
            var seedProjectsTaskList = new List <ProjectTask>()
            {
                new ProjectTask("testTask1", 10, false)
                {
                    Id = 20, Project = seedProjectsList[0]
                },
                new ProjectTask("testTask2", 10, false)
                {
                    Id = 21, Project = seedProjectsList[1]
                }
            };

            var taskEntry = new ProjectTaskEntry(3, 20, 30, DateTime.Now, "Notee")
            {
                Id = 10, ProjectTask = seedProjectsTaskList[0]
            };

            _dbContext.ProjectTaskEntries.Add(taskEntry);
            _dbContext.SaveChanges();

            taskEntry.DurationInMin = 100;
            var result = await _client.UpdateTaskEntry(taskEntry.ToUpdateDTO());

            var updatedTaskEntry = await _client.GetProjectTaskEntriesByIdAsync(10);

            updatedTaskEntry.durationInMin.Should().Be(100);
            result.StatusCode.Should().BeEquivalentTo(System.Net.HttpStatusCode.NoContent);
        }
예제 #15
0
        public static ProjectTaskEntry ToEntity(this ProjectTaskEntryInsertDTO pte)
        {
            var newEntry = new ProjectTaskEntry(pte.UserId, pte.ProjectTaskId, pte.DurationInMin, new DateTime(pte.Year, pte.Month, pte.Day), pte.Note);

            return(newEntry);
        }
예제 #16
0
 public void UpdateTaskEntry(ProjectTaskEntry projectTaskEntry)
 {
     _context.SaveChanges();
 }