Skip to content

Instantly share code, notes, and snippets.

@stevenh77
Created October 13, 2014 11:02
Show Gist options
  • Save stevenh77/cf17c4e5624ae3d56727 to your computer and use it in GitHub Desktop.
Save stevenh77/cf17c4e5624ae3d56727 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using CarRental.Business.Bootstrapper;
using CarRental.Business.Entities;
using CarRental.Data.Contracts;
using Core.Common.Contracts;
using Core.Common.Core;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace CarRental.Data.Tests
{
[TestClass]
public class DataLayerTests
{
[TestInitialize]
public void Initialize()
{
ObjectBase.Container = MEFLoader.Init();
}
[TestMethod]
public void test_repository_usage()
{
RepositoryTestClass repositoryTest = new RepositoryTestClass();
IEnumerable<Car> cars = repositoryTest.GetCars();
Assert.IsTrue(cars != null);
}
[TestMethod]
public void test_repository_factory_usage()
{
RepositoryFactoryTestClass factoryTest = new RepositoryFactoryTestClass();
IEnumerable<Car> cars = factoryTest.GetCars();
Assert.IsTrue(cars != null);
}
[TestMethod]
public void test_repository_mocking()
{
List<Car> cars = new List<Car>()
{
new Car() { CarId = 1, Description = "Mustang" },
new Car() { CarId = 2, Description = "Corvette" }
};
Mock<ICarRepository> mockCarRepository = new Mock<ICarRepository>();
mockCarRepository.Setup(obj => obj.Get()).Returns(cars);
RepositoryTestClass repositoryTest = new RepositoryTestClass(mockCarRepository.Object);
IEnumerable<Car> ret = repositoryTest.GetCars();
Assert.IsTrue(ret == cars);
}
[TestMethod]
public void test_factory_mocking1()
{
List<Car> cars = new List<Car>()
{
new Car() { CarId = 1, Description = "Mustang" },
new Car() { CarId = 2, Description = "Corvette" }
};
Mock<IDataRepositoryFactory> mockDataRepository = new Mock<IDataRepositoryFactory>();
mockDataRepository.Setup(obj => obj.GetDataRepository<ICarRepository>().Get()).Returns(cars);
RepositoryFactoryTestClass factoryTest = new RepositoryFactoryTestClass(mockDataRepository.Object);
IEnumerable<Car> ret = factoryTest.GetCars();
Assert.IsTrue(ret == cars);
}
[TestMethod]
public void test_factory_mocking2()
{
List<Car> cars = new List<Car>()
{
new Car() { CarId = 1, Description = "Mustang" },
new Car() { CarId = 2, Description = "Corvette" }
};
Mock<ICarRepository> mockCarRepository = new Mock<ICarRepository>();
mockCarRepository.Setup(obj => obj.Get()).Returns(cars);
Mock<IDataRepositoryFactory> mockDataRepository = new Mock<IDataRepositoryFactory>();
mockDataRepository.Setup(obj => obj.GetDataRepository<ICarRepository>()).Returns(mockCarRepository.Object);
RepositoryFactoryTestClass factoryTest = new RepositoryFactoryTestClass(mockDataRepository.Object);
IEnumerable<Car> ret = factoryTest.GetCars();
Assert.IsTrue(ret == cars);
}
}
public class RepositoryTestClass
{
public RepositoryTestClass()
{
ObjectBase.Container.SatisfyImportsOnce(this);
}
public RepositoryTestClass(ICarRepository carRepository)
{
_CarRepository = carRepository;
}
[Import]
ICarRepository _CarRepository;
public IEnumerable<Car> GetCars()
{
IEnumerable<Car> cars = _CarRepository.Get();
return cars;
}
}
public class RepositoryFactoryTestClass
{
public RepositoryFactoryTestClass()
{
ObjectBase.Container.SatisfyImportsOnce(this);
}
public RepositoryFactoryTestClass(IDataRepositoryFactory dataRepositoryFactory)
{
_DataRepositoryFactory = dataRepositoryFactory;
}
[Import]
IDataRepositoryFactory _DataRepositoryFactory;
public IEnumerable<Car> GetCars()
{
ICarRepository carRepository = _DataRepositoryFactory.GetDataRepository<ICarRepository>();
IEnumerable<Car> cars = carRepository.Get();
return cars;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment