public async Task WhenAddingASampleDocument_ShouldBeRetrieved()
        {
            var faker = new Faker();

            var newSampleDocumentCreated = new SampleDocument()
            {
                SampleString     = faker.Random.String(1, 20),
                SampleCollection = faker.Random.WordsArray(1, 20).ToList()
            };

            var sampleDocumentCreated = await _sut.CreateAsync(newSampleDocumentCreated);

            var sampleDocumentGetted = _sut.GetById(sampleDocumentCreated.Id);


            using (new AssertionScope())
            {
                sampleDocumentCreated.Should().NotBe(null);
                sampleDocumentCreated.SampleString.Should().Be(newSampleDocumentCreated.SampleString);
                sampleDocumentCreated.SampleCollection.Should()
                .BeEquivalentTo(newSampleDocumentCreated.SampleCollection);


                sampleDocumentGetted.Should().NotBe(null);
                sampleDocumentGetted.SampleString.Should().Be(newSampleDocumentCreated.SampleString);
                sampleDocumentGetted.SampleCollection.Should()
                .BeEquivalentTo(newSampleDocumentCreated.SampleCollection);
            }
        }
        public async Task WhenDeleting_ShouldntBeAbleToGet()
        {
            var faker = new Faker();

            var newSampleDocumentCreated = new SampleDocument()
            {
                SampleString     = faker.Random.Words(4),
                SampleCollection = faker.Random.WordsArray(1, 20).ToList()
            };

            var sampleDocumentCreated = await _sut.CreateAsync(newSampleDocumentCreated);


            await _sut.DeleteAsync(sampleDocumentCreated.Id);

            var deletedDocument = _sut.GetById(sampleDocumentCreated.Id);

            deletedDocument.Should().Be(null);
        }
        public async Task WhenUpdatingASampleDocument_UpdatedDocumentShouldBeRetrieved()
        {
            var faker = new Faker();

            string sampleDocumentCreatedId;

            using (new ArrangeAction())
            {
                var newSampleDocumentCreated = new SampleDocument()
                {
                    SampleString     = faker.Random.Words(3),
                    SampleCollection = faker.Random.WordsArray(1, 20).ToList()
                };

                var sampleDocumentCreated = await _sut.CreateAsync(newSampleDocumentCreated);

                sampleDocumentCreatedId = sampleDocumentCreated.Id;
            }

            var sampleDocumentToBeUpdated = new SampleDocument(); //new instance.

            sampleDocumentToBeUpdated.Id               = sampleDocumentCreatedId;
            sampleDocumentToBeUpdated.SampleString     = faker.Random.Words(4);
            sampleDocumentToBeUpdated.SampleCollection = faker.Random.WordsArray(21, 40).ToList();

            var sampleDocumentIsUpdated = await _sut.UpdateAsync(sampleDocumentToBeUpdated.Id, sampleDocumentToBeUpdated);


            using (new AssertionScope())
            {
                //should be the same as the updated one
                sampleDocumentIsUpdated.Should().NotBe(null);
                sampleDocumentIsUpdated.SampleString.Should().Be(sampleDocumentToBeUpdated.SampleString);
                sampleDocumentIsUpdated.SampleCollection.Should()
                .BeEquivalentTo(sampleDocumentToBeUpdated.SampleCollection);
            }
        }