public async Task GetByIdAsync_ReturnsObject(
            [Frozen] Mock <DbSet <Entities.StoreCustomer> > mockSet,
            [Frozen] Mock <AWContext> mockContext,
            Entities.StoreCustomer customer
            )
        {
            //Arrange
            mockSet.Setup(x => x.FindAsync(It.IsAny <object[]>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(customer);

            mockContext.Setup(x => x.Set <Entities.StoreCustomer>())
            .Returns(mockSet.Object);
            var repository = new EfRepository <Entities.StoreCustomer>(mockContext.Object);

            //Act
            var result = await repository.GetByIdAsync(1);

            //Assert
            result.Name.Should().Be(customer.Name);
        }
        public async Task AddAsync_SavesObject(
            List <Entities.StoreCustomer> customers,
            Entities.StoreCustomer newCustomer
            )
        {
            //Arrange
            var mockSet = customers.Cast <Entities.Customer>().AsQueryable().BuildMockDbSet();

            var mockContext = new Mock <AWContext>();

            mockContext.Setup(x => x.Set <Entities.Customer>())
            .Returns(mockSet.Object);
            var repository = new EfRepository <Entities.Customer>(mockContext.Object);

            //Act
            var savedCustomer = await repository.AddAsync(newCustomer);

            //Assert
            mockSet.Verify(x => x.Add(It.IsAny <Entities.Customer>()));
            mockContext.Verify(x => x.SaveChangesAsync(It.IsAny <CancellationToken>()));
            newCustomer.Should().BeEquivalentTo(savedCustomer);
        }
        public async Task UpdateAsync_SavesObject(
            List <Entities.StoreCustomer> customers
            )
        {
            //Arrange
            var mockSet = customers.Cast <Entities.Customer>().AsQueryable().BuildMockDbSet();

            var mockContext = new Mock <AWContext>();

            mockContext.Setup(x => x.Set <Entities.Customer>())
            .Returns(mockSet.Object);
            mockContext.Setup(x => x.SetModified(It.IsAny <Entities.Customer>()));
            var repository = new EfRepository <Entities.Customer>(mockContext.Object);

            //Act
            var existingCustomer = new Entities.StoreCustomer(
                "A Bike Store",
                "AW00000001"
                );
            await repository.UpdateAsync(existingCustomer);

            //Assert
            mockContext.Verify(x => x.SaveChangesAsync(It.IsAny <CancellationToken>()));
        }