Ejemplo n.º 1
0
        public TimeEntryTests()
        {
            timeEntryController = new TimeEntryController(database, new AuthHelper());
            projectController   = new ProjectController(database, new AuthHelper());

            TestAuthHelpers.LogInUser(database, configuration, new List <ControllerBase>()
            {
                timeEntryController,
                projectController
            }).GetAwaiter().GetResult();
        }
Ejemplo n.º 2
0
        public async Task StartAndStopTimerTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "A Cool Project",
                ClientName  = "Misha",
                Tags        = new List <string>(),
                Description = "A very cool Project"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Working on stuff",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);
            Assert.AreEqual(startTimerResponse.Data.Notes, "Working on stuff");
            Assert.AreEqual(startTimerResponse.Data.ProjectId, projectId);

            GenericResponseDTO <List <TimerDTO> > getTimersResponse = await timerController.GetAllTimers();

            List <TimerDTO> timers = getTimersResponse.Data;

            Assert.AreEqual(timers.Count, 1);
            Assert.AreEqual(timers[0].ProjectId, projectId);
            Assert.IsTrue(timers[0].Notes.SequenceEqual("Working on stuff"));
            Assert.AreEqual(timers[0].StartTime, startTimerResponse.Data.StartTime);

            GenericResponseDTO <TimeEntryDTO> stopTimerResponse = await timerController.StopTimer(timers[0].Id);

            DateTime responseGottenTime = DateTime.UtcNow;

            Assert.IsTrue(stopTimerResponse.Success);
            Assert.IsTrue(stopTimerResponse.Data.ProjectId == projectId);
            Assert.AreEqual(stopTimerResponse.Data.Notes, "Working on stuff");
            Assert.AreEqual((responseGottenTime - stopTimerResponse.Data.Day).Minutes, 0);

            getTimersResponse = await timerController.GetAllTimers();

            Assert.AreEqual(getTimersResponse.Data.Count, 0);
        }
Ejemplo n.º 3
0
        public async Task AddUserToProjectOnLogin()
        {
            await TestAuthHelpers.LogInUser(database, configuration, projectController);

            ProjectCreateDTO projectInfo = new ProjectCreateDTO {
                ProjectName = "Soup Delivery Website",
                ClientName  = "Soup Delivery LLC"
            };

            GenericResponseDTO <int> createProjectResponse = await projectController.CreateProject(projectInfo);

            Assert.IsTrue(createProjectResponse.Success);

            int     projectID = createProjectResponse.Data;
            Project project   = await database.Projects
                                .AsNoTracking()
                                .FirstOrDefaultAsync(p => p.Id == projectID);

            string projectInviteCode = project.InviteCode;

            UserDTO registrationInfo = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Suzuya",
                LastName  = "Z."
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(registrationInfo);

            Assert.IsTrue(registerResponse.Success);

            UserDTO loginInfo = new UserDTO {
                Email      = "*****@*****.**",
                Password   = "******",
                InviteCode = projectInviteCode
            };

            await authController.Login(loginInfo);

            User user = await database.Users
                        .Include(x => x.Projects)
                        .FirstOrDefaultAsync(u => u.Id == registerResponse.Data);

            Assert.IsTrue(user.Projects.Count == 1);
            Assert.IsTrue(user.Projects[0].Id == project.Id);
        }
Ejemplo n.º 4
0
        public async Task GetTimerWithinDateRangeTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "One MORE Cool Project",
                ClientName  = "Benjamin",
                Tags        = new List <string>(),
                Description = "Not a very cool project"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Didn't really do anything",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);

            GenericResponseDTO <List <TimerDTO> > getTimerByIdResponse = await timerController.GetTimersWithinDateRange(DateTime.UtcNow, DateTime.UtcNow);

            Assert.IsTrue(getTimerByIdResponse.Success);
            Assert.AreEqual(getTimerByIdResponse.Data[0].Id, startTimerResponse.Data.Id);
            Assert.AreEqual(getTimerByIdResponse.Data[0].Notes, "Didn't really do anything");
            Assert.AreEqual(getTimerByIdResponse.Data[0].ProjectId, projectId);
            Assert.AreEqual(getTimerByIdResponse.Data[0].StartTime, startTimerResponse.Data.StartTime);

            DateTime tomorrow = DateTime.UtcNow + new TimeSpan(24, 0, 0);

            getTimerByIdResponse = await timerController.GetTimersWithinDateRange(tomorrow, tomorrow);

            Assert.AreEqual(getTimerByIdResponse.Data.Count, 0);
        }
Ejemplo n.º 5
0
        public async Task GetTimerByIdTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "Another Cool Project",
                ClientName  = "Tristam",
                Tags        = new List <string>(),
                Description = "An even COOLER project :)"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Working on things",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);

            GenericResponseDTO <TimerDTO> getTimerByIdResponse = await timerController.GetTimerById(startTimerResponse.Data.Id);

            Assert.IsTrue(getTimerByIdResponse.Success);
            Assert.AreEqual(getTimerByIdResponse.Data.Id, startTimerResponse.Data.Id);
            Assert.AreEqual(getTimerByIdResponse.Data.Notes, "Working on things");
            Assert.AreEqual(getTimerByIdResponse.Data.ProjectId, projectId);
            Assert.AreEqual(getTimerByIdResponse.Data.StartTime, startTimerResponse.Data.StartTime);
        }
Ejemplo n.º 6
0
        private async Task <int> setupTest()
        {
            // Create a project and time entry
            var mainProject = await projectController.CreateProject(new ProjectCreateDTO()
            {
                ClientName  = "Spongebob Squarepants",
                Description = "Eat spongebob's pineapple house",
                ProjectName = "Eat Pineapple",
                Tags        = new List <string>()
                {
                    "Food"
                }
            });

            var timeEntries = new List <TimeEntryDTO>()
            {
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 5,
                    Notes       = "Consumed leafs",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 2,
                    Notes       = "Consumed Door",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 3,
                    Notes       = "Consumed back of pineapple",
                    ProjectId   = mainProject.Data
                }
            };

            foreach (var entry in timeEntries)
            {
                await timeEntryController.CreateTime(entry);
            }

            // Get project invite code
            var projectDetails = await projectController.GetProjectById(mainProject.Data);

            // Login as 2nd user
            TestAuthHelpers.LogInUser(database, configuration, new List <ControllerBase>()
            {
                timeEntryController,
                projectController,
                reportController
            }, projectDetails.Data.InviteCode).GetAwaiter().GetResult();

            var timeEntries2 = new List <TimeEntryDTO>()
            {
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(2000, 1, 10),
                    Length      = 1,
                    Notes       = "Consumed left window",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(2000, 1, 10),
                    Length      = 1,
                    Notes       = "Consumed right window",
                    ProjectId   = mainProject.Data
                }
            };

            foreach (var entry in timeEntries2)
            {
                await timeEntryController.CreateTime(entry);
            }

            return(mainProject.Data);
        }
Ejemplo n.º 7
0
        public ProjectTests()
        {
            projectController = new ProjectController(database, new AuthHelper());

            TestAuthHelpers.LogInUser(database, configuration, projectController).GetAwaiter().GetResult();
        }