public void Insert()
        {
            using (var context = new MainContext())
            {
                var myRepo = new Repository<Customer>(context);
                TotalCustomersBeforeTestRuns = myRepo.GetAll().Count();

                //Have to provide a valid name and e-mail address
                MyNewCustomer = new Customer {Name = "Rafael", Email = "*****@*****.**"};
                myRepo.Add(MyNewCustomer);
                myRepo.Save();

                TotalOfClientsAfterTheTestRuns = myRepo.GetAll().Count();

                //Assert that the number of clients increase by 1
                Assert.AreEqual(TotalCustomersBeforeTestRuns + 1, TotalOfClientsAfterTheTestRuns);
            }
        }
        public HttpResponseMessage Post(Customer customer)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    _applicationUnit.Customers.Add(customer);
                    _applicationUnit.Customers.Save();

                    HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.Created, customer);
                    result.Headers.Location = new Uri(Url.Link("DefaultApi", new {id = customer.Id}));

                    return result;
                }
                else
                {
                    return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
                }
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
            }
        }
 public void InitializeCustomer()
 {
     MyCustomerRepo = new FakeCustomerRepository();
     CustomerSample = ((FakeCustomerRepository)MyCustomerRepo).CustomerSample;
 }
        public HttpResponseMessage Put(int id, Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            if (id != customer.Id)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            Customer existingCustomer = _applicationUnit.Customers.GetById(customer.Id);
            _applicationUnit.Customers.Detach(existingCustomer);

            // Keep original Created On
            customer.CreatedOn = existingCustomer.CreatedOn;

            // Update Modified On
            customer.ModifiedOn = DateTime.UtcNow;

            _applicationUnit.Customers.Update(customer);

            try
            {
                _applicationUnit.Customers.Save();

                // Return an explicit value to avoid the fail callback
                // begin incorrectly invoked.
                return Request.CreateResponse(HttpStatusCode.OK, "{sucess:'true', verb:'PUT'}");
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest, ex);
            }
        }