コード例 #1
0
        public async Task CreateAsync_WithNonExistentUser_ReturnsFalse()
        {
            // Arrange
            var testUserId = Guid.NewGuid().ToString();

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

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            var serviceModel = new ContactMessageServiceModel
            {
                Email    = "*****@*****.**",
                FullName = "Test Name",
                Subject  = "Test Subject",
                Message  = "Test Message",
                UserId   = testUserId
            };

            // Act
            var result = await contactMessagesService.CreateAsync(serviceModel);

            // Assert
            Assert.False(result);

            var messageExists = await context.ContactMessages.AnyAsync();

            Assert.False(messageExists);
        }
コード例 #2
0
        public async Task CreateAsync_WithValidModel_WorksCorrectly_WithUnsignedUser()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var serviceModel = new ContactMessageServiceModel
            {
                Subject  = "TestSubjectName",
                Message  = "TestMessage",
                FullName = "TestFullName",
                Email    = "*****@*****.**"
            };

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context),
                                                                    new EfRepository <User>(context));

            var result = await contactMessagesService.CreateAsync(serviceModel);

            Assert.True(result);

            var dbModel = context.ContactMessages.SingleOrDefault();

            Assert.NotNull(dbModel);
        }
コード例 #3
0
        public async Task CreateAsync_WithoutUser_WorksCorrectly()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            var serviceModel = new ContactMessageServiceModel
            {
                Email    = "*****@*****.**",
                FullName = "Test Name",
                Subject  = "Test Subject",
                Message  = "Test Message"
            };

            // Act
            var result = await contactMessagesService.CreateAsync(serviceModel);

            // Assert
            Assert.True(result);

            var dbModel = await context.ContactMessages.SingleOrDefaultAsync();

            Assert.NotNull(dbModel);

            Assert.Equal(serviceModel.Email, dbModel.Email);
            Assert.Equal(serviceModel.FullName, dbModel.FullName);
        }
コード例 #4
0
        public async Task DeleteAsync_WithExistingMessage_ReturnsTrue()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var model = new ContactMessage()
            {
                FullName = "TestFullName",
                Email    = "*****@*****.**",
                Subject  = "TestSubject",
                Message  = "MessageTest"
            };

            context.ContactMessages.Add(model);

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context),
                                                                    new EfRepository <User>(context));

            var result = await contactMessagesService.DeleteAsync(model.Id);

            Assert.True(result);

            var dbModels = await context.ContactMessages.AnyAsync();

            Assert.False(dbModels);
        }
コード例 #5
0
        public async Task GetAllAsync_WithValidData_WorksCorrectly()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var expectedResults = new[] { "Subject1", "Subject2", "Subject3" }
            .OrderBy(s => s)
            .ToArray();

            foreach (var model in expectedResults)
            {
                context.ContactMessages.Add(new ContactMessage()
                {
                    FullName = "TestFullName",
                    Email    = "*****@*****.**",
                    Subject  = model,
                    Message  = "MessageTest"
                });
            }

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context),
                                                                    new EfRepository <User>(context));

            var actualResults = (await contactMessagesService.GetAllAsync())
                                .Select(s => s.Subject)
                                .OrderBy(s => s)
                                .ToArray();

            Assert.Equal(expectedResults, actualResults);
        }
コード例 #6
0
        public async Task GetAllAsync_WithNoData_ReturnsNull()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context),
                                                                    new EfRepository <User>(context));

            var actualResults = (await contactMessagesService.GetAllAsync());

            Assert.Empty(actualResults);
        }
コード例 #7
0
        public async Task DeleteAsync_WithNullId_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            // Act
            var result = await contactMessagesService.DeleteAsync(null);

            // Assert
            Assert.False(result);
        }
コード例 #8
0
        public async Task GetAllAsync_WithNoMessages_ReturnsEmptyEnumerable()
        {
            // Arrange
            const int expectedCount = 0;

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

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            // Act
            var actualCount = (await contactMessagesService.GetAllAsync()).Count();

            // Assert
            Assert.Equal(expectedCount, actualCount);
        }
コード例 #9
0
        public async Task CreateAsync_WithUser_WorksCorrectly()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

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

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            var serviceModel = new ContactMessageServiceModel
            {
                Email    = "*****@*****.**",
                FullName = "Other Name",
                Subject  = "Test Subject",
                Message  = "Test Message",
                UserId   = user.Id
            };

            // Act
            var result = await contactMessagesService.CreateAsync(serviceModel);

            // Assert
            Assert.True(result);

            var dbModel = await context.ContactMessages.SingleOrDefaultAsync();

            Assert.NotNull(dbModel);

            Assert.Null(dbModel.Email);
            Assert.Null(dbModel.FullName);

            Assert.Equal(user.Id, dbModel.UserId);
        }
コード例 #10
0
        public async Task GetAllAsync_WithMessages_WorksCorrectly()
        {
            // Arrange
            const int expectedCount = 2;

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

            await context.ContactMessages.AddRangeAsync(
                new ContactMessage
            {
                Email    = "*****@*****.**",
                FullName = "Test Name",
                Subject  = "Test Subject",
                Message  = "Test Message"
            },
                new ContactMessage
            {
                Email    = null,
                FullName = null,
                Subject  = "Test Subject",
                Message  = "Test Message",
                User     = new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Test",
                    LastName  = "User"
                }
            }
                );

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            // Act
            var actualCount = (await contactMessagesService.GetAllAsync()).Count();

            // Assert
            Assert.Equal(expectedCount, actualCount);
        }
コード例 #11
0
        public async Task DeleteAsync_WithCorrectId_WorksCorrectly()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var message = new ContactMessage
            {
                Email    = null,
                FullName = null,
                Subject  = "Test Subject",
                Message  = "Test Message",
                User     = new PoolItUser
                {
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    FirstName = "Test",
                    LastName  = "User"
                }
            };

            await context.ContactMessages.AddAsync(message);

            await context.SaveChangesAsync();

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context), new EfRepository <PoolItUser>(context));

            // Act
            var result = await contactMessagesService.DeleteAsync(message.Id);

            // Assert
            Assert.True(result);

            var messageExists = await context.ContactMessages.AnyAsync();

            Assert.False(messageExists);
        }
コード例 #12
0
        public async Task CreateAsync_WithInvalidModel_ReturnsFalse()
        {
            var context = new JobFinderDbContext(new DbContextOptionsBuilder <JobFinderDbContext>()
                                                 .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                 .Options);

            var serviceModel = new ContactMessageServiceModel
            {
                Message  = "TestMessage",
                FullName = "TestFullName",
                Email    = "*****@*****.**"
            };

            var contactMessagesService = new ContactMessagesService(new EfRepository <ContactMessage>(context),
                                                                    new EfRepository <User>(context));

            var result = await contactMessagesService.CreateAsync(serviceModel);

            Assert.False(result);

            var dbModels = await context.ContactMessages.AnyAsync();

            Assert.False(dbModels);
        }