Hi,
Recently we wrote a plugin that was using RetrieveAttribute class to get the label as well as value of the optionset field.
The issue that we faced over here is that the AttributeMetadata property of RetrieveAttributeResponse is read only, we cannot set it. The following post provided the solution i.e. writing a wrapper class over the RetrieveAttributeResponse
organizationService.ExecuteOrganizationRequest = request => { var retrievedPicklistAttributeMetadata = new PicklistAttributeMetadata(); if (request.Parameters["LogicalName"].ToString() == "lss_service_request_status") { var optionMetadata = new OptionMetadata(new Label("Closed", 1033), 10); optionMetadata.Label.UserLocalizedLabel = new LocalizedLabel("Closed", 1033); optionMetadata.Label.UserLocalizedLabel.Label = "Closed"; var serviceRequestTypeOptionSet = new OptionSetMetadata { Name = "lss_service_request_status", DisplayName = new Label("Service Request Status", 1033), IsGlobal = false, OptionSetType = OptionSetType.Picklist, Options = { optionMetadata } }; retrievedPicklistAttributeMetadata.OptionSet = serviceRequestTypeOptionSet; } var retrAttResponse = new RetrieveAttributeResponseWrapper(new RetrieveAttributeResponse()); retrAttResponse.AttributeMetadata = retrievedPicklistAttributeMetadata; return retrAttResponse; };
Hope it helps!
Hi Nishant,
I really like Lucas’s very useful post.
I’ve been using his idea to mock not only the RetrieveAttributeResponse, but also the RetrieveMultipleResponse and RetrieveEntityResponse classes.
However, I’ve hit a problem when trying to work with the RetrieveEntityResponseWrapper. The response needs to contain an instance of EntityMetadata, which I can instantiate in my mocked response. However, I need to set the Attributes property of the EntityMetadata, which is a read-only property.
So in some way I need to have a wrapped class within a wrapped class, and I don’t see how I can do this?
Is what I’m trying to do possible – can I mock the read-only Attributes property of the EntityMetadata property of my RetrieveEntityResponseWrapper?
Many thanks for your thoughts,
Ben
LikeLike
Hi Nishant,
I am new to Fakes and struggling to mock the RetrieveMetadataChangesResponse which is the output of RetrieveMetadataChangesRequest. Did not get any sample on how to do it.
Can you please help?
Regards
Vrushali
LikeLike
Hi Vrushali writing a wrapper class could be the solution here. check this post https://nishantrana.me/2014/01/25/unit-test-retrieveattributeresponse-in-crm-using-microsoft-fakes/ https://nishantrana.me/2016/05/08/unit-testing-microsoft-fakes-retrievesharedprincipalsandaccessresponse-in-plugin-in-crm-2016-and-earlier/
LikeLike