Skip to content

Commit

Permalink
Merge branch 'master' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
yuvalon authored Nov 19, 2019
2 parents 368dffd + e1ac77f commit 723f255
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 25 deletions.
41 changes: 31 additions & 10 deletions src/ZendeskApi_v2/Requests/Tickets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ public interface ITickets : ICore

IndividualTicketFieldResponse GetTicketFieldById(long id);

IndividualTicketFieldResponse CreateTicketField(TicketField ticketField);
IndividualTicketFieldResponse CreateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true);

IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField);
IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false);

bool DeleteTicketField(long id);

Expand Down Expand Up @@ -220,9 +220,9 @@ public interface ITickets : ICore

Task<IndividualTicketFieldResponse> GetTicketFieldByIdAsync(long id);

Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField);
Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true);

Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField);
Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false);

Task<bool> DeleteTicketFieldAsync(long id);

Expand Down Expand Up @@ -561,13 +561,14 @@ public IndividualTicketFieldResponse GetTicketFieldById(long id)
return GenericGet<IndividualTicketFieldResponse>($"ticket_fields/{id}.json");
}

public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true)
{
if (ticketField.CustomFieldOptions != null)
{
foreach (var custom in ticketField.CustomFieldOptions)
{
custom.Name = custom.Name.Replace(' ', '_');
if (replaceNameSpacesWithUnderscore)
custom.Name = custom.Name.Replace(' ', '_');
custom.Value = custom.Value.Replace(' ', '_');
}
}
Expand All @@ -579,8 +580,18 @@ public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
return res;
}

public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField)
public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false)
{
if (ticketField.CustomFieldOptions != null)
{
foreach (var custom in ticketField.CustomFieldOptions)
{
if (replaceNameSpacesWithUnderscore)
custom.Name = custom.Name.Replace(' ', '_');
custom.Value = custom.Value.Replace(' ', '_');
}
}

return GenericPut<IndividualTicketFieldResponse>($"ticket_fields/{ticketField.Id}.json", new
{
ticket_field = ticketField
Expand Down Expand Up @@ -842,13 +853,14 @@ public async Task<IndividualTicketFieldResponse> GetTicketFieldByIdAsync(long id
return await GenericGetAsync<IndividualTicketFieldResponse>($"ticket_fields/{id}.json");
}

public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField)
public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true)
{
if (ticketField.CustomFieldOptions != null)
{
foreach (var custom in ticketField.CustomFieldOptions)
{
custom.Name = custom.Name.Replace(' ', '_');
if (replaceNameSpacesWithUnderscore)
custom.Name = custom.Name.Replace(' ', '_');
custom.Value = custom.Value.Replace(' ', '_');
}
}
Expand All @@ -860,8 +872,17 @@ public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketFi
return await res;
}

public async Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField)
public async Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false)
{
if (ticketField.CustomFieldOptions != null)
{
foreach (var custom in ticketField.CustomFieldOptions)
{
if (replaceNameSpacesWithUnderscore)
custom.Name = custom.Name.Replace(' ', '_');
custom.Value = custom.Value.Replace(' ', '_');
}
}

return await GenericPutAsync<IndividualTicketFieldResponse>($"ticket_fields/{ticketField.Id}.json", new
{
Expand Down
38 changes: 23 additions & 15 deletions test/ZendeskApi_v2.Test/TicketTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -817,8 +817,9 @@ public void CanCreateUpdateAndDeleteTicketFields()
Assert.True(api.Tickets.DeleteTicketField(updatedTF.Id.Value));
}

[Test]
public void CanCreateAndDeleteTaggerTicketField()
[TestCase(true, "test entry", "test_entry")]
[TestCase(false, "test entry", "test entry")]
public void CanCreateAndDeleteTaggerTicketField(bool replaceNameSpaceWithUnderscore, string name, string expectedName)
{
var tField = new TicketField()
{
Expand All @@ -831,23 +832,26 @@ public void CanCreateAndDeleteTaggerTicketField()

tField.CustomFieldOptions.Add(new CustomFieldOptions()
{
Name = "test entry",
Name = name,
Value = "test value"
});

var res = api.Tickets.CreateTicketField(tField);
var res = api.Tickets.CreateTicketField(tField, replaceNameSpaceWithUnderscore);
Assert.NotNull(res.TicketField);
Assert.AreEqual(res.TicketField.CustomFieldOptions[0].Name, expectedName);

Assert.True(api.Tickets.DeleteTicketField(res.TicketField.Id.Value));
}

[Test]
public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()
[TestCase(true, "test entryA", "test entryA newTitle", "test entryB", "test entryC", "test_entryA", "test_entryA_newTitle", "test_entryB", "test_entryC")]
[TestCase(false, "test entryA", "test entryA newTitle", "test entryB", "test entryC", "test entryA", "test entryA newTitle", "test entryB", "test entryC")]
public void CanCreateUpdateOptionsAndDeleteTaggerTicketField(bool replaceNameSpaceWithUnderscore, string name1, string name1_Update, string name2, string name3,
string expectedName1, string expectedName1_Update, string expectedName2, string expectedName3)
{
// https://support.zendesk.com/hc/en-us/articles/204579973--BREAKING-Update-ticket-field-dropdown-fields-by-value-instead-of-id-

var option1 = "test_value_a";
var option1_Update = "test_value_a_newtag";
var option1_Update = "test value_a_newtag";
var option2 = "test_value_b";
var option3 = "test_value_c";

Expand All @@ -862,22 +866,24 @@ public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()

tField.CustomFieldOptions.Add(new CustomFieldOptions()
{
Name = "test entryA",
Name = name1,
Value = option1
});

tField.CustomFieldOptions.Add(new CustomFieldOptions()
{
Name = "test entryB",
Name = name2,
Value = option2
});

var res = api.Tickets.CreateTicketField(tField);
var res = api.Tickets.CreateTicketField(tField, replaceNameSpaceWithUnderscore);
Assert.That(res.TicketField, Is.Not.Null);
Assert.That(res.TicketField.Id, Is.Not.Null);
Assert.That(res.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
Assert.That(res.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1));
Assert.That(res.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option2));
Assert.That(res.TicketField.CustomFieldOptions[0].Name, Is.EqualTo(expectedName1));
Assert.That(res.TicketField.CustomFieldOptions[1].Name, Is.EqualTo(expectedName2));

var id = res.TicketField.Id.Value;

Expand All @@ -890,22 +896,24 @@ public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()
//update CustomFieldOption A
tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
{
Name = "test entryA newTitle",
Name = name1_Update,
Value = option1_Update
});
//delete CustomFieldOption B
//add CustomFieldOption C
tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
{
Name = "test entryC",
Name = name3,
Value = option3
});

var resU = api.Tickets.UpdateTicketField(tFieldU);
var resU = api.Tickets.UpdateTicketField(tFieldU, replaceNameSpaceWithUnderscore);

Assert.That(resU.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update));
Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.Not.EqualTo(option2));
Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update.Replace(" ", "_")));
Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option3));
Assert.That(resU.TicketField.CustomFieldOptions[0].Name, Is.EqualTo(expectedName1_Update));
Assert.That(resU.TicketField.CustomFieldOptions[1].Name, Is.EqualTo(expectedName3));

Assert.True(api.Tickets.DeleteTicketField(id));
}
Expand Down

0 comments on commit 723f255

Please sign in to comment.