public async Task GetListTest()
        {
            var connection = CreateSqLiteConnection();

            connection.Open();

            try
            {
                var options = SetDbContextOptionsBuilder(connection);

                await using var context = new CustomerMngtContext(options);
                Assert.True(await context.Database.EnsureCreatedAsync());

                //Arrange
                var customerOne = new CustomerMngt.Domain.Entities.Customer
                {
                    Password  = "******",
                    Email     = "*****@*****.**",
                    Surname   = "Surname1",
                    FirstName = "FirstName1",
                    Updated   = DateTime.Now,
                    Created   = DateTime.Now
                };

                var customerTwo = new CustomerMngt.Domain.Entities.Customer
                {
                    Password  = "******",
                    Email     = "*****@*****.**",
                    Surname   = "Surname2",
                    FirstName = "FirstName2",
                    Updated   = DateTime.Now,
                    Created   = DateTime.Now
                };

                //Act
                var repository = new CustomerRepository(context);
                repository.Add(customerOne);
                repository.Add(customerTwo);
                await repository.SaveChangesAsync();

                //Assert
                var filter = new CustomerFilter {
                    Email = "test"
                };
                var result = await repository.GetListByFilterAsync(filter);

                Assert.Equal(2, result.Count);
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task DeleteTest()
        {
            var connection = CreateSqLiteConnection();

            connection.Open();

            try
            {
                var options = SetDbContextOptionsBuilder(connection);

                await using var context = new CustomerMngtContext(options);
                Assert.True(await context.Database.EnsureCreatedAsync());

                //Arrange
                var newCustomer = new CustomerMngt.Domain.Entities.Customer
                {
                    Password  = "******",
                    Email     = "*****@*****.**",
                    Surname   = "Surname1",
                    FirstName = "FirstName1",
                    Updated   = DateTime.Now,
                    Created   = DateTime.Now
                };

                //Act
                var repository = new CustomerRepository(context);
                repository.Add(newCustomer);
                await repository.SaveChangesAsync();

                var filterStored = new CustomerFilter {
                    Id = newCustomer.Id
                };
                var storedCustomer = await repository.GetByFilterAsync(filterStored);

                repository.Remove(storedCustomer);
                await repository.SaveChangesAsync();

                //Assert
                var filterNonExistentUser = new CustomerFilter {
                    Id = newCustomer.Id
                };
                var nonExistentUser = await repository.GetByFilterAsync(filterNonExistentUser);

                Assert.Null(nonExistentUser);
            }
            finally
            {
                connection.Close();
            }
        }
Exemplo n.º 3
0
        public static async Task Populate(CustomerMngtContext dbContext)
        {
            await dbContext.Customers.AddAsync(new CustomerMngt.Domain.Entities.Customer
            {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Seed",
                Surname   = "Seed",
                Created   = DateTime.Now,
                Updated   = DateTime.Now
            });

            await dbContext.SaveChangesAsync();
        }
        public async Task DuplicatedEmailTest()
        {
            var connection = CreateSqLiteConnection();

            connection.Open();

            try
            {
                var options = SetDbContextOptionsBuilder(connection);

                await using var context = new CustomerMngtContext(options);
                Assert.True(await context.Database.EnsureCreatedAsync());

                //Arrange
                var customerOne = new CustomerMngt.Domain.Entities.Customer
                {
                    Password  = "******",
                    Email     = "*****@*****.**",
                    Surname   = "Surname1",
                    FirstName = "FirstName1",
                    Created   = DateTime.Now
                };

                var customerTwo = new CustomerMngt.Domain.Entities.Customer
                {
                    Password  = "******",
                    Email     = "*****@*****.**",
                    Surname   = "Surname2",
                    FirstName = "FirstName2",
                    Created   = DateTime.Now
                };

                //Act
                var repository = new CustomerRepository(context);
                repository.Add(customerOne);
                await repository.SaveChangesAsync();

                //Assert
                repository.Add(customerTwo);
                var exception =
                    await Assert.ThrowsAsync <DbUpdateException>(() => repository.SaveChangesAsync());

                Assert.NotNull(exception);
            }
            finally
            {
                connection.Close();
            }
        }
Exemplo n.º 5
0
 public RepositoryBase(CustomerMngtContext context)
 {
     DbContext = context;
     DbSet     = DbContext.Set <TEntity>();
 }
 public CustomerRepository(CustomerMngtContext context) : base(context)
 {
 }