Unit Test RetrieveAttributeResponse in CRM using Microsoft Fakes.

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

http://www.alexanderdevelopment.net/post/2013/01/13/How-to-unit-test-C-Dynamics-CRM-interface-code-part-III


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!



Author: Nishant Rana

I love working in and sharing everything about Microsoft.NET technology !

1 thought on “Unit Test RetrieveAttributeResponse in CRM using Microsoft Fakes.”

  1. 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

    Like

Share your thoughts

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s