mercredi 28 janvier 2015

for Unit Testing , setting up Add function of repository pattern that is wrapped using Unit Of Work pattern

My test looks like this



[Fact]
public void SimpleAddTest()
{
// Arrange
var authorizationsToBeAdded = new List<PatientPayerAuthInfo>
{
new PatientPayerAuthInfo (),
new PatientPayerAuthInfo ()
}.ToList();
var persistentAuthorizations = new List<PatientPayerAuthInfo>
{
new PatientPayerAuthInfo {PatientPayerAuthInfoId = 1 },
new PatientPayerAuthInfo {PatientPayerAuthInfoId = 2 },
new PatientPayerAuthInfo {PatientPayerAuthInfoId = 3 },
new PatientPayerAuthInfo {PatientPayerAuthInfoId = 4 }
}.AsQueryable();

var mockSet = new Mock<DbSet<PatientPayerAuthInfo>>();
mockSet.As<IQueryable<PatientPayerAuthInfo>>().Setup(m => m.Provider).Returns(persistentAuthorizations.Provider);
mockSet.As<IQueryable<PatientPayerAuthInfo>>().Setup(m => m.Expression).Returns(persistentAuthorizations.Expression);
mockSet.As<IQueryable<PatientPayerAuthInfo>>().Setup(m => m.ElementType).Returns(persistentAuthorizations.ElementType);
mockSet.As<IQueryable<PatientPayerAuthInfo>>().Setup(m => m.GetEnumerator()).Returns(persistentAuthorizations.GetEnumerator());

var mockedUnitOfWork = new Mock<IUOW<DBContext>>();

var service = new PatientPayerService(mockedUnitOfWork.Object);

// Act
var sut = service.AddPatientPayerAuthInfos(authorizationsToBeAdded);

// Assert

}


service layer function looks like this



public void AddPatientPayerAuthInfos(IEnumerable<PatientPayerAuthInfo> patientPayerAuthInfos)
{
foreach (var patientPayerAuthInfo in patientPayerAuthInfos)
{
UOW.PatientPayerAuthInfos.Add(patientPayerAuthInfo);
}
UOW.SaveChanges();
}


AND Repository implementation is



public virtual void Add(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State != EntityState.Detached)
{
dbEntityEntry.State = EntityState.Added;
}
else
{
DbSet.Add(entity);
}
}


which then has a commit method that calls EF's SaveChanges.


my question is how we can Setup mockedUnitOfWork using persistentAuthorizations so that when i add Two objects using authorizationsToBeAdded then the total count of persistentAuthorizations becomes 6, which are 4 initially.


or correct me if i am on wrong track.


Aucun commentaire:

Enregistrer un commentaire