@@ -113,6 +113,64 @@ def test_generate_diff_and_apply_create_interface_with_tags(self):
113
113
self .assertEqual (new_interface .tags .first ().name , "tag 1" )
114
114
115
115
116
+ def test_generate_diff_and_apply_create_and_update_device_role (self ):
117
+ """Test generate diff and apply create and update device role."""
118
+ device_uuid = str (uuid4 ())
119
+ role_1_uuid = str (uuid4 ())
120
+ role_2_uuid = str (uuid4 ())
121
+ site_uuid = str (uuid4 ())
122
+ payload = {
123
+ "timestamp" : 1 ,
124
+ "object_type" : "dcim.device" ,
125
+ "entity" : {
126
+ "device" : {
127
+ "name" : f"Device { device_uuid } " ,
128
+ "deviceType" : {
129
+ "model" : f"Device Type { uuid4 ()} " ,
130
+ "manufacturer" : {
131
+ "name" : f"Manufacturer { uuid4 ()} "
132
+ }
133
+ },
134
+ "role" : {
135
+ "name" : f"Role { role_1_uuid } "
136
+ },
137
+ "site" : {
138
+ "name" : f"Site { site_uuid } "
139
+ }
140
+ },
141
+ }
142
+ }
143
+ _ , response = self .diff_and_apply (payload )
144
+ new_device = Device .objects .get (name = f"Device { device_uuid } " )
145
+ self .assertEqual (new_device .site .name , f"Site { site_uuid } " )
146
+ self .assertEqual (new_device .role .name , f"Role { role_1_uuid } " )
147
+ payload = {
148
+ "timestamp" : 1 ,
149
+ "object_type" : "dcim.device" ,
150
+ "entity" : {
151
+ "device" : {
152
+ "name" : f"Device { device_uuid } " ,
153
+ "deviceType" : {
154
+ "model" : f"Device Type { uuid4 ()} " ,
155
+ "manufacturer" : {
156
+ "name" : f"Manufacturer { uuid4 ()} "
157
+ }
158
+ },
159
+ "role" : {
160
+ "name" : f"Role { role_2_uuid } "
161
+ },
162
+ "site" : {
163
+ "name" : f"Site { site_uuid } "
164
+ }
165
+ },
166
+ }
167
+ }
168
+ _ , response = self .diff_and_apply (payload )
169
+ device = Device .objects .get (name = f"Device { device_uuid } " )
170
+ self .assertEqual (device .site .name , f"Site { site_uuid } " )
171
+ self .assertEqual (device .role .name , f"Role { role_2_uuid } " )
172
+
173
+
116
174
def test_generate_diff_and_apply_create_site_autoslug (self ):
117
175
"""Test generate diff and apply create site."""
118
176
"""Test generate diff create site."""
@@ -321,6 +379,35 @@ def test_generate_diff_and_apply_create_and_update_site_with_custom_field(self):
321
379
diff = response1 .json ().get ("change_set" , {})
322
380
self .assertEqual (diff .get ("changes" , []), [])
323
381
382
+ def test_generate_diff_wrong_type_date (self ):
383
+ """Test generate diff wrong type date."""
384
+ payload = {
385
+ "timestamp" : 1 ,
386
+ "object_type" : "dcim.site" ,
387
+ "entity" : {
388
+ "site" : {
389
+ "name" : "Site Generate Diff 1" ,
390
+ "slug" : "site-generate-diff-1" ,
391
+ "customFields" : {
392
+ "mydate" : {
393
+ "date" : 12 ,
394
+ },
395
+ },
396
+ },
397
+ }
398
+ }
399
+ response1 = self .client .post (
400
+ self .diff_url , data = payload , format = "json" , ** self .user_header
401
+ )
402
+ self .assertEqual (response1 .status_code , status .HTTP_200_OK )
403
+
404
+ diff = response1 .json ().get ("change_set" , {})
405
+
406
+ response2 = self .client .post (
407
+ self .apply_url , data = diff , format = "json" , ** self .user_header
408
+ )
409
+ self .assertEqual (response2 .status_code , status .HTTP_400_BAD_REQUEST )
410
+
324
411
325
412
def diff_and_apply (self , payload ):
326
413
"""Diff and apply the payload."""
0 commit comments