public void Delete_ExistingClient()
        {
            var client          = GetClient();
            var clientsInMemory = new List <Client> {
                client
            };

            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            //mocking add method
            mockDbSet.Setup(m => m.Remove(It.IsAny <Client>()))
            .Returns(() => client)
            .Callback(() => clientsInMemory.Remove(client));

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            repo.Delete(client.CPF);

            Assert.IsTrue(clientsInMemory.Count == 0);
        }
        public void Update_ExistingClient_Valid()
        {
            var clientsInMemory = new List <Client> {
                GetClient()
            };

            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            //mocking add method
            mockDbSet.Setup(m => m.Add(It.IsAny <Client>()))
            .Callback <Client>(clientsInMemory.Add);

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            var client = GetClient();

            client.City = "Belo Horizonte";
            repo.Update(client);

            Assert.IsTrue(clientsInMemory.Count == 1);
            Assert.AreEqual("Belo Horizonte", clientsInMemory[0].City);
        }
        public void GetByCpf_Inexisting()
        {
            var clientsInMemory = new List <Client> {
                GetClient()
            };
            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            var client = repo.GetByCpf(1234); //wrong cpf
        }
        public void GetAllClients()
        {
            var clientsInMemory = new List <Client> {
                GetClient(), GetClient()
            };
            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            var allClients = repo.GetClients().ToList();

            Assert.AreEqual(clientsInMemory.Count, allClients.Count);
        }
        public void Update_NewClient_Valid()
        {
            var clientsInMemory = new List <Client>();
            var client          = GetClient();

            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            //mocking add method
            mockDbSet.Setup(m => m.Add(It.IsAny <Client>()))
            .Callback <Client>(clientsInMemory.Add);

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            repo.Update(client);

            Assert.IsTrue(clientsInMemory.Contains(client));
        }
        public void GetByCpf_Existing()
        {
            var clientsInMemory = new List <Client> {
                GetClient(), GetClient()
            };

            int searchCpf = 123;

            clientsInMemory[0].CPF = searchCpf;

            var mockDbSet = new Mock <DbSet <Client> >();

            PrepareQueryableMock(clientsInMemory, mockDbSet);

            var dbContext = new ClientsApiDbContext {
                Clients = mockDbSet.Object
            };
            var repo = new ClientsRepository(dbContext);

            var client = repo.GetByCpf(searchCpf);

            Assert.AreEqual(clientsInMemory[0], client);
        }
 public ClientsRepository(ClientsApiDbContext ctx)
 {
     _ctx = ctx;
 }