public async Task CreateAsync_ThrowsOnNull()
        {
            var dbcontext  = InMemoryContext.GetDbContext();
            var repository = new EntityTableRepository <Movie>(dbcontext);

            await repository.CreateAsync(null);

            Assert.Fail("ArgumentNullException expected");
        }
        public async Task CreateAsync_Duplicate_Throws()
        {
            var dbcontext  = InMemoryContext.GetDbContext();
            var repository = new EntityTableRepository <Movie>(dbcontext);
            var testItem   = RandomMovie();

            var actual = await repository.CreateAsync(testItem);

            Assert.Fail("EntityExistsException expected");
        }
        public async Task CreateAsync_CreatesNewItem()
        {
            var dbcontext  = InMemoryContext.GetDbContext();
            var dataset    = dbcontext.Set <Movie>();
            var repository = new EntityTableRepository <Movie>(dbcontext);
            var newItem    = new Movie()
            {
                Title = "Test Item"
            };

            var actual = await repository.CreateAsync(newItem);

            Assert.IsNotNull(actual);
            Assert.AreEqual(32, actual.Id.Length);
            Assert.AreEqual(1, dataset.Count(m => m.Id == actual.Id));
            Assert.IsTrue(DateTimeOffset.UtcNow.Subtract(actual.UpdatedAt).TotalMilliseconds < 500);
            Assert.IsNotNull(actual.Version);
            Assert.AreEqual("Test Item", actual.Title);
        }