protected override Services CreateServices(IPeopleRepository sut, InMemoryPeopleRepository repository, ICacheSupervisor supervisor, ServiceProvider provider) { var timeProvider = provider.GetRequiredService <ITimeProvider>(); return(new Services(sut, repository, supervisor, timeProvider)); }
public void ReadAllSortedByGender() { var people = new List <Person>() { new Person("a", "e", "f", DateTimeOffset.Parse("04-02-1987 00:00"), "g"), new Person("c", "d", "f", DateTimeOffset.Parse("03-02-1987 00:00"), "f"), new Person("b", "c", "m", DateTimeOffset.Parse("02-02-1987 00:00"), "e"), new Person("d", "b", "m", DateTimeOffset.Parse("01-02-1987 00:00"), "d") }; IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); // This will insert it in the wrong order: descending last names in stead of ascending. foreach (var item in people.OrderByDescending(x => x.FirstName)) { repo.CreatePerson(item); } List <Person> orderedPeople = repo.ReadPeople(OrderOption.gender).ToList(); for (int i = 0; i < 4; i++) { Assert.AreEqual(people[i].FavoriteColor, orderedPeople[i].FavoriteColor); Assert.AreEqual(people[i].FirstName, orderedPeople[i].FirstName); Assert.AreEqual(people[i].LastName, orderedPeople[i].LastName); Assert.AreEqual(people[i].DateOfBirth, orderedPeople[i].DateOfBirth); Assert.AreEqual(people[i].Gender, orderedPeople[i].Gender); } }
public Services(IPeopleRepository sut, InMemoryPeopleRepository repository, ICacheSupervisor cacheSupervisor, ITimeProvider timeProvider) { Sut = sut ?? throw new ArgumentNullException(nameof(sut)); Repository = repository ?? throw new ArgumentNullException(nameof(repository)); CacheSupervisor = cacheSupervisor ?? throw new ArgumentNullException(nameof(cacheSupervisor)); TimeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider)); }
public void ReadFailsOnNonExistantId() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); Person created = repo.CreatePerson(person); Assert.ThrowsException <KeyNotFoundException>(() => repo.ReadPerson(created.PersonId + 1)); }
public void CreateFailsOnNonZeroPersonId() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); var newPerson = new Person(5, person); repo.CreatePerson(person); Assert.ThrowsException <ArgumentOutOfRangeException>(() => repo.CreatePerson(newPerson)); }
public void ReadSucceedsOnExistantId() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); Person created = repo.CreatePerson(person); Person read = repo.ReadPerson(created.PersonId); Assert.AreSame(created, read); }
public void CreateDoesNotFailOnSamePerson() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); repo.CreatePerson(person); repo.CreatePerson(person); Assert.AreEqual(2, repo.ReadPeople().Count()); }
public void DeleteSucceedsOnExistantId() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); Person created = repo.CreatePerson(person); repo.DeletePerson(created.PersonId); Assert.IsFalse(repo.ReadPeople().Any()); }
public void UpdateFailsOnNonExistantId() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); Person created = repo.CreatePerson(person); created.FavoriteColor = "green"; Person falseUpdate = new Person(created.PersonId + 1, created); Assert.ThrowsException <KeyNotFoundException>(() => repo.UpdatePerson(falseUpdate)); }
public static void ConfigureMyServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.Formatting = Formatting.Indented; }); services.AddLogging(); // We need to take this approach, otherwise the console app and the webapi endpoint somehow end up with two different instances, // even though we indicated it should add a Singleton, and thus they should both be using the same bloody thing. // This may have to do with going across App Domain boundaries / threads, the way we are launching things above. ILogger <InMemoryPeopleRepository> logger = services.BuildServiceProvider().GetRequiredService <ILogger <InMemoryPeopleRepository> >(); var peopleRepo = new InMemoryPeopleRepository(logger); services.AddSingleton(typeof(IPeopleRepository), peopleRepo); Provider = services.BuildServiceProvider(); }
public void UpdateSucceeds() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); var person = new Person("first", "last", "male", System.DateTimeOffset.Now, "blue"); Person created = repo.CreatePerson(person); created.FavoriteColor = "green"; Person updated = repo.UpdatePerson(created); Assert.AreNotEqual(person, updated); Assert.AreNotEqual(person.FavoriteColor, updated.FavoriteColor); Assert.AreEqual(person.FirstName, updated.FirstName); Assert.AreEqual(person.LastName, updated.LastName); Assert.AreEqual(person.DateOfBirth, updated.DateOfBirth); Assert.AreEqual(person.Gender, updated.Gender); Assert.AreEqual(person.PersonId, updated.PersonId); }
protected override Services CreateServices(IPeopleRepository sut, InMemoryPeopleRepository repository, ICacheSupervisor supervisor, ServiceProvider provider) { return(new Services(sut, repository, supervisor)); }
public void GetAllThrowsExceptionForNullRepo() { InMemoryPeopleRepository nullRepo = null; var results = nullRepo.GetAll(); }
public void TryFindAgainstNullCollectionThrowsException() { InMemoryPeopleRepository nullRepo = null; nullRepo.TryFind("Some Person", out List <Person> matches); }
public void ReadPeopleThrowsOnBadSort() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); Assert.ThrowsException <ArgumentOutOfRangeException>(() => repo.ReadPeople((OrderOption)4)); }
public void BaseConstructorHasEmptyList() { IPeopleRepository repo = new InMemoryPeopleRepository(logger.Object); Assert.IsFalse(repo.ReadPeople().Any()); }