예제 #1
0
 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);
 }
예제 #2
0
        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));
        }