static ViewModelsReader() { // TODO: this could be handled by IoC container not class itself. But maybe it's beter to store this information in static fields? Think about. persistenceModelDescription = PersistenceModelPropertiesDescriptionGenerator.GenerateDescription(typeof(TPersistenceModel)); viewModelToPersistenceModelMap = ViewModelToPersistenceModelPropertyNamesMapsGenerator.Generate( typeof(TGridModel), persistenceModelDescription); projectionsList = ProjectionsGenerator.GenerateProjectionsList(viewModelToPersistenceModelMap); }
public void Generate__GeneratedProperly() { // Prepare expected results var joinedModels = new Dictionary <string, string> { { nameof(OrderGridModel.CustomerFirstName), "Customer.FirstName" }, { nameof(OrderGridModel.CustomerLastName), "Customer.LastName" }, { nameof(OrderGridModel.CustomerFingersCount), "Customer.FingersCount" }, { nameof(OrderGridModel.CustomerHairLength), "Customer.HairLength" }, { nameof(OrderGridModel.CustomerPreviousSurgeryDate), "Customer.PreviousSurgeryDate" }, { nameof(OrderGridModel.CustomerType), "Customer.Type" }, }; var components = new Dictionary <string, string> { { nameof(OrderGridModel.PaymentInfoOrderedDate), "PaymentInfo.OrderedDate" }, { nameof(OrderGridModel.PaymentInfoState), "PaymentInfo.State" }, { nameof(OrderGridModel.PaymentInfoDouble), "PaymentInfo.Double" }, { nameof(OrderGridModel.PaymentInfoExternalPaymentId), "PaymentInfo.ExternalPaymentId" }, { nameof(OrderGridModel.PaymentInfoNumber), "PaymentInfo.Number" }, }; var simpleProps = new Dictionary <string, string> { { nameof(OrderGridModel.Id), "Id" }, { nameof(OrderGridModel.Type), "Type" }, { nameof(OrderGridModel.OrderDate), "OrderDate" }, { nameof(OrderGridModel.TotalPrice), "TotalPrice" }, { nameof(OrderGridModel.Note), "Note" }, { nameof(OrderGridModel.ItemsCount), "ItemsCount" }, }; var allProps = joinedModels.Union(components).Union(simpleProps).ToDictionary(x => x.Key, x => x.Value); // ACT var modelDescription = GetTestModelDescription(); var map = ViewModelToPersistenceModelPropertyNamesMapsGenerator.Generate(typeof(OrderGridModel), modelDescription); // ASSERT map.Should(Be.Not.Null); map.AllProperties.Count.Should(Be.EqualTo(17)); map.AllProperties.Should(Be.EquivalentTo(allProps)); }