예제 #1
0
        public async Task SearchPeopleAsync_GivenSearchStringMatchesMultiple_ShouldReturnPeopleCorrectly()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        added1   = TestData.TestPerson1();
                Person        added2   = TestData.TestPerson2();
                List <Person> expected = new List <Person> {
                    added1, added2
                };

                testContext.People.Add(added1);
                testContext.People.Add(added2);
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                List <Person> actual = (await repository.SearchPeopleAsync("e")).ToList();

                // Assert
                List <Person> actualSorted = actual.OrderBy(p => p.Id).ToList();
                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actualSorted);
            }
        }
예제 #2
0
        public async Task DeletePersonAsync_GivenPersonDoesNotExist_ShouldDoNothing()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        person1  = TestData.TestPerson1();
                Person        person2  = TestData.TestPerson2();
                List <Person> expected = new List <Person> {
                    person1
                };

                testContext.People.Add(person1);
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                await repository.DeletePersonAsync(person2.Id);

                // Assert
                List <Person> actual = await testContext.People.ToListAsync();

                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #3
0
        public void TestMethod1()
        {
            var options = new DbContextOptionsBuilder <PeopleSearchDbContext>()
                          .UseInMemoryDatabase(databaseName: "PeopleListDatabase")
                          .Options;

            // Insert seed data into the database using one instance of the context
            using (var context = new PeopleSearchDbContext(options))
            {
                context.Peoples.Add(new People {
                    FirstName = "Jone", LastName = "Sams", Age = 22, Address = "TestAddress1", Interest = "TestInterest1"
                });
                context.Peoples.Add(new People {
                    FirstName = "Laura", LastName = "John", Age = 32, Address = "TestAddress2", Interest = "TestInterest2"
                });
                context.Peoples.Add(new People {
                    FirstName = "Sam", LastName = "Kite", Age = 23, Address = "TestAddress3", Interest = "TestInterest3"
                });
                context.SaveChanges();
            }

            using (var context = new PeopleSearchDbContext(options))
            {
                PeopleService peopleService = new PeopleService(context);
                var           peopleList    = peopleService.GetAsync().Result;
                Assert.AreEqual(3, peopleList.Count);

                peopleList = peopleService.GetbyNameAsync("Jo").Result;
                Assert.AreEqual(2, peopleList.Count);
            }
        }
예제 #4
0
        public async Task AddOrUpdatePerson_GivenInterestsRemoved_ShouldUpdate()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        added    = TestData.TestPerson1();
                Person        modified = TestData.TestPerson1();
                List <Person> expected = new List <Person> {
                    modified
                };

                testContext.People.Add(added);
                await testContext.SaveChangesAsync();

                modified.Id = added.Id;
                added.Interests.Clear();
                modified.Interests.Clear();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                await repository.AddOrUpdatePerson(added);

                // Assert
                List <Person> actual = await testContext.People.ToListAsync();

                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #5
0
        public async Task SearchPeopleAsync_GivenNoPeopleExist_ShouldReturnEmptyList()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                PersonRepository repository = new PersonRepository(testContext);

                List <Person> expected = new List <Person>();

                // Act
                List <Person> actual = (await repository.SearchPeopleAsync(null)).ToList();

                // Assert
                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #6
0
        public async Task AddOrUpdatePerson_GivenPerson_ShouldReturnPersonCorrectly()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person expected = TestData.TestPerson1();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                Person actual = await repository.AddOrUpdatePerson(expected);

                // Assert
                ModelComparisonHelper.AssertPeopleAreEqual(expected, actual);
            }
        }
예제 #7
0
        public async Task GetByIdAsync_GivenNoPeopleExist_ShouldReturnNull()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                PersonRepository repository = new PersonRepository(testContext);

                Person expected = null;

                // Act
                Person actual = await repository.GetByIdAsync(0);

                // Assert
                ModelComparisonHelper.AssertPeopleAreEqual(expected, actual);
            }
        }
예제 #8
0
        public async Task AddOrUpdatePerson_GivenNullPerson_ShouldNotAdd()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                PersonRepository repository = new PersonRepository(testContext);

                int expected = 0;

                // Act
                await repository.AddOrUpdatePerson(null);

                // Assert
                int actual = await testContext.People.CountAsync();

                Assert.AreEqual(expected, actual);
            }
        }
예제 #9
0
        public async Task GetByIdAsync_GivenNonMatchingId_ShouldReturnNull()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person expected = null;

                testContext.People.Add(TestData.TestPerson1());
                testContext.People.Add(TestData.TestPerson2());
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                Person actual = await repository.GetByIdAsync(123);

                // Assert
                ModelComparisonHelper.AssertPeopleAreEqual(expected, actual);
            }
        }
예제 #10
0
        public async Task GetByIdAsync_GivenPersonExists_ShouldReturnPersonCorrectly()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person added    = TestData.TestPerson1();
                Person expected = added;

                testContext.People.Add(added);
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                Person actual = await repository.GetByIdAsync(expected.Id);

                // Assert
                ModelComparisonHelper.AssertPeopleAreEqual(expected, actual);
            }
        }
예제 #11
0
        public async Task SearchPeopleAsync_GivenSearchStringMatchesNone_ShouldReturnEmptyList()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                List <Person> expected = new List <Person>();

                testContext.People.Add(TestData.TestPerson1());
                testContext.People.Add(TestData.TestPerson2());
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                List <Person> actual = (await repository.SearchPeopleAsync("zzz")).ToList();

                // Assert
                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #12
0
        public async Task AddOrUpdatePerson_GivenPersonDoesNotExist_ShouldAdd()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        added    = TestData.TestPerson1();
                List <Person> expected = new List <Person> {
                    added
                };

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                await repository.AddOrUpdatePerson(added);

                // Assert
                List <Person> actual = await testContext.People.ToListAsync();

                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #13
0
        public async Task SearchPeopleAsync_GivenPersonExists_ShouldReturnPersonCorrectly()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        added    = TestData.TestPerson1();
                List <Person> expected = new List <Person> {
                    added
                };

                testContext.People.Add(added);
                await testContext.SaveChangesAsync();

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                List <Person> actual = (await repository.SearchPeopleAsync(null)).ToList();

                // Assert
                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #14
0
        public async Task DeletePersonAsync_GivenPersonExists_ShouldDoNothing()
        {
            // Arrange
            using (PeopleSearchDbContext testContext = GetTestContext())
            {
                Person        added    = TestData.TestPerson1();
                List <Person> expected = new List <Person>();

                testContext.People.Add(added);
                await testContext.SaveChangesAsync();

                testContext.Entry(added).State = EntityState.Detached;

                PersonRepository repository = new PersonRepository(testContext);

                // Act
                await repository.DeletePersonAsync(added.Id);

                // Assert
                List <Person> actual = await testContext.People.ToListAsync();

                ModelComparisonHelper.AssertPersonListsAreEqual(expected, actual);
            }
        }
예제 #15
0
 public PeopleService(PeopleSearchDbContext context)
 {
     Context = context;
 }
예제 #16
0
 public PeopleController(ILogger <PeopleController> logger, PeopleSearchDbContext context, IPeopleService peopleService)
 {
     _logger       = logger;
     Context       = context;
     PeopleService = peopleService;
 }
예제 #17
0
 public PeopleController(PeopleSearchDbContext context, IMapper mapper)
 {
     this.mapper  = mapper;
     this.context = context;
 }
예제 #18
0
 public SqlPersonData(PeopleSearchDbContext context)
 {
     _context = context;
 }
예제 #19
0
 /// <summary>
 /// Constructor which expects a PeopleSearchDbContext to use as the repository.
 /// </summary>
 /// <param name="context">The context to use as the repository.</param>
 public PersonRepository(PeopleSearchDbContext context)
 {
     _context = context;
 }