public async Task CreateAsync_SingleItemWithTimeStamps_WhenCreatedTimeStampHasNotBeenSet_ShouldSetCreatedTimeStamp() { // Arrange Dog dog = new("labradoodle", "Thor"); // Act Dog returnedDog = await _dogRepository.CreateAsync(dog); // Assert Dog addedDog = _dogRepository.DeserializeItem(_dogRepository.Items.Values.First()); Assert.Equal(returnedDog.Name, addedDog.Name); Assert.Equal(returnedDog.Id, addedDog.Id); Assert.Equal(returnedDog.Type, addedDog.Type); Assert.Equal(addedDog.Name, dog.Name); Assert.Equal(addedDog.Id, dog.Id); Assert.Equal(addedDog.Type, dog.Type); Assert.NotNull(dog.CreatedTimeUtc); Assert.NotNull(returnedDog.CreatedTimeUtc); Assert.NotNull(addedDog.CreatedTimeUtc); Assert.InRange(dog.CreatedTimeUtc !.Value, DateTime.UtcNow.AddSeconds(-1), DateTime.UtcNow.AddSeconds(1)); Assert.InRange(returnedDog.CreatedTimeUtc !.Value, DateTime.UtcNow.AddSeconds(-1), DateTime.UtcNow.AddSeconds(1)); Assert.InRange(addedDog.CreatedTimeUtc !.Value, DateTime.UtcNow.AddSeconds(-1), DateTime.UtcNow.AddSeconds(1)); }
public async Task CreateAsync_ItemWhereIdAlreadyExists_ThrowsCosmosException() { //Arrange Person item = new("joe") { Id = Guid.NewGuid().ToString(), Type = nameof(Person) }; _personRepository.Items.TryAddAsJson(item.Id, item); //Act CosmosException ex = await Assert.ThrowsAsync <CosmosException>(() => _personRepository.CreateAsync(new Person("joe") { Id = item.Id, Type = nameof(Person) }).AsTask()); Assert.Equal(HttpStatusCode.Conflict, ex.StatusCode); }
public async Task CreateAsync_WhenTypeCannotBeDeserialised_StoresTheRecordAndThrowsCosmosException() { //Arrange InvalidSerialisableArguments args = new("id", "property1"); InvalidSerialisable invalidSerialisable = new(args); //Act //Assert await Assert.ThrowsAsync <NullReferenceException>(() => _invalidSerialisableRepository.CreateAsync(invalidSerialisable).AsTask()); Assert.True(_invalidSerialisableRepository.Items.ContainsKey(invalidSerialisable.Id)); Assert.Equal(args.Property1, _invalidSerialisableRepository.DeserializeItem <ValidInvalidSerialisable>(_invalidSerialisableRepository.Items[invalidSerialisable.Id]).Property1); Assert.Equal(args.PartitionKey, _invalidSerialisableRepository.DeserializeItem <ValidInvalidSerialisable>(_invalidSerialisableRepository.Items[invalidSerialisable.Id]).PartitionKey); }