i have a service lyk below:
public class SubjectService : ISubjectService
{
private readonly ISubjectRepository subjectRepository;
public SubjectService(ISubjectRepository subjectRepository)
{
this.broadSubjectAreaRepository = broadSubjectAreaRepository;
}
public IQueryable<Subject> GetSubjectByFilter(Expression<Func<Subject, bool>> where)
{
var subject = this.subjectRepository.GetMany(where);
return subject;
}
}
the GetMany is defined in the repository implementation like this-
public virtual IQueryable<T> GetMany(Expression<Func<T, bool>> where)
{
return dbset.Where(where);
}
i had written a unit test for the service like this-
[TestMethod()]
public void GetByFilter_ShouldReturn_ListofSubject_AfterApplyingFilters()
{
var subject = new Subject()
{
Id = 3,
Name = "Physics",
SubjectCode = "PHY",
StatusId = 1
};
var list = CreateList();
var mockrepository = new Mock<ISubjectRepository>();
mockrepository.Setup(p => p.GetMany( l => l.Name.Trim().ToUpper() == subject.Name.Trim().ToUpper() && l.Id != subject.Id)).Returns(list.AsQueryable());
var service = new SubjectService(mockrepository.Object);
var filter = service.GetSubjectByFilter( l => l.Name.Trim().ToUpper() == subject.Name.Trim().ToUpper() && l.Id != subject.Id).ToList();
Assert.AreEqual(1,filter.Count());
}
private static List<Subject> CreateList()
{
var list = new List<Subject>()
{
new Subject{Id = 1,Name ="Physics", SubjectCode ="PHY", StatusId=1},
new Subject{Id = 2, Name ="Chemistry", SubjectCode ="CHEM", StatusId =1},
new Subject{Id = 3, Name ="English", SubjectCode ="ENG", StatusId=0}
};
return list;
}
can anyone verify the test let me know if whether i am going wrong anywhere???