Exemplo n.º 1
0
        public void TestGetTicketsByUsername()
        {
            // db is empty
            using (var context = new ProTickDatabaseContext(dbOptions))
            {
                var dbm       = new DatabaseQueryManager(context);
                var converter = new ResourceDTOConverter(dbm);


                var expectedUsername = "******";
                var expectedRole     = "Admin";

                var controller = new TicketController(context, converter, dbm);
                var user       = new ClaimsPrincipal(new ClaimsIdentity(
                                                         new List <Claim>()
                {
                    new Claim(ClaimTypes.NameIdentifier, expectedUsername),
                    new Claim(ClaimTypes.Role, expectedRole)
                }));
                controller.ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = user
                    }
                };


                Assert.Throws <DatabaseEntryNotFoundException>(() => controller.GetTicketsByUsername(expectedUsername));
            }

            // seeding DB
            using (var context = new ProTickDatabaseContext(dbOptions))
            {
                DbContextSeeder.SeedFull(context);
            }

            // db is Test-Ready
            using (var context = new ProTickDatabaseContext(dbOptions))
            {
                var dbm       = new DatabaseQueryManager(context);
                var converter = new ResourceDTOConverter(dbm);

                var expectedUsername = "******";
                var expectedRole     = "Admin";

                var controller = new TicketController(context, converter, dbm);
                var user       = new ClaimsPrincipal(new ClaimsIdentity(
                                                         new List <Claim>()
                {
                    new Claim(ClaimTypes.NameIdentifier, expectedUsername),
                    new Claim(ClaimTypes.Role, expectedRole)
                }));
                controller.ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = user
                    }
                };

                // admin
                var actualAdmin = controller.GetTicketsByUsername(expectedUsername).ToList();

                var expectedAdmin = DbContextSeeder.GetSeededTicketDTOs(
                    3,
                    DbContextSeeder.GetSeededStateDTOs(3),
                    DbContextSeeder.GetSeededSubprocessDTOs(
                        3,
                        DbContextSeeder.GetSeededProcessDTOs(3),
                        DbContextSeeder.GetSeededTeamDTOs(3))
                    )
                                    .Where(x => x.TicketID == 2)
                                    .ToList();

                Assert.Equal(expectedAdmin.Count, actualAdmin.Count);

                expectedAdmin.Should().BeEquivalentTo(actualAdmin);

                // employee
                expectedUsername = "******";
                expectedRole     = "Employee";
                var user2 = new ClaimsPrincipal(new ClaimsIdentity(
                                                    new List <Claim>()
                {
                    new Claim(ClaimTypes.NameIdentifier, expectedUsername),
                    new Claim(ClaimTypes.Role, expectedRole)
                }));
                controller.ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = user2
                    }
                };

                var actualEmployee   = controller.GetTicketsByUsername(expectedUsername).ToList();
                var expectedEmployee = DbContextSeeder.GetSeededTicketDTOs(
                    1,
                    DbContextSeeder.GetSeededStateDTOs(1),
                    DbContextSeeder.GetSeededSubprocessDTOs(
                        1,
                        DbContextSeeder.GetSeededProcessDTOs(1),
                        DbContextSeeder.GetSeededTeamDTOs(1))
                    )
                                       .ToList();

                Assert.Equal(actualEmployee.Count, expectedEmployee.Count);

                actualEmployee.Should().BeEquivalentTo(expectedEmployee);
            }
        }