Skip to content

Commit 723f255

Browse files
authored
Merge branch 'master' into patch-1
2 parents 368dffd + e1ac77f commit 723f255

File tree

2 files changed

+54
-25
lines changed

2 files changed

+54
-25
lines changed

src/ZendeskApi_v2/Requests/Tickets.cs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,9 @@ public interface ITickets : ICore
121121

122122
IndividualTicketFieldResponse GetTicketFieldById(long id);
123123

124-
IndividualTicketFieldResponse CreateTicketField(TicketField ticketField);
124+
IndividualTicketFieldResponse CreateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true);
125125

126-
IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField);
126+
IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false);
127127

128128
bool DeleteTicketField(long id);
129129

@@ -220,9 +220,9 @@ public interface ITickets : ICore
220220

221221
Task<IndividualTicketFieldResponse> GetTicketFieldByIdAsync(long id);
222222

223-
Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField);
223+
Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true);
224224

225-
Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField);
225+
Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false);
226226

227227
Task<bool> DeleteTicketFieldAsync(long id);
228228

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

564-
public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
564+
public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true)
565565
{
566566
if (ticketField.CustomFieldOptions != null)
567567
{
568568
foreach (var custom in ticketField.CustomFieldOptions)
569569
{
570-
custom.Name = custom.Name.Replace(' ', '_');
570+
if (replaceNameSpacesWithUnderscore)
571+
custom.Name = custom.Name.Replace(' ', '_');
571572
custom.Value = custom.Value.Replace(' ', '_');
572573
}
573574
}
@@ -579,8 +580,18 @@ public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
579580
return res;
580581
}
581582

582-
public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField)
583+
public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false)
583584
{
585+
if (ticketField.CustomFieldOptions != null)
586+
{
587+
foreach (var custom in ticketField.CustomFieldOptions)
588+
{
589+
if (replaceNameSpacesWithUnderscore)
590+
custom.Name = custom.Name.Replace(' ', '_');
591+
custom.Value = custom.Value.Replace(' ', '_');
592+
}
593+
}
594+
584595
return GenericPut<IndividualTicketFieldResponse>($"ticket_fields/{ticketField.Id}.json", new
585596
{
586597
ticket_field = ticketField
@@ -842,13 +853,14 @@ public async Task<IndividualTicketFieldResponse> GetTicketFieldByIdAsync(long id
842853
return await GenericGetAsync<IndividualTicketFieldResponse>($"ticket_fields/{id}.json");
843854
}
844855

845-
public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField)
856+
public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = true)
846857
{
847858
if (ticketField.CustomFieldOptions != null)
848859
{
849860
foreach (var custom in ticketField.CustomFieldOptions)
850861
{
851-
custom.Name = custom.Name.Replace(' ', '_');
862+
if (replaceNameSpacesWithUnderscore)
863+
custom.Name = custom.Name.Replace(' ', '_');
852864
custom.Value = custom.Value.Replace(' ', '_');
853865
}
854866
}
@@ -860,8 +872,17 @@ public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketFi
860872
return await res;
861873
}
862874

863-
public async Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField)
875+
public async Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField, bool replaceNameSpacesWithUnderscore = false)
864876
{
877+
if (ticketField.CustomFieldOptions != null)
878+
{
879+
foreach (var custom in ticketField.CustomFieldOptions)
880+
{
881+
if (replaceNameSpacesWithUnderscore)
882+
custom.Name = custom.Name.Replace(' ', '_');
883+
custom.Value = custom.Value.Replace(' ', '_');
884+
}
885+
}
865886

866887
return await GenericPutAsync<IndividualTicketFieldResponse>($"ticket_fields/{ticketField.Id}.json", new
867888
{

test/ZendeskApi_v2.Test/TicketTests.cs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -817,8 +817,9 @@ public void CanCreateUpdateAndDeleteTicketFields()
817817
Assert.True(api.Tickets.DeleteTicketField(updatedTF.Id.Value));
818818
}
819819

820-
[Test]
821-
public void CanCreateAndDeleteTaggerTicketField()
820+
[TestCase(true, "test entry", "test_entry")]
821+
[TestCase(false, "test entry", "test entry")]
822+
public void CanCreateAndDeleteTaggerTicketField(bool replaceNameSpaceWithUnderscore, string name, string expectedName)
822823
{
823824
var tField = new TicketField()
824825
{
@@ -831,23 +832,26 @@ public void CanCreateAndDeleteTaggerTicketField()
831832

832833
tField.CustomFieldOptions.Add(new CustomFieldOptions()
833834
{
834-
Name = "test entry",
835+
Name = name,
835836
Value = "test value"
836837
});
837838

838-
var res = api.Tickets.CreateTicketField(tField);
839+
var res = api.Tickets.CreateTicketField(tField, replaceNameSpaceWithUnderscore);
839840
Assert.NotNull(res.TicketField);
841+
Assert.AreEqual(res.TicketField.CustomFieldOptions[0].Name, expectedName);
840842

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

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

849853
var option1 = "test_value_a";
850-
var option1_Update = "test_value_a_newtag";
854+
var option1_Update = "test value_a_newtag";
851855
var option2 = "test_value_b";
852856
var option3 = "test_value_c";
853857

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

863867
tField.CustomFieldOptions.Add(new CustomFieldOptions()
864868
{
865-
Name = "test entryA",
869+
Name = name1,
866870
Value = option1
867871
});
868872

869873
tField.CustomFieldOptions.Add(new CustomFieldOptions()
870874
{
871-
Name = "test entryB",
875+
Name = name2,
872876
Value = option2
873877
});
874878

875-
var res = api.Tickets.CreateTicketField(tField);
879+
var res = api.Tickets.CreateTicketField(tField, replaceNameSpaceWithUnderscore);
876880
Assert.That(res.TicketField, Is.Not.Null);
877881
Assert.That(res.TicketField.Id, Is.Not.Null);
878882
Assert.That(res.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
879883
Assert.That(res.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1));
880884
Assert.That(res.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option2));
885+
Assert.That(res.TicketField.CustomFieldOptions[0].Name, Is.EqualTo(expectedName1));
886+
Assert.That(res.TicketField.CustomFieldOptions[1].Name, Is.EqualTo(expectedName2));
881887

882888
var id = res.TicketField.Id.Value;
883889

@@ -890,22 +896,24 @@ public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()
890896
//update CustomFieldOption A
891897
tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
892898
{
893-
Name = "test entryA newTitle",
899+
Name = name1_Update,
894900
Value = option1_Update
895901
});
896902
//delete CustomFieldOption B
897903
//add CustomFieldOption C
898904
tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
899905
{
900-
Name = "test entryC",
906+
Name = name3,
901907
Value = option3
902908
});
903909

904-
var resU = api.Tickets.UpdateTicketField(tFieldU);
910+
var resU = api.Tickets.UpdateTicketField(tFieldU, replaceNameSpaceWithUnderscore);
905911

906912
Assert.That(resU.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
907-
Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update));
908-
Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.Not.EqualTo(option2));
913+
Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update.Replace(" ", "_")));
914+
Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option3));
915+
Assert.That(resU.TicketField.CustomFieldOptions[0].Name, Is.EqualTo(expectedName1_Update));
916+
Assert.That(resU.TicketField.CustomFieldOptions[1].Name, Is.EqualTo(expectedName3));
909917

910918
Assert.True(api.Tickets.DeleteTicketField(id));
911919
}

0 commit comments

Comments
 (0)