Skip to content

Commit a426908

Browse files
LauraLaureusmozts2005
authored andcommitted
Added Create or Update (#461)
* Added Create or Update * Added Create or Update async version and unit test for sync and async version * Fixed codefactor issue
1 parent 972a06b commit a426908

2 files changed

Lines changed: 184 additions & 1 deletion

File tree

src/ZendeskApi_v2/Requests/Users.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public interface IUsers : ICore
6464

6565
IndividualUserResponse CreateUser(User user);
6666

67+
IndividualUserResponse CreateOrUpdateUser(User user);
68+
6769
JobStatusResponse BulkCreateUsers(IEnumerable<User> users);
6870

6971
JobStatusResponse BulkUpdate(IEnumerable<long> ids, User user);
@@ -151,6 +153,7 @@ public interface IUsers : ICore
151153
Task<GroupUserResponse> GetUsersInOrganizationAsync(long id, int? perPage = null, int? page = null, UserSideLoadOptions sideLoadOptions = UserSideLoadOptions.None);
152154

153155
Task<IndividualUserResponse> CreateUserAsync(User user);
156+
Task<IndividualUserResponse> CreateOrUpdateUserAsync(User user);
154157

155158
Task<JobStatusResponse> BulkCreateUsersAsync(IEnumerable<User> users);
156159

@@ -342,6 +345,11 @@ public IndividualUserResponse CreateUser(User user)
342345
return GenericPost<IndividualUserResponse>("users.json", new { user });
343346
}
344347

348+
public IndividualUserResponse CreateOrUpdateUser(User user)
349+
{
350+
return GenericPost<IndividualUserResponse>($"users/create_or_update.json", new { user });
351+
}
352+
345353
public JobStatusResponse BulkCreateUsers(IEnumerable<User> users)
346354
{
347355
return GenericPost<JobStatusResponse>("users/create_many.json", new { users });
@@ -580,6 +588,11 @@ public async Task<IndividualUserResponse> CreateUserAsync(User user)
580588
return await GenericPostAsync<IndividualUserResponse>("users.json", new { user });
581589
}
582590

591+
public async Task<IndividualUserResponse> CreateOrUpdateUserAsync(User user)
592+
{
593+
return await GenericPostAsync<IndividualUserResponse>($"users/create_or_update.json", new { user });
594+
}
595+
583596
public async Task<JobStatusResponse> BulkCreateUsersAsync(IEnumerable<User> users)
584597
{
585598
return await GenericPostAsync<JobStatusResponse>("users/create_many.json", new { users });

test/ZendeskApi_v2.Test/UserTests.cs

Lines changed: 171 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,177 @@ public void CanCreateUpdateSuspendAndDeleteUser()
171171
}
172172

173173
[Test]
174-
public void CanFindUser()
174+
public void CanCreateOrUpdateUser_NewUser()
175+
{
176+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
177+
foreach (var u in groupUserResponse.Users)
178+
{
179+
api.Users.DeleteUser(u.Id.Value);
180+
}
181+
182+
var user = new User()
183+
{
184+
Name = "tester user72",
185+
Email = "test772@tester.com",
186+
Role = "end-user",
187+
Verified = true,
188+
CustomFields = new Dictionary<string, object>()
189+
{
190+
{"user_dropdown", "option_1"}
191+
}
192+
};
193+
194+
var res1 = api.Users.CreateOrUpdateUser(user);
195+
Assert.IsTrue(res1.User.Id > 0);
196+
}
197+
[Test]
198+
public void CanCreateOrUpdateUser_CreateSameUserTwice()
199+
{
200+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
201+
foreach (var u in groupUserResponse.Users)
202+
{
203+
api.Users.DeleteUser(u.Id.Value);
204+
}
205+
206+
var user = new User()
207+
{
208+
Name = "tester user72",
209+
Email = "test772@tester.com",
210+
Role = "end-user",
211+
Verified = true,
212+
CustomFields = new Dictionary<string, object>()
213+
{
214+
{"user_dropdown", "option_1"}
215+
}
216+
};
217+
218+
var res1 = api.Users.CreateOrUpdateUser(user);
219+
var res2 = api.Users.CreateOrUpdateUser(user);
220+
221+
var user72group = api.Users.SearchByEmail("test772@tester.com");
222+
223+
Assert.IsTrue(user72group.Count == 1);
224+
}
225+
226+
[Test]
227+
public void CanCreateOrUpdateUser_UpdateUser()
228+
{
229+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
230+
foreach (var u in groupUserResponse.Users)
231+
{
232+
api.Users.DeleteUser(u.Id.Value);
233+
}
234+
235+
var user = new User()
236+
{
237+
Name = "tester user72",
238+
Email = "test772@tester.com",
239+
Role = "end-user",
240+
Verified = true,
241+
CustomFields = new Dictionary<string, object>()
242+
{
243+
{"user_dropdown", "option_1"}
244+
}
245+
};
246+
247+
var res1 = api.Users.CreateOrUpdateUser(user);
248+
249+
user.Name = "tester user721";
250+
var res2 = api.Users.CreateOrUpdateUser(user);
251+
252+
var user72group = api.Users.SearchByEmail("test772@tester.com");
253+
254+
Assert.IsTrue(user72group.Count == 1);
255+
Assert.IsTrue(res2.User.Name.Contains("721"));
256+
}
257+
258+
[Test]
259+
public async Task CanCreateOrUpdateUserAsync_NewUser()
260+
{
261+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
262+
foreach (var u in groupUserResponse.Users)
263+
{
264+
api.Users.DeleteUser(u.Id.Value);
265+
}
266+
267+
var user = new User()
268+
{
269+
Name = "tester user72",
270+
Email = "test772@tester.com",
271+
Role = "end-user",
272+
Verified = true,
273+
CustomFields = new Dictionary<string, object>()
274+
{
275+
{"user_dropdown", "option_1"}
276+
}
277+
};
278+
279+
var res1 = await api.Users.CreateOrUpdateUserAsync(user);
280+
Assert.IsTrue(res1.User.Id > 0);
281+
}
282+
[Test]
283+
public async Task CanCreateOrUpdateUserAsync_CreateSameUserTwice()
284+
{
285+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
286+
foreach (var u in groupUserResponse.Users)
287+
{
288+
api.Users.DeleteUser(u.Id.Value);
289+
}
290+
291+
var user = new User()
292+
{
293+
Name = "tester user72",
294+
Email = "test772@tester.com",
295+
Role = "end-user",
296+
Verified = true,
297+
CustomFields = new Dictionary<string, object>()
298+
{
299+
{"user_dropdown", "option_1"}
300+
}
301+
};
302+
303+
var res1 = await api.Users.CreateOrUpdateUserAsync(user);
304+
var res2 = await api.Users.CreateOrUpdateUserAsync(user);
305+
306+
var user72group = api.Users.SearchByEmail("test772@tester.com");
307+
308+
Assert.IsTrue(user72group.Count == 1);
309+
}
310+
311+
[Test]
312+
public async Task CanCreateOrUpdateUserAsync_UpdateUser()
313+
{
314+
var groupUserResponse = api.Users.SearchByEmail("test772@tester.com");
315+
foreach (var u in groupUserResponse.Users)
316+
{
317+
api.Users.DeleteUser(u.Id.Value);
318+
}
319+
320+
var user = new User()
321+
{
322+
Name = "tester user72",
323+
Email = "test772@tester.com",
324+
Role = "end-user",
325+
Verified = true,
326+
CustomFields = new Dictionary<string, object>()
327+
{
328+
{"user_dropdown", "option_1"}
329+
}
330+
};
331+
332+
var res1 = await api.Users.CreateOrUpdateUserAsync(user);
333+
334+
user.Name = "tester user721";
335+
var res2 = api.Users.CreateOrUpdateUser(user);
336+
337+
var user72group = api.Users.SearchByEmail("test772@tester.com");
338+
339+
Assert.IsTrue(user72group.Count == 1);
340+
Assert.IsTrue(res2.User.Name.Contains("721"));
341+
}
342+
343+
[Test]
344+
public void CanFindUser()
175345
{
176346
//var res1 = api.Users.SearchByEmail(Settings.Email);
177347
var res1 = api.Users.SearchByEmail(Settings.ColloboratorEmail);

0 commit comments

Comments
 (0)