frodo 0.10.8 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/frodo/concerns/api.rb +0 -1
- data/lib/frodo/entity.rb +0 -1
- data/lib/frodo/schema.rb +50 -26
- data/lib/frodo/version.rb +1 -1
- data/spec/fixtures/files/metadata_dynamics.xml +321 -0
- data/spec/frodo/entity_spec.rb +34 -0
- data/spec/frodo/schema_spec.rb +17 -5
- data/spec/support/middleware.rb +14 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c450b1b8b973887c68afbcac4aa71b3adf58a92aeb4f5e85df13487c534709cf
|
4
|
+
data.tar.gz: 4ac726bbffccab55106a9fc9825b4c2f2c4d0c96b8106fc1452236f1cb63d3d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4ccd11d628aae7f69bc9a3bd0237451f6158849533c9366e3604b803a38e71105fcf5dde60956b36e1ea9de9165c7c3bef2cb69cf65bb8faf1d0f398fbf8e0a
|
7
|
+
data.tar.gz: c8e7948d55791d0f226f1bae3409fcbd9c45dc80514669b10355966bc0f6eb9ad5d0338f600c5039679cacafcf646d4f7dc4803da4e2512ddc1e3c1deccd3ba5
|
data/lib/frodo/concerns/api.rb
CHANGED
data/lib/frodo/entity.rb
CHANGED
@@ -303,7 +303,6 @@ module Frodo
|
|
303
303
|
entity.instance_eval do
|
304
304
|
new_links = instance_variable_get(:@links) || {}
|
305
305
|
schema.navigation_properties[name].each do |nav_name, details|
|
306
|
-
p nav_name
|
307
306
|
xml_doc.xpath("./link[@title='#{nav_name}']").each do |node|
|
308
307
|
next if node.attributes['type'].nil?
|
309
308
|
next unless node.attributes['type'].value =~ /^application\/atom\+xml;type=(feed|entry)$/i
|
data/lib/frodo/schema.rb
CHANGED
@@ -88,33 +88,48 @@ module Frodo
|
|
88
88
|
# @return [Hash<Hash<Frodo::NavigationProperty>>]
|
89
89
|
def navigation_properties
|
90
90
|
@navigation_properties ||= metadata.xpath('//EntityType').map do |entity_type_def|
|
91
|
+
entity_name = entity_type_def.attributes['Name'].value
|
91
92
|
[
|
92
|
-
|
93
|
-
|
94
|
-
[
|
95
|
-
nav_property_def.attributes['Name'].value,
|
96
|
-
::Frodo::NavigationProperty.build(nav_property_def)
|
97
|
-
]
|
98
|
-
end.to_h
|
93
|
+
entity_name,
|
94
|
+
navigation_properties_for_entity(entity_name)
|
99
95
|
]
|
100
96
|
end.to_h
|
101
97
|
end
|
102
98
|
|
99
|
+
# Get the list of navigation properties and their various options for the supplied
|
100
|
+
# Entity name.
|
101
|
+
# @param entity_name [to_s]
|
102
|
+
# @return [Hash]
|
103
|
+
# @api private
|
104
|
+
def navigation_properties_for_entity(entity_name)
|
105
|
+
type_definition = get_type_definition_for_entity_name(entity_name)
|
106
|
+
|
107
|
+
parent_properties = recurse_on_parent_type(type_definition)
|
108
|
+
|
109
|
+
properties_to_return = type_definition.xpath('./NavigationProperty').map do |nav_property_def|
|
110
|
+
[
|
111
|
+
nav_property_def.attributes['Name'].value,
|
112
|
+
::Frodo::NavigationProperty.build(nav_property_def)
|
113
|
+
]
|
114
|
+
end.to_h
|
115
|
+
parent_properties.merge!(properties_to_return)
|
116
|
+
end
|
117
|
+
|
103
118
|
# Returns a hash for finding the associated read-only value property for a given
|
104
119
|
# navigation property
|
105
|
-
# @return
|
106
|
-
def
|
107
|
-
|
120
|
+
# @return Hash<String, String>
|
121
|
+
def referential_constraints_for_entity(entity_name)
|
122
|
+
type_definition = get_type_definition_for_entity_name(entity_name)
|
123
|
+
|
124
|
+
parent_refcons = recurse_on_parent_type(type_definition)
|
125
|
+
|
126
|
+
refcons_to_return = type_definition.xpath('./NavigationProperty[ReferentialConstraint]').map do |nav_property_def|
|
108
127
|
[
|
109
|
-
|
110
|
-
|
111
|
-
[
|
112
|
-
nav_property_def.attributes['Name'].value,
|
113
|
-
nav_property_def.xpath('./ReferentialConstraint').first.attributes['Property'].value
|
114
|
-
]
|
115
|
-
end.to_h
|
128
|
+
nav_property_def.attributes['Name'].value,
|
129
|
+
nav_property_def.xpath('./ReferentialConstraint').first.attributes['Property'].value
|
116
130
|
]
|
117
131
|
end.to_h
|
132
|
+
parent_refcons.merge!(refcons_to_return)
|
118
133
|
end
|
119
134
|
|
120
135
|
# Get the property type for an entity from metadata.
|
@@ -140,17 +155,10 @@ module Frodo
|
|
140
155
|
# @return [Hash]
|
141
156
|
# @api private
|
142
157
|
def properties_for_entity(entity_name)
|
143
|
-
type_definition =
|
144
|
-
|
145
|
-
raise ArgumentError, "Unknown EntityType: #{entity_name}" if type_definition.nil?
|
158
|
+
type_definition = get_type_definition_for_entity_name(entity_name)
|
146
159
|
properties_to_return = {}
|
147
160
|
|
148
|
-
parent_properties =
|
149
|
-
parent_type = base_type.value.split('.').last
|
150
|
-
properties_for_entity(parent_type)
|
151
|
-
else
|
152
|
-
{}
|
153
|
-
end
|
161
|
+
parent_properties = recurse_on_parent_type(type_definition)
|
154
162
|
|
155
163
|
type_definition.xpath('./Property').each do |property_xml|
|
156
164
|
property_name, property = process_property_from_xml(property_xml)
|
@@ -183,5 +191,21 @@ module Frodo
|
|
183
191
|
|
184
192
|
return [property_name, property]
|
185
193
|
end
|
194
|
+
|
195
|
+
def get_type_definition_for_entity_name(entity_name)
|
196
|
+
type_definition = metadata.xpath("//EntityType[@Name='#{entity_name}']").first
|
197
|
+
raise ArgumentError, "Unknown EntityType: #{entity_name}" if type_definition.nil?
|
198
|
+
return type_definition
|
199
|
+
end
|
200
|
+
|
201
|
+
def recurse_on_parent_type(type_definition)
|
202
|
+
meth = caller_locations(1,1)[0].label
|
203
|
+
if base_type = type_definition.attributes['BaseType']
|
204
|
+
parent_type = base_type.value.split('.').last
|
205
|
+
return method(meth).call(parent_type)
|
206
|
+
end
|
207
|
+
return {}
|
208
|
+
end
|
209
|
+
|
186
210
|
end
|
187
211
|
end
|
data/lib/frodo/version.rb
CHANGED
@@ -11,6 +11,200 @@
|
|
11
11
|
<edmx:DataServices>
|
12
12
|
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.Dynamics.CRM" Alias="mscrm">
|
13
13
|
<EntityType Name="crmbaseentity" Abstract="true"/>
|
14
|
+
<EntityType Name="activitypointer" BaseType="mscrm.crmbaseentity" Abstract="true">
|
15
|
+
<Key>
|
16
|
+
<PropertyRef Name="activityid"/>
|
17
|
+
</Key>
|
18
|
+
<Property Name="lastonholdtime" Type="Edm.DateTimeOffset"/>
|
19
|
+
<Property Name="_owningteam_value" Type="Edm.Guid"/>
|
20
|
+
<Property Name="exchangeitemid" Type="Edm.String" Unicode="false"/>
|
21
|
+
<Property Name="ismapiprivate" Type="Edm.Boolean"/>
|
22
|
+
<Property Name="createdon" Type="Edm.DateTimeOffset"/>
|
23
|
+
<Property Name="seriesid" Type="Edm.Guid"/>
|
24
|
+
<Property Name="_regardingobjectid_value" Type="Edm.Guid"/>
|
25
|
+
<Property Name="deliverylastattemptedon" Type="Edm.DateTimeOffset"/>
|
26
|
+
<Property Name="isbilled" Type="Edm.Boolean"/>
|
27
|
+
<Property Name="isworkflowcreated" Type="Edm.Boolean"/>
|
28
|
+
<Property Name="_sendermailboxid_value" Type="Edm.Guid"/>
|
29
|
+
<Property Name="scheduledend" Type="Edm.DateTimeOffset"/>
|
30
|
+
<Property Name="description" Type="Edm.String" Unicode="false"/>
|
31
|
+
<Property Name="onholdtime" Type="Edm.Int32"/>
|
32
|
+
<Property Name="_modifiedby_value" Type="Edm.Guid"/>
|
33
|
+
<Property Name="community" Type="Edm.Int32"/>
|
34
|
+
<Property Name="sortdate" Type="Edm.DateTimeOffset"/>
|
35
|
+
<Property Name="instancetypecode" Type="Edm.Int32"/>
|
36
|
+
<Property Name="timezoneruleversionnumber" Type="Edm.Int32"/>
|
37
|
+
<Property Name="_createdonbehalfby_value" Type="Edm.Guid"/>
|
38
|
+
<Property Name="_createdby_value" Type="Edm.Guid"/>
|
39
|
+
<Property Name="_transactioncurrencyid_value" Type="Edm.Guid"/>
|
40
|
+
<Property Name="versionnumber" Type="Edm.Int64"/>
|
41
|
+
<Property Name="processid" Type="Edm.Guid"/>
|
42
|
+
<Property Name="prioritycode" Type="Edm.Int32"/>
|
43
|
+
<Property Name="_serviceid_value" Type="Edm.Guid"/>
|
44
|
+
<Property Name="_slaid_value" Type="Edm.Guid"/>
|
45
|
+
<Property Name="stageid" Type="Edm.Guid"/>
|
46
|
+
<Property Name="actualstart" Type="Edm.DateTimeOffset"/>
|
47
|
+
<Property Name="_owningbusinessunit_value" Type="Edm.Guid"/>
|
48
|
+
<Property Name="_owninguser_value" Type="Edm.Guid"/>
|
49
|
+
<Property Name="utcconversiontimezonecode" Type="Edm.Int32"/>
|
50
|
+
<Property Name="exchangeweblink" Type="Edm.String" Unicode="false"/>
|
51
|
+
<Property Name="scheduleddurationminutes" Type="Edm.Int32"/>
|
52
|
+
<Property Name="senton" Type="Edm.DateTimeOffset"/>
|
53
|
+
<Property Name="scheduledstart" Type="Edm.DateTimeOffset"/>
|
54
|
+
<Property Name="_slainvokedid_value" Type="Edm.Guid"/>
|
55
|
+
<Property Name="statecode" Type="Edm.Int32"/>
|
56
|
+
<Property Name="subject" Type="Edm.String" Unicode="false"/>
|
57
|
+
<Property Name="postponeactivityprocessinguntil" Type="Edm.DateTimeOffset"/>
|
58
|
+
<Property Name="_modifiedonbehalfby_value" Type="Edm.Guid"/>
|
59
|
+
<Property Name="exchangerate" Type="Edm.Decimal" Scale="Variable"/>
|
60
|
+
<Property Name="isregularactivity" Type="Edm.Boolean"/>
|
61
|
+
<Property Name="deliveryprioritycode" Type="Edm.Int32"/>
|
62
|
+
<Property Name="actualdurationminutes" Type="Edm.Int32"/>
|
63
|
+
<Property Name="traversedpath" Type="Edm.String" Unicode="false"/>
|
64
|
+
<Property Name="activityid" Type="Edm.Guid"/>
|
65
|
+
<Property Name="activitytypecode" Type="Edm.String" Unicode="false"/>
|
66
|
+
<Property Name="activityadditionalparams" Type="Edm.String" Unicode="false"/>
|
67
|
+
<Property Name="modifiedon" Type="Edm.DateTimeOffset"/>
|
68
|
+
<Property Name="_ownerid_value" Type="Edm.Guid"/>
|
69
|
+
<Property Name="leftvoicemail" Type="Edm.Boolean"/>
|
70
|
+
<Property Name="statuscode" Type="Edm.Int32"/>
|
71
|
+
<Property Name="actualend" Type="Edm.DateTimeOffset"/>
|
72
|
+
<NavigationProperty Name="regardingobjectid_entitlement" Type="mscrm.entitlement" Nullable="false" Partner="entitlement_ActivityPointers">
|
73
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="entitlementid"/>
|
74
|
+
</NavigationProperty>
|
75
|
+
<NavigationProperty Name="createdby" Type="mscrm.systemuser" Nullable="false" Partner="lk_activitypointer_createdby">
|
76
|
+
<ReferentialConstraint Property="_createdby_value" ReferencedProperty="systemuserid"/>
|
77
|
+
</NavigationProperty>
|
78
|
+
<NavigationProperty Name="slainvokedid_activitypointer_sla" Type="mscrm.sla" Nullable="false" Partner="sla_activitypointer">
|
79
|
+
<ReferentialConstraint Property="_slainvokedid_value" ReferencedProperty="slaid"/>
|
80
|
+
</NavigationProperty>
|
81
|
+
<NavigationProperty Name="regardingobjectid_account" Type="mscrm.account" Nullable="false" Partner="Account_ActivityPointers">
|
82
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="accountid"/>
|
83
|
+
</NavigationProperty>
|
84
|
+
<NavigationProperty Name="regardingobjectid_contact" Type="mscrm.contact" Nullable="false" Partner="Contact_ActivityPointers">
|
85
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="contactid"/>
|
86
|
+
</NavigationProperty>
|
87
|
+
<NavigationProperty Name="regardingobjectid_msdyn_postalbum" Type="mscrm.msdyn_postalbum" Nullable="false" Partner="msdyn_postalbum_ActivityPointers">
|
88
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="msdyn_postalbumid"/>
|
89
|
+
</NavigationProperty>
|
90
|
+
<NavigationProperty Name="regardingobjectid_bookableresourcebookingheader" Type="mscrm.bookableresourcebookingheader" Nullable="false" Partner="bookableresourcebookingheader_ActivityPointers">
|
91
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="bookableresourcebookingheaderid"/>
|
92
|
+
</NavigationProperty>
|
93
|
+
<NavigationProperty Name="activity_pointer_phonecall" Type="Collection(mscrm.phonecall)" Partner="activityid_activitypointer"/>
|
94
|
+
<NavigationProperty Name="regardingobjectid_opportunity" Type="mscrm.opportunity" Nullable="false" Partner="Opportunity_ActivityPointers">
|
95
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="opportunityid"/>
|
96
|
+
</NavigationProperty>
|
97
|
+
<NavigationProperty Name="activitypointer_connections1" Type="Collection(mscrm.connection)" Partner="record1id_activitypointer"/>
|
98
|
+
<NavigationProperty Name="modifiedby" Type="mscrm.systemuser" Nullable="false" Partner="lk_activitypointer_modifiedby">
|
99
|
+
<ReferentialConstraint Property="_modifiedby_value" ReferencedProperty="systemuserid"/>
|
100
|
+
</NavigationProperty>
|
101
|
+
<NavigationProperty Name="activity_pointer_BulkOperation_logs" Type="Collection(mscrm.bulkoperationlog)" Partner="bulkoperationid_activitypointer"/>
|
102
|
+
<NavigationProperty Name="regardingobjectid_quote" Type="mscrm.quote" Nullable="false" Partner="Quote_ActivityPointers">
|
103
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="quoteid"/>
|
104
|
+
</NavigationProperty>
|
105
|
+
<NavigationProperty Name="regardingobjectid_campaignactivity" Type="mscrm.campaignactivity" Nullable="false" Partner="CampaignActivity_ActivityPointers"/>
|
106
|
+
<NavigationProperty Name="activity_pointer_incident_resolution" Type="Collection(mscrm.incidentresolution)" Partner="activityid_activitypointer"/>
|
107
|
+
<NavigationProperty Name="activity_pointer_li_inmail" Type="Collection(mscrm.li_inmail)" Partner="activityid_li_inmail"/>
|
108
|
+
<NavigationProperty Name="activity_pointer_fax" Type="Collection(mscrm.fax)" Partner="activityid_activitypointer"/>
|
109
|
+
<NavigationProperty Name="activity_pointer_opportunity_close" Type="Collection(mscrm.opportunityclose)" Partner="activityid_activitypointer"/>
|
110
|
+
<NavigationProperty Name="ActivityPointer_BulkDeleteFailures" Type="Collection(mscrm.bulkdeletefailure)" Partner="regardingobjectid_activitypointer"/>
|
111
|
+
<NavigationProperty Name="modifiedonbehalfby" Type="mscrm.systemuser" Nullable="false" Partner="lk_activitypointer_modifiedonbehalfby">
|
112
|
+
<ReferentialConstraint Property="_modifiedonbehalfby_value" ReferencedProperty="systemuserid"/>
|
113
|
+
</NavigationProperty>
|
114
|
+
<NavigationProperty Name="activity_pointer_BulkOperation" Type="Collection(mscrm.bulkoperation)" Partner="activityid_activitypointer"/>
|
115
|
+
<NavigationProperty Name="regardingobjectid_site" Type="mscrm.site" Nullable="false" Partner="site_ActivityPointers">
|
116
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="siteid"/>
|
117
|
+
</NavigationProperty>
|
118
|
+
<NavigationProperty Name="activity_pointer_campaignresponse" Type="Collection(mscrm.campaignresponse)" Partner="activityid_activitypointer"/>
|
119
|
+
<NavigationProperty Name="regardingobjectid_entitlementtemplate" Type="mscrm.entitlementtemplate" Nullable="false" Partner="entitlementtemplate_ActivityPointers">
|
120
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="entitlementtemplateid"/>
|
121
|
+
</NavigationProperty>
|
122
|
+
<NavigationProperty Name="regardingobjectid_new_interactionforemail" Type="mscrm.interactionforemail" Nullable="false" Partner="new_interactionforemail_ActivityPointers">
|
123
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="interactionforemailid"/>
|
124
|
+
</NavigationProperty>
|
125
|
+
<NavigationProperty Name="regardingobjectid_lead" Type="mscrm.lead" Nullable="false" Partner="Lead_ActivityPointers">
|
126
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="leadid"/>
|
127
|
+
</NavigationProperty>
|
128
|
+
<NavigationProperty Name="createdonbehalfby" Type="mscrm.systemuser" Nullable="false" Partner="lk_activitypointer_createdonbehalfby">
|
129
|
+
<ReferentialConstraint Property="_createdonbehalfby_value" ReferencedProperty="systemuserid"/>
|
130
|
+
</NavigationProperty>
|
131
|
+
<NavigationProperty Name="ActivityPointer_AsyncOperations" Type="Collection(mscrm.asyncoperation)" Partner="regardingobjectid_activitypointer"/>
|
132
|
+
<NavigationProperty Name="activity_pointer_recurringappointmentmaster" Type="Collection(mscrm.recurringappointmentmaster)" Partner="activityid_activitypointer"/>
|
133
|
+
<NavigationProperty Name="regardingobjectid_salesorder" Type="mscrm.salesorder" Nullable="false" Partner="SalesOrder_ActivityPointers">
|
134
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="salesorderid"/>
|
135
|
+
</NavigationProperty>
|
136
|
+
<NavigationProperty Name="owninguser" Type="mscrm.systemuser" Nullable="false" Partner="user_activity">
|
137
|
+
<ReferentialConstraint Property="_owninguser_value" ReferencedProperty="systemuserid"/>
|
138
|
+
</NavigationProperty>
|
139
|
+
<NavigationProperty Name="activity_pointer_order_close" Type="Collection(mscrm.orderclose)" Partner="activityid_activitypointer"/>
|
140
|
+
<NavigationProperty Name="activity_pointer_service_appointment" Type="Collection(mscrm.serviceappointment)" Partner="activityid_activitypointer"/>
|
141
|
+
<NavigationProperty Name="CreatedActivity_BulkOperationLogs" Type="Collection(mscrm.bulkoperationlog)" Partner="createdobjectid_activitypointer"/>
|
142
|
+
<NavigationProperty Name="activity_pointer_campaignactivity" Type="Collection(mscrm.campaignactivity)" Partner="activityid_activitypointer"/>
|
143
|
+
<NavigationProperty Name="activity_pointer_appointment" Type="Collection(mscrm.appointment)" Partner="activityid_activitypointer"/>
|
144
|
+
<NavigationProperty Name="activity_pointer_quote_close" Type="Collection(mscrm.quoteclose)" Partner="activityid_activitypointer"/>
|
145
|
+
<NavigationProperty Name="regardingobjectid_invoice" Type="mscrm.invoice" Nullable="false" Partner="Invoice_ActivityPointers">
|
146
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="invoiceid"/>
|
147
|
+
</NavigationProperty>
|
148
|
+
<NavigationProperty Name="activity_pointer_email" Type="Collection(mscrm.email)" Partner="activityid_activitypointer"/>
|
149
|
+
<NavigationProperty Name="transactioncurrencyid" Type="mscrm.transactioncurrency" Nullable="false" Partner="TransactionCurrency_ActivityPointer">
|
150
|
+
<ReferentialConstraint Property="_transactioncurrencyid_value" ReferencedProperty="transactioncurrencyid"/>
|
151
|
+
</NavigationProperty>
|
152
|
+
<NavigationProperty Name="regardingobjectid_knowledgearticle" Type="mscrm.knowledgearticle" Nullable="false" Partner="KnowledgeArticle_ActivityPointers">
|
153
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="knowledgearticleid"/>
|
154
|
+
</NavigationProperty>
|
155
|
+
<NavigationProperty Name="ownerid" Type="mscrm.principal" Nullable="false" Partner="owner_activitypointers">
|
156
|
+
<ReferentialConstraint Property="_ownerid_value" ReferencedProperty="ownerid"/>
|
157
|
+
</NavigationProperty>
|
158
|
+
<NavigationProperty Name="activity_campaignresponse" Type="Collection(mscrm.campaignresponse)" Partner="originatingactivityid_activitypointer"/>
|
159
|
+
<NavigationProperty Name="regardingobjectid_knowledgebaserecord" Type="mscrm.knowledgebaserecord" Nullable="false" Partner="KnowledgeBaseRecord_ActivityPointers">
|
160
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="knowledgebaserecordid"/>
|
161
|
+
</NavigationProperty>
|
162
|
+
<NavigationProperty Name="activity_pointer_letter" Type="Collection(mscrm.letter)" Partner="activityid_activitypointer"/>
|
163
|
+
<NavigationProperty Name="activity_pointer_recurrencerule" Type="Collection(mscrm.recurrencerule)" Partner="objectid"/>
|
164
|
+
<NavigationProperty Name="serviceid" Type="mscrm.service" Nullable="false" Partner="service_activity_pointers">
|
165
|
+
<ReferentialConstraint Property="_serviceid_value" ReferencedProperty="serviceid"/>
|
166
|
+
</NavigationProperty>
|
167
|
+
<NavigationProperty Name="sla_activitypointer_sla" Type="mscrm.sla" Nullable="false" Partner="manualsla_activitypointer">
|
168
|
+
<ReferentialConstraint Property="_slaid_value" ReferencedProperty="slaid"/>
|
169
|
+
</NavigationProperty>
|
170
|
+
<NavigationProperty Name="activity_pointer_activity_mime_attachment" Type="Collection(mscrm.activitymimeattachment)" Partner="objectid_activitypointer"/>
|
171
|
+
<NavigationProperty Name="regardingobjectid_bulkoperation" Type="mscrm.bulkoperation" Nullable="false" Partner="BulkOperation_ActivityPointers"/>
|
172
|
+
<NavigationProperty Name="owningbusinessunit" Type="mscrm.businessunit" Nullable="false" Partner="business_unit_activitypointer">
|
173
|
+
<ReferentialConstraint Property="_owningbusinessunit_value" ReferencedProperty="businessunitid"/>
|
174
|
+
</NavigationProperty>
|
175
|
+
<NavigationProperty Name="activity_pointer_msfp_surveyinvite" Type="Collection(mscrm.msfp_surveyinvite)" Partner="activityid_msfp_surveyinvite"/>
|
176
|
+
<NavigationProperty Name="ActivityPointer_CampaignActivityItems" Type="Collection(mscrm.campaignactivityitem)" Partner="campaignactivityid"/>
|
177
|
+
<NavigationProperty Name="activitypointer_activity_parties" Type="Collection(mscrm.activityparty)" Partner="activityid_activitypointer"/>
|
178
|
+
<NavigationProperty Name="activitypointer_connections2" Type="Collection(mscrm.connection)" Partner="record2id_activitypointer"/>
|
179
|
+
<NavigationProperty Name="regardingobjectid_bookableresourcebooking" Type="mscrm.bookableresourcebooking" Nullable="false" Partner="bookableresourcebooking_ActivityPointers">
|
180
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="bookableresourcebookingid"/>
|
181
|
+
</NavigationProperty>
|
182
|
+
<NavigationProperty Name="activity_pointer_msfp_surveyresponse" Type="Collection(mscrm.msfp_surveyresponse)" Partner="activityid_msfp_surveyresponse"/>
|
183
|
+
<NavigationProperty Name="regardingobjectid_campaign" Type="mscrm.campaign" Nullable="false" Partner="Campaign_ActivityPointers">
|
184
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="campaignid"/>
|
185
|
+
</NavigationProperty>
|
186
|
+
<NavigationProperty Name="regardingobjectid_msdyn_playbookinstance" Type="mscrm.msdyn_playbookinstance" Nullable="false" Partner="msdyn_playbookinstance_ActivityPointers">
|
187
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="msdyn_playbookinstanceid"/>
|
188
|
+
</NavigationProperty>
|
189
|
+
<NavigationProperty Name="owningteam" Type="mscrm.team" Nullable="false" Partner="team_activity">
|
190
|
+
<ReferentialConstraint Property="_owningteam_value" ReferencedProperty="teamid"/>
|
191
|
+
</NavigationProperty>
|
192
|
+
<NavigationProperty Name="sendermailboxid" Type="mscrm.mailbox" Nullable="false" Partner="activitypointer_sendermailboxid_mailbox">
|
193
|
+
<ReferentialConstraint Property="_sendermailboxid_value" ReferencedProperty="mailboxid"/>
|
194
|
+
</NavigationProperty>
|
195
|
+
<NavigationProperty Name="ActivityPointer_QueueItem" Type="Collection(mscrm.queueitem)" Partner="objectid_activitypointer"/>
|
196
|
+
<NavigationProperty Name="slakpiinstance_activitypointer" Type="Collection(mscrm.slakpiinstance)" Partner="regarding_activitypointer"/>
|
197
|
+
<NavigationProperty Name="activity_pointer_li_pointdrivepresentationviewed" Type="Collection(mscrm.li_pointdrivepresentationviewed)" Partner="activityid_li_pointdrivepresentationviewed"/>
|
198
|
+
<NavigationProperty Name="regardingobjectid_contract" Type="mscrm.contract" Nullable="false" Partner="Contract_ActivityPointers">
|
199
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="contractid"/>
|
200
|
+
</NavigationProperty>
|
201
|
+
<NavigationProperty Name="activity_pointer_li_message" Type="Collection(mscrm.li_message)" Partner="activityid_li_message"/>
|
202
|
+
<NavigationProperty Name="activity_pointer_task" Type="Collection(mscrm.task)" Partner="activityid_activitypointer"/>
|
203
|
+
<NavigationProperty Name="activity_pointer_socialactivity" Type="Collection(mscrm.socialactivity)" Partner="activityid_activitypointer"/>
|
204
|
+
<NavigationProperty Name="regardingobjectid_incident" Type="mscrm.incident" Nullable="false" Partner="Incident_ActivityPointers">
|
205
|
+
<ReferentialConstraint Property="_regardingobjectid_value" ReferencedProperty="incidentid"/>
|
206
|
+
</NavigationProperty>
|
207
|
+
</EntityType>
|
14
208
|
<EntityType Name="contact" BaseType="mscrm.crmbaseentity">
|
15
209
|
<Key>
|
16
210
|
<PropertyRef Name="contactid"/>
|
@@ -339,6 +533,133 @@
|
|
339
533
|
<NavigationProperty Name="contact_activity_parties" Type="Collection(mscrm.activityparty)" Partner="partyid_contact"/>
|
340
534
|
<NavigationProperty Name="Contact_Letters" Type="Collection(mscrm.letter)" Partner="regardingobjectid_contact_letter"/>
|
341
535
|
</EntityType>
|
536
|
+
<EntityType Name="email" BaseType="mscrm.activitypointer">
|
537
|
+
<Key>
|
538
|
+
<PropertyRef Name="activityid"/>
|
539
|
+
</Key>
|
540
|
+
<Property Name="reminderactioncardid" Type="Edm.Guid"/>
|
541
|
+
<Property Name="trackingtoken" Type="Edm.String" Unicode="false"/>
|
542
|
+
<Property Name="overriddencreatedon" Type="Edm.DateTimeOffset"/>
|
543
|
+
<Property Name="readreceiptrequested" Type="Edm.Boolean"/>
|
544
|
+
<Property Name="compressed" Type="Edm.Boolean"/>
|
545
|
+
<Property Name="emailremindertext" Type="Edm.String" Unicode="false"/>
|
546
|
+
<Property Name="emailtrackingid" Type="Edm.Guid"/>
|
547
|
+
<Property Name="emailreminderexpirytime" Type="Edm.DateTimeOffset"/>
|
548
|
+
<Property Name="isunsafe" Type="Edm.Int32"/>
|
549
|
+
<Property Name="subcategory" Type="Edm.String" Unicode="false"/>
|
550
|
+
<Property Name="_parentactivityid_value" Type="Edm.Guid"/>
|
551
|
+
<Property Name="postponeemailprocessinguntil" Type="Edm.DateTimeOffset"/>
|
552
|
+
<Property Name="category" Type="Edm.String" Unicode="false"/>
|
553
|
+
<Property Name="replycount" Type="Edm.Int32"/>
|
554
|
+
<Property Name="directioncode" Type="Edm.Boolean"/>
|
555
|
+
<Property Name="correlationmethod" Type="Edm.Int32"/>
|
556
|
+
<Property Name="_sendersaccount_value" Type="Edm.Guid"/>
|
557
|
+
<Property Name="emailreminderstatus" Type="Edm.Int32"/>
|
558
|
+
<Property Name="linksclickedcount" Type="Edm.Int32"/>
|
559
|
+
<Property Name="submittedby" Type="Edm.String" Unicode="false"/>
|
560
|
+
<Property Name="_emailsender_value" Type="Edm.Guid"/>
|
561
|
+
<Property Name="deliveryreceiptrequested" Type="Edm.Boolean"/>
|
562
|
+
<Property Name="notifications" Type="Edm.Int32"/>
|
563
|
+
<Property Name="conversationtrackingid" Type="Edm.Guid"/>
|
564
|
+
<Property Name="opencount" Type="Edm.Int32"/>
|
565
|
+
<Property Name="torecipients" Type="Edm.String" Unicode="false"/>
|
566
|
+
<Property Name="deliveryattempts" Type="Edm.Int32"/>
|
567
|
+
<Property Name="delayedemailsendtime" Type="Edm.DateTimeOffset"/>
|
568
|
+
<Property Name="followemailuserpreference" Type="Edm.Boolean"/>
|
569
|
+
<Property Name="_templateid_value" Type="Edm.Guid"/>
|
570
|
+
<Property Name="inreplyto" Type="Edm.String" Unicode="false"/>
|
571
|
+
<Property Name="mimetype" Type="Edm.String" Unicode="false"/>
|
572
|
+
<Property Name="messageid" Type="Edm.String" Unicode="false"/>
|
573
|
+
<Property Name="attachmentcount" Type="Edm.Int32"/>
|
574
|
+
<Property Name="lastopenedtime" Type="Edm.DateTimeOffset"/>
|
575
|
+
<Property Name="importsequencenumber" Type="Edm.Int32"/>
|
576
|
+
<Property Name="isemailreminderset" Type="Edm.Boolean"/>
|
577
|
+
<Property Name="isemailfollowed" Type="Edm.Boolean"/>
|
578
|
+
<Property Name="conversationindex" Type="Edm.String" Unicode="false"/>
|
579
|
+
<Property Name="emailremindertype" Type="Edm.Int32"/>
|
580
|
+
<Property Name="baseconversationindexhash" Type="Edm.Int32"/>
|
581
|
+
<Property Name="sender" Type="Edm.String" Unicode="false"/>
|
582
|
+
<Property Name="attachmentopencount" Type="Edm.Int32"/>
|
583
|
+
<NavigationProperty Name="regardingobjectid_incident_email" Type="mscrm.incident" Nullable="false" Partner="Incident_Emails"/>
|
584
|
+
<NavigationProperty Name="regardingobjectid_lead_email" Type="mscrm.lead" Nullable="false" Partner="Lead_Emails"/>
|
585
|
+
<NavigationProperty Name="regardingobjectid_asyncoperation" Type="mscrm.asyncoperation" Nullable="false" Partner="AsyncOperation_Emails"/>
|
586
|
+
<NavigationProperty Name="regardingobjectid_bookableresourcebooking_email" Type="mscrm.bookableresourcebooking" Nullable="false" Partner="bookableresourcebooking_Emails"/>
|
587
|
+
<NavigationProperty Name="stageid_processstage" Type="mscrm.processstage" Nullable="false" Partner="processstage_emails"/>
|
588
|
+
<NavigationProperty Name="slakpiinstance_email" Type="Collection(mscrm.slakpiinstance)" Partner="regarding_email"/>
|
589
|
+
<NavigationProperty Name="serviceid_email" Type="mscrm.service" Nullable="false" Partner="service_emails"/>
|
590
|
+
<NavigationProperty Name="emailsender_contact" Type="mscrm.contact" Nullable="false" Partner="Contact_Email_EmailSender">
|
591
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="contactid"/>
|
592
|
+
</NavigationProperty>
|
593
|
+
<NavigationProperty Name="email_principalobjectattributeaccess" Type="Collection(mscrm.principalobjectattributeaccess)" Partner="objectid_email"/>
|
594
|
+
<NavigationProperty Name="Email_DuplicateMatchingRecord" Type="Collection(mscrm.duplicaterecord)" Partner="duplicaterecordid_email"/>
|
595
|
+
<NavigationProperty Name="emailsender_queue" Type="mscrm.queue" Nullable="false" Partner="Queue_Email_EmailSender">
|
596
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="queueid"/>
|
597
|
+
</NavigationProperty>
|
598
|
+
<NavigationProperty Name="regardingobjectid_bulkoperation_email" Type="mscrm.bulkoperation" Nullable="false" Partner="BulkOperation_Email"/>
|
599
|
+
<NavigationProperty Name="emailsender_account" Type="mscrm.account" Nullable="false" Partner="Account_Email_EmailSender">
|
600
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="accountid"/>
|
601
|
+
</NavigationProperty>
|
602
|
+
<NavigationProperty Name="regardingobjectid_opportunity_email" Type="mscrm.opportunity" Nullable="false" Partner="Opportunity_Emails"/>
|
603
|
+
<NavigationProperty Name="modifiedby_email" Type="mscrm.systemuser" Nullable="false" Partner="lk_email_modifiedby"/>
|
604
|
+
<NavigationProperty Name="slainvokedid_email_sla" Type="mscrm.sla" Nullable="false" Partner="sla_email"/>
|
605
|
+
<NavigationProperty Name="modifiedonbehalfby_email" Type="mscrm.systemuser" Nullable="false" Partner="lk_email_modifiedonbehalfby"/>
|
606
|
+
<NavigationProperty Name="regardingobjectid_salesorder_email" Type="mscrm.salesorder" Nullable="false" Partner="SalesOrder_Emails"/>
|
607
|
+
<NavigationProperty Name="owningteam_email" Type="mscrm.team" Nullable="false" Partner="team_email"/>
|
608
|
+
<NavigationProperty Name="Email_DuplicateBaseRecord" Type="Collection(mscrm.duplicaterecord)" Partner="baserecordid_email"/>
|
609
|
+
<NavigationProperty Name="transactioncurrencyid_email" Type="mscrm.transactioncurrency" Nullable="false" Partner="TransactionCurrency_Email"/>
|
610
|
+
<NavigationProperty Name="email_connections1" Type="Collection(mscrm.connection)" Partner="record1id_email"/>
|
611
|
+
<NavigationProperty Name="Email_AsyncOperations" Type="Collection(mscrm.asyncoperation)" Partner="regardingobjectid_email"/>
|
612
|
+
<NavigationProperty Name="templateid" Type="mscrm.template" Nullable="false" Partner="Email_EmailTemplate">
|
613
|
+
<ReferentialConstraint Property="_templateid_value" ReferencedProperty="templateid"/>
|
614
|
+
</NavigationProperty>
|
615
|
+
<NavigationProperty Name="Email_ProcessSessions" Type="Collection(mscrm.processsession)" Partner="regardingobjectid_email"/>
|
616
|
+
<NavigationProperty Name="Email_Annotation" Type="Collection(mscrm.annotation)" Partner="objectid_email"/>
|
617
|
+
<NavigationProperty Name="email_activity_parties" Type="Collection(mscrm.activityparty)" Partner="activityid_email"/>
|
618
|
+
<NavigationProperty Name="regardingobjectid_knowledgebaserecord_email" Type="mscrm.knowledgebaserecord" Nullable="false" Partner="KnowledgeBaseRecord_Emails"/>
|
619
|
+
<NavigationProperty Name="sla_email_sla" Type="mscrm.sla" Nullable="false" Partner="manualsla_email"/>
|
620
|
+
<NavigationProperty Name="regardingobjectid_entitlementtemplate_email" Type="mscrm.entitlementtemplate" Nullable="false" Partner="entitlementtemplate_Emails"/>
|
621
|
+
<NavigationProperty Name="email_connections2" Type="Collection(mscrm.connection)" Partner="record2id_email"/>
|
622
|
+
<NavigationProperty Name="Email_QueueItem" Type="Collection(mscrm.queueitem)" Partner="objectid_email"/>
|
623
|
+
<NavigationProperty Name="createdby_email" Type="mscrm.systemuser" Nullable="false" Partner="lk_email_createdby"/>
|
624
|
+
<NavigationProperty Name="regardingobjectid_site_email" Type="mscrm.site" Nullable="false" Partner="site_Emails"/>
|
625
|
+
<NavigationProperty Name="Email_SyncErrors" Type="Collection(mscrm.syncerror)" Partner="regardingobjectid_email_syncerror"/>
|
626
|
+
<NavigationProperty Name="regardingobjectid_campaignactivity_email" Type="mscrm.campaignactivity" Nullable="false" Partner="CampaignActivity_Emails"/>
|
627
|
+
<NavigationProperty Name="owningbusinessunit_email" Type="mscrm.businessunit" Nullable="false" Partner="business_unit_email_activities"/>
|
628
|
+
<NavigationProperty Name="activityid_activitypointer" Type="mscrm.activitypointer" Nullable="false" Partner="activity_pointer_email"/>
|
629
|
+
<NavigationProperty Name="owninguser_email" Type="mscrm.systemuser" Nullable="false" Partner="user_email"/>
|
630
|
+
<NavigationProperty Name="regardingobjectid_campaign_email" Type="mscrm.campaign" Nullable="false" Partner="Campaign_Emails"/>
|
631
|
+
<NavigationProperty Name="regardingobjectid_quote_email" Type="mscrm.quote" Nullable="false" Partner="Quote_Emails"/>
|
632
|
+
<NavigationProperty Name="regardingobjectid_msdyn_playbookinstance_email" Type="mscrm.msdyn_playbookinstance" Nullable="false" Partner="msdyn_playbookinstance_Emails"/>
|
633
|
+
<NavigationProperty Name="parentactivityid" Type="mscrm.email" Nullable="false" Partner="email_email_parentactivityid"/>
|
634
|
+
<NavigationProperty Name="email_email_parentactivityid" Type="Collection(mscrm.email)" Partner="parentactivityid"/>
|
635
|
+
<NavigationProperty Name="regardingobjectid_knowledgearticle_email" Type="mscrm.knowledgearticle" Nullable="false" Partner="KnowledgeArticle_Emails"/>
|
636
|
+
<NavigationProperty Name="regardingobjectid_contract_email" Type="mscrm.contract" Nullable="false" Partner="Contract_Emails"/>
|
637
|
+
<NavigationProperty Name="emailsender_lead" Type="mscrm.lead" Nullable="false" Partner="Lead_Email_EmailSender">
|
638
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="leadid"/>
|
639
|
+
</NavigationProperty>
|
640
|
+
<NavigationProperty Name="createdonbehalfby_email" Type="mscrm.systemuser" Nullable="false" Partner="lk_email_createdonbehalfby"/>
|
641
|
+
<NavigationProperty Name="regardingobjectid_msdyn_postalbum_email" Type="mscrm.msdyn_postalbum" Nullable="false" Partner="msdyn_postalbum_Emails"/>
|
642
|
+
<NavigationProperty Name="emailsender_systemuser" Type="mscrm.systemuser" Nullable="false" Partner="SystemUser_Email_EmailSender">
|
643
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="systemuserid"/>
|
644
|
+
</NavigationProperty>
|
645
|
+
<NavigationProperty Name="emailsender_equipment" Type="mscrm.equipment" Nullable="false" Partner="Equipment_Email_EmailSender">
|
646
|
+
<ReferentialConstraint Property="_emailsender_value" ReferencedProperty="equipmentid"/>
|
647
|
+
</NavigationProperty>
|
648
|
+
<NavigationProperty Name="regardingobjectid_account_email" Type="mscrm.account" Nullable="false" Partner="Account_Emails"/>
|
649
|
+
<NavigationProperty Name="regardingobjectid_contact_email" Type="mscrm.contact" Nullable="false" Partner="Contact_Emails"/>
|
650
|
+
<NavigationProperty Name="email_campaignresponse" Type="Collection(mscrm.campaignresponse)" Partner="originatingactivityid_email"/>
|
651
|
+
<NavigationProperty Name="sendersaccount" Type="mscrm.account" Nullable="false" Partner="Account_Email_SendersAccount">
|
652
|
+
<ReferentialConstraint Property="_sendersaccount_value" ReferencedProperty="accountid"/>
|
653
|
+
</NavigationProperty>
|
654
|
+
<NavigationProperty Name="Email_BulkDeleteFailures" Type="Collection(mscrm.bulkdeletefailure)" Partner="regardingobjectid_email"/>
|
655
|
+
<NavigationProperty Name="regardingobjectid_invoice_email" Type="mscrm.invoice" Nullable="false" Partner="Invoice_Emails"/>
|
656
|
+
<NavigationProperty Name="email_activity_mime_attachment" Type="Collection(mscrm.activitymimeattachment)" Partner="objectid_email"/>
|
657
|
+
<NavigationProperty Name="Email_FileAttachment" Type="Collection(mscrm.fileattachment)" Partner="objectid_email_fileattachment"/>
|
658
|
+
<NavigationProperty Name="email_actioncard" Type="Collection(mscrm.actioncard)" Partner="regardingobjectid_email_actioncard"/>
|
659
|
+
<NavigationProperty Name="sendermailboxid_email" Type="mscrm.mailbox" Nullable="false" Partner="email_sendermailboxid_mailbox"/>
|
660
|
+
<NavigationProperty Name="regardingobjectid_bookableresourcebookingheader_email" Type="mscrm.bookableresourcebookingheader" Nullable="false" Partner="bookableresourcebookingheader_Emails"/>
|
661
|
+
<NavigationProperty Name="regardingobjectid_entitlement_email" Type="mscrm.entitlement" Nullable="false" Partner="entitlement_Emails"/>
|
662
|
+
</EntityType>
|
342
663
|
<EntityType Name="role" BaseType="mscrm.crmbaseentity">
|
343
664
|
<Key>
|
344
665
|
<PropertyRef Name="roleid"/>
|
data/spec/frodo/entity_spec.rb
CHANGED
@@ -48,6 +48,39 @@ describe Frodo::Entity, vcr: false do
|
|
48
48
|
} }
|
49
49
|
|
50
50
|
it_behaves_like 'a valid product'
|
51
|
+
|
52
|
+
context "with navigation properties inherited from supertype" do
|
53
|
+
before do
|
54
|
+
Frodo::Service.new('http://dynamics.com', name: 'DynamicsTestService', metadata_file: metadata_file)
|
55
|
+
end
|
56
|
+
let(:metadata_file) { 'spec/fixtures/files/metadata_dynamics.xml' }
|
57
|
+
let(:entity_set) {
|
58
|
+
Frodo::EntitySet.new(
|
59
|
+
container: 'System',
|
60
|
+
namespace: 'Microsoft.Dynamics.CRM',
|
61
|
+
name: 'emails',
|
62
|
+
type: 'email',
|
63
|
+
service_name: 'DynamicsTestService')
|
64
|
+
}
|
65
|
+
let(:options) { {
|
66
|
+
type: 'Microsoft.Dynamics.CRM.email',
|
67
|
+
namespace: 'Microsoft.Dynamics.CRM',
|
68
|
+
service_name: 'DynamicsTestService',
|
69
|
+
entity_set: entity_set
|
70
|
+
} }
|
71
|
+
let(:properties) {{
|
72
|
+
"activitypointer_activity_parties" => [ # This is inherited from the parent type `activitypointer`
|
73
|
+
{"partyid_systemuser@odata.bind"=>"/systemusers(cef21737-4714-e911-a957-000d3a3b959b)", "participationtypemask"=>1},
|
74
|
+
{"partyid_lead@odata.bind"=>"/leads(0474694b-199d-e911-a95d-000d3a3b9a2b)", "participationtypemask"=>2}
|
75
|
+
],
|
76
|
+
"activityid"=>"708bff0f-ebdb-e911-a960-000d3a3b9b3d"
|
77
|
+
}}
|
78
|
+
it 'returns navigation property from parent' do
|
79
|
+
expect(subject.get_property('activitypointer_activity_parties')).to be_a(Frodo::NavigationProperty::Proxy)
|
80
|
+
expect(subject['activitypointer_activity_parties']).to eq(properties['activitypointer_activity_parties'])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
51
84
|
end
|
52
85
|
|
53
86
|
describe '.with_properties with bind properties' do
|
@@ -195,4 +228,5 @@ describe Frodo::Entity, vcr: false do
|
|
195
228
|
|
196
229
|
it { expect(subject.to_json).to eq(properties.to_json) }
|
197
230
|
end
|
231
|
+
|
198
232
|
end
|
data/spec/frodo/schema_spec.rb
CHANGED
@@ -67,14 +67,26 @@ describe Frodo::Schema do
|
|
67
67
|
it { expect(subject).to respond_to(:navigation_properties) }
|
68
68
|
it { expect(subject.navigation_properties['Product'].size).to eq(3) }
|
69
69
|
it { expect(subject.navigation_properties['Product'].values).to all(be_a(Frodo::NavigationProperty)) }
|
70
|
+
|
71
|
+
context "with navigation property inherited from parent type" do
|
72
|
+
let(:metadata_file) { 'spec/fixtures/files/metadata_dynamics.xml' }
|
73
|
+
it { expect(subject.navigation_properties['email'].size).to eq(132) }
|
74
|
+
it { expect(subject.navigation_properties['email']['activitypointer_activity_parties']).to be_a(Frodo::NavigationProperty) }
|
75
|
+
end
|
76
|
+
|
70
77
|
end
|
71
78
|
|
72
|
-
describe '#
|
79
|
+
describe '#referential_constraints_for_entity' do
|
73
80
|
let(:metadata_file) { 'spec/fixtures/files/metadata_dynamics.xml' }
|
74
|
-
it { expect(subject).to respond_to(:
|
75
|
-
it { expect(subject.
|
76
|
-
it { expect(subject.
|
77
|
-
it { expect(subject.
|
81
|
+
it { expect(subject).to respond_to(:referential_constraints_for_entity) }
|
82
|
+
it { expect(subject.referential_constraints_for_entity('contact').size).to eq(20) }
|
83
|
+
it { expect(subject.referential_constraints_for_entity('contact').values).to all(be_a(String)) }
|
84
|
+
it { expect(subject.referential_constraints_for_entity('contact')['parentcustomerid_account']).to eq('_parentcustomerid_value') }
|
85
|
+
|
86
|
+
context "with navigation property inherited from parent type" do
|
87
|
+
it { expect(subject.referential_constraints_for_entity('email').size).to eq(41) }
|
88
|
+
it { expect(subject.referential_constraints_for_entity('email')['regardingobjectid_opportunity']).to eq('_regardingobjectid_value') }
|
89
|
+
end
|
78
90
|
end
|
79
91
|
|
80
92
|
describe '#get_property_type' do
|
data/spec/support/middleware.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
module MiddlewareExampleGroup
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
def self.included(base)
|
3
|
+
base.class_eval do
|
4
|
+
let(:app) { double('@app', call: nil) }
|
5
|
+
let(:env) { { request_headers: {}, response_headers: {} } }
|
6
|
+
let(:retries) { 3 }
|
7
|
+
let(:options) { {} }
|
8
|
+
let(:client) { double(Frodo::AbstractClient) }
|
9
|
+
let(:auth_callback) { double(Proc) }
|
10
10
|
|
11
|
-
|
12
|
-
end
|
11
|
+
subject(:middleware) { described_class.new app, client, options }
|
13
12
|
end
|
13
|
+
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
15
|
+
RSpec.configure do |config|
|
16
|
+
config.include self, file_path: %r{spec/frodo/middleware}
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frodo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emmanuel Pinault
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|