using System.Collections.Generic;
public static void Main()
new UnitTests().PerformUnitTest();
public void PerformUnitTest()
var sut = new CustomerManager(new CustomerRepositoryMock());
var actual = sut.UpdateZip("12345");
var result = expected == actual ? "PASS" : "FAIL";
Console.WriteLine(result);
actual = sut.UpdateZip("9999");
result = expected == actual ? "PASS" : "FAIL";
Console.WriteLine(result);
public class CustomerManager
private ICustomerRepository _repository;
_repository = new CustomerRepository();
public CustomerManager(ICustomerRepository repository)
_repository = repository;
public bool UpdateZip(string newZipCode)
var allZipCodes = GetAllValidZipCodes();
if (allZipCodes.Contains(newZipCode))
int customerId = (int)HttpContext.Current.Profile.GetPropertyValue("CustomerId");
_repository.UpdateZip(customerId, newZipCode);
private List<string> GetAllValidZipCodes()
var httpClient = new HttpClient();
return httpClient.Get<List<string>>("http://somezipcodeapi.com/GetAll");
public interface ICustomerRepository
void UpdateZip(int customerId, string newZipCode);
public class CustomerRepository : ICustomerRepository
public void UpdateZip(int customerId, string newZipCode)
var db = new DbContext();
var customer = db.Customers.SingleOrDefault(i => i.ID == customerId);
customer.ZipCode = newZipCode;
public class CustomerRepositoryMock : ICustomerRepository
private Dictionary<int, string> _codes = new Dictionary<int, string>();
public void UpdateZip(int customerId, string newZipCode)
if (_codes.ContainsKey(customerId))
_codes[customerId] = newZipCode;
_codes.Add(customerId, newZipCode);
public List<Customer> Customers
public T Get<T>(string url)