I'm trying to use Assert.AreEqual in a test to validate a DTO from our provider.
The assert is failing with:
Expected: DTO.EmployeeDTO
Actual: DataProviders.Mappers.EmployeeMapper
Is there something I can do with our DTO and/or mapper to get AreEqual working? Should I override Equals for the DTO and use Assert.Equal instead?
Here is our expected employee DTO for comparison:
EmployeeDTO expected = new EmployeeDTO
{
Category = "OPS",
Code = "EMPL",
Email = "[email protected]",
JobDescription = "Philanthropist",
FirstName = "Bill",
Bolander = "Gates",
ResourceID = 1234567,
ResourceNumber = "ABCD1234567",
UserGUID = Guid.Parse("0A76A348-B709-9EF0-9E44-419433E7C90D"),
UserName = "billygates"
};
Here is our call from the data provider, which should return an EmployeeDTO that we can compare to our expected DTO.
EmployeeDTO actual = controller.GetEmployee("billygates");
Here is the GetEmployee provider method which should return an employee DTO:
public EmployeeDTO GetEmployee(string userName)
{
EmployeeDTO toReturn = null;
//Get employee
toReturn = (from employees in Context.EmployeeTable
where employees.UserName.Equals(userName)
select new EmployeeMapper
{
MapToFullDTO = employees
}
).SingleOrDefault<EmployeeDTO>();
}
Note that the MapToFullDTO property is part of a class called EmployeeMapper which inherits from EmployeeDTO. This property populates the base classes' properties for convenience purposes so we don't have to write out the mapping every time. I understand this is part of the issue, but I am not sure why.
Context.EmployeeTable.Where(e => e.UserName.Equals(userName)) .Select(e => new EmployeeMapper { apToFullDTO = e }) to do not mess with Query Syntax. .SingleOrDefault<EmployeeDTO>().