public PersonalDatasController(DatabaseContext databaseContext, IConfiguration configuration, IMapper mapper, PersonalDataService personalDataService, EnrollmentStepService enrollmentStepService)
 {
     _context               = databaseContext;
     _mapper                = mapper;
     _personalDataService   = personalDataService;
     _enrollmentStepService = enrollmentStepService;
 }
        public async Task GetPersonalDataForUserJson_WithNullUserId_ReturnsNull()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var personalDataService =
                new PersonalDataService(new EfRepository <PoolItUser>(context), null, null, null, null);

            // Act
            var result = await personalDataService.GetPersonalDataForUserJson(null);

            // Assert
            Assert.Null(result);
        }
        public async Task DeleteUser_WithNullUserId_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var personalDataService = new PersonalDataService(new EfRepository <PoolItUser>(context),
                                                              new EfRepository <JoinRequest>(context),
                                                              new EfRepository <UserRide>(context),
                                                              new EfRepository <Conversation>(context),
                                                              new EfRepository <ContactMessage>(context));

            // Act
            var result = await personalDataService.DeleteUser(null);

            // Assert
            Assert.False(result);
        }
        public async Task DeleteJobSeeker_WithNonExistentUser_ReturnsFalse()
        {
            var testId = Guid.NewGuid().ToString();

            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var personalDataService = new PersonalDataService(new EfRepository <Company>(context),
                                                              new EfRepository <ContactMessage>(context),
                                                              new EfRepository <Job>(context),
                                                              new EfRepository <JobSeeker>(context),
                                                              new EfRepository <JobCandidate>(context),
                                                              new EfRepository <User>(context),
                                                              new EfRepository <Resume>(context));

            var result = await personalDataService.DeleteJobSeeker(testId);

            Assert.False(result);
        }
        public async Task DeleteUser_WithExceptionOnSave_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var user = new PoolItUser
            {
                FirstName = "FirstName",
                LastName  = "LastName",
                UserName  = "******",
                Email     = "*****@*****.**"
            };

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var usersRepository = new EfRepository <PoolItUser>(context);

            var mockUsersRepository = new Mock <IRepository <PoolItUser> >();

            mockUsersRepository.Setup(r => r.All()).Returns(usersRepository.All());
            mockUsersRepository.Setup(r => r.SaveChangesAsync()).Throws <InvalidOperationException>();

            var personalDataService = new PersonalDataService(mockUsersRepository.Object,
                                                              new EfRepository <JoinRequest>(context),
                                                              new EfRepository <UserRide>(context),
                                                              new EfRepository <Conversation>(context),
                                                              new EfRepository <ContactMessage>(context));

            // Act
            var result = await personalDataService.DeleteUser(user.Id);

            // Assert
            Assert.False(result);
        }
        public async Task GetPersonalDataForUserJson_WithCorrectUserId_WorksCorrectly()
        {
            // Arrange
            const string expectedJson =
                "{\"FirstName\": \"FirstName\",\"LastName\": \"LastName\",\"Email\": \"[email protected]\"," +
                "\"SentRequests\": [{\"Ride\": \"Test Ride for Join Request\",\"SentOn\": \"Thu, 01 Jan 2015 10:25:30 GMT\"," +
                "\"Message\": \"Test Message for Join Request\"}],\"Cars\": [{\"Manufacturer\": \"TestManufacturer\"," +
                "\"Model\": \"TestModel\",\"Colour\": \"TestColour\",\"Details\": null}],\"OrganisedRides\": " +
                "[{\"Title\": \"Test Ride\",\"Date\": \"Fri, 02 Jan 2015 10:25:30 GMT\",\"From\": \"Test From\"," +
                "\"To\": \"Test To\",\"AvailableSeats\": 3,\"PhoneNumber\": \"0123123123\",\"Notes\": null,\"Car\": " +
                "{\"Manufacturer\": \"TestManufacturer\",\"Model\": \"TestModel\",\"Colour\": \"TestColour\",\"Details\": null}," +
                "\"Participants\": [{\"FirstName\": \"Other0\",\"LastName\": \"User0\"},{\"FirstName\": \"FirstName\"," +
                "\"LastName\": \"LastName\"}],\"Invitations\": [{\"Key\": \"testKey\"}],\"JoinRequests\": " +
                "[{\"FirstName\": \"Other1\",\"LastName\": \"User1\",\"SentOn\": \"Wed, 31 Dec 2014 10:25:30 GMT\"," +
                "\"Message\": \"Test Message\"}]}],\"ParticipantInRides\": [{\"Title\": \"Test Ride\"," +
                "\"Date\": \"Fri, 02 Jan 2015 10:25:30 GMT\",\"From\": \"Test From\",\"To\": \"Test To\",\"Organiser\": " +
                "{\"FirstName\": \"FirstName\",\"LastName\": \"LastName\"},\"Car\": {\"Manufacturer\": \"TestManufacturer\"," +
                "\"Model\": \"TestModel\"},\"Participants\": [{\"FirstName\": \"Other0\",\"LastName\": \"User0\"}," +
                "{\"FirstName\": \"FirstName\",\"LastName\": \"LastName\"}],\"Conversation\": {\"Messages\": [{\"Author\": " +
                "{\"FirstName\": \"Other0\",\"LastName\": \"User0\"},\"SentOn\": \"Wed, 31 Dec 2014 10:25:30 GMT\"," +
                "\"Content\": \"Test Message Content 1\"},{\"Author\": {\"FirstName\": \"Other0\",\"LastName\": \"User0\"}," +
                "\"SentOn\": \"Thu, 01 Jan 2015 10:25:30 GMT\",\"Content\": \"Test Message Content 2\"}]}}]," +
                "\"ContactMessages\": [{\"Subject\": \"Test Subject\",\"Message\": \"Test Message\"}]}";

            var dateTime = new DateTime(2015, 1, 1, 10, 25, 30);

            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var otherUsers = new List <PoolItUser>
            {
                new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Other0",
                    LastName  = "User0"
                },
                new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Other1",
                    LastName  = "User1"
                }
            };

            var ride = new Ride
            {
                Title          = "Test Ride",
                Date           = dateTime.AddDays(1),
                From           = "Test From",
                To             = "Test To",
                AvailableSeats = 3,
                PhoneNumber    = "0123123123",
                Notes          = null,
                Participants   = new List <UserRide>
                {
                    new UserRide
                    {
                        User = otherUsers[0],
                    }
                },
                Invitations = new List <Invitation>
                {
                    new Invitation
                    {
                        Key = "testKey"
                    }
                },
                JoinRequests = new List <JoinRequest>
                {
                    new JoinRequest
                    {
                        User    = otherUsers[1],
                        SentOn  = dateTime.AddDays(-1),
                        Message = "Test Message"
                    }
                },
                Conversation = new Conversation
                {
                    Messages = new List <Message>
                    {
                        new Message
                        {
                            Author  = otherUsers[0],
                            SentOn  = dateTime.AddDays(-1),
                            Content = "Test Message Content 1"
                        },
                        new Message
                        {
                            Author  = otherUsers[0],
                            SentOn  = dateTime,
                            Content = "Test Message Content 2"
                        }
                    }
                }
            };

            var user = new PoolItUser
            {
                FirstName    = "FirstName",
                LastName     = "LastName",
                UserName     = "******",
                Email        = "*****@*****.**",
                SentRequests = new List <JoinRequest>
                {
                    new JoinRequest
                    {
                        Ride = new Ride
                        {
                            Title = "Test Ride for Join Request"
                        },
                        SentOn  = dateTime,
                        Message = "Test Message for Join Request"
                    }
                },
                Cars = new List <Car>
                {
                    new Car
                    {
                        Model = new CarModel
                        {
                            Manufacturer = new CarManufacturer
                            {
                                Name = "TestManufacturer"
                            },
                            Model = "TestModel"
                        },
                        Colour  = "TestColour",
                        Details = null,
                        Rides   = new List <Ride>
                        {
                            ride
                        }
                    }
                },
                UserRides = new List <UserRide>
                {
                    new UserRide
                    {
                        Ride = ride
                    }
                },
                ContactMessages = new List <ContactMessage>
                {
                    new ContactMessage
                    {
                        Subject = "Test Subject",
                        Message = "Test Message"
                    }
                }
            };

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var personalDataService =
                new PersonalDataService(new EfRepository <PoolItUser>(context), null, null, null, null);

            // Act
            var actualJson = await personalDataService.GetPersonalDataForUserJson(user.Id);

            // Assert
            var expectedResult = JToken.Parse(expectedJson);
            var actualResult   = JToken.Parse(actualJson);

            var equal = JToken.DeepEquals(expectedResult, actualResult);

            Assert.True(equal);
        }
        public async Task DeleteUser_WithCorrectUserId_WorksCorrectly()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var otherUsers = new List <PoolItUser>
            {
                new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Other0",
                    LastName  = "User0"
                },
                new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Other1",
                    LastName  = "User1"
                }
            };

            var ride = new Ride
            {
                Title          = "Test Ride",
                Date           = DateTime.UtcNow.AddDays(1),
                From           = "Test From",
                To             = "Test To",
                AvailableSeats = 3,
                PhoneNumber    = "0123123123",
                Notes          = null,
                Participants   = new List <UserRide>
                {
                    new UserRide
                    {
                        User = otherUsers[0],
                    }
                },
                Invitations = new List <Invitation>
                {
                    new Invitation
                    {
                        Key = "testKey"
                    }
                },
                JoinRequests = new List <JoinRequest>
                {
                    new JoinRequest
                    {
                        User    = otherUsers[1],
                        SentOn  = DateTime.UtcNow.AddDays(-1),
                        Message = "Test Message"
                    }
                },
                Conversation = new Conversation
                {
                    Messages = new List <Message>
                    {
                        new Message
                        {
                            Author  = otherUsers[0],
                            SentOn  = DateTime.UtcNow.AddDays(-1),
                            Content = "Test Message Content 1"
                        },
                        new Message
                        {
                            Author  = otherUsers[0],
                            SentOn  = DateTime.UtcNow,
                            Content = "Test Message Content 2"
                        }
                    }
                }
            };

            var user = new PoolItUser
            {
                FirstName    = "FirstName",
                LastName     = "LastName",
                UserName     = "******",
                Email        = "*****@*****.**",
                SentRequests = new List <JoinRequest>
                {
                    new JoinRequest
                    {
                        Ride = new Ride
                        {
                            Title = "Test Ride for Join Request"
                        },
                        SentOn  = DateTime.UtcNow,
                        Message = "Test Message for Join Request"
                    }
                },
                Cars = new List <Car>
                {
                    new Car
                    {
                        Model = new CarModel
                        {
                            Manufacturer = new CarManufacturer
                            {
                                Name = "TestManufacturer"
                            },
                            Model = "TestModel"
                        },
                        Colour  = "TestColour",
                        Details = null,
                        Rides   = new List <Ride>
                        {
                            ride
                        }
                    }
                },
                UserRides = new List <UserRide>
                {
                    new UserRide
                    {
                        Ride = ride
                    }
                },
                ContactMessages = new List <ContactMessage>
                {
                    new ContactMessage
                    {
                        Subject = "Test Subject",
                        Message = "Test Message"
                    }
                }
            };

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var personalDataService = new PersonalDataService(new EfRepository <PoolItUser>(context),
                                                              new EfRepository <JoinRequest>(context),
                                                              new EfRepository <UserRide>(context),
                                                              new EfRepository <Conversation>(context),
                                                              new EfRepository <ContactMessage>(context));

            // Act
            var result = await personalDataService.DeleteUser(user.Id);

            // Assert
            Assert.True(result);

            var carCount = await context.Cars.CountAsync();

            Assert.Equal(0, carCount);

            var rideCount = await context.Rides.CountAsync();

            Assert.Equal(1, rideCount);

            var conversationCount = await context.Conversations.CountAsync();

            Assert.Equal(0, conversationCount);

            var invitationCount = await context.Invitations.CountAsync();

            Assert.Equal(0, invitationCount);

            var joinRequestCount = await context.JoinRequests.CountAsync();

            Assert.Equal(0, joinRequestCount);

            var messageCount = await context.Messages.CountAsync();

            Assert.Equal(0, messageCount);

            var userRideCount = await context.UserRides.CountAsync();

            Assert.Equal(0, userRideCount);

            var userCount = await context.Users.CountAsync();

            Assert.Equal(2, userCount);

            var contactMessageCount = await context.ContactMessages.CountAsync();

            Assert.Equal(0, contactMessageCount);
        }
Example #8
0
 public PersonalDataController(PersonalDataService personalDataService)
 {
     _personalDataService = personalDataService;
 }
        public async Task DeleteJobSeeker_WithExistingJobSeeker_WorksCorrectly()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var testUsers = new List <User>
            {
                new User
                {
                    UserName        = "******",
                    Email           = "*****@*****.**",
                    ContactMessages = new List <ContactMessage>()
                    {
                        new ContactMessage()
                        {
                            Subject = "SubjectTest",
                            Message = "MessageTest"
                        }
                    }
                },
                new User
                {
                    UserName = "******",
                    Email    = "*****@*****.**",
                }
            };

            var model = new JobSeeker()
            {
                FirstName = "FirstNameTest1",
                LastName  = "LastNameTest1",
                User      = testUsers[0],
                UserJobs  = new List <JobCandidate>()
                {
                    new JobCandidate()
                    {
                        Job = new Job()
                        {
                            Title       = "Test Job Title1",
                            Location    = "Test Location1",
                            Description = "Random description1",
                            EndDate     = DateTime.UtcNow.AddDays(1),
                            Category    = new Category()
                            {
                                CategoryType = "NewCategory1"
                            },
                            JobType = new JobType()
                            {
                                Type = "NewType1"
                            }
                        }
                    }
                },
                Resume = new Resume()
            };

            await context.AddAsync(model);

            context.SaveChanges();

            var personalDataService = new PersonalDataService(new EfRepository <Company>(context),
                                                              new EfRepository <ContactMessage>(context),
                                                              new EfRepository <Job>(context),
                                                              new EfRepository <JobSeeker>(context),
                                                              new EfRepository <JobCandidate>(context),
                                                              new EfRepository <User>(context),
                                                              new EfRepository <Resume>(context));

            var result = await personalDataService.DeleteJobSeeker(testUsers[0].Id);

            Assert.True(result);

            var contactMessagesCount = await context.ContactMessages.CountAsync();

            Assert.Equal(0, contactMessagesCount);

            var jobsCandidateCount = await context.JobsCandidates.CountAsync();

            Assert.Equal(0, jobsCandidateCount);

            var jobSeekersCount = await context.JobSeekers.CountAsync();

            Assert.Equal(0, jobSeekersCount);

            var resumeCount = await context.Resumes.CountAsync();

            Assert.Equal(0, resumeCount);

            var usersCount = await context.Users.CountAsync();

            Assert.Equal(0, usersCount);
        }