107 lines
3.3 KiB
C#
107 lines
3.3 KiB
C#
using C4IT.FASD.Base;
|
|
using FasdDesktopUi.Basics.Helper;
|
|
|
|
namespace F4SD.Cockpit.Client.Test.Basics.Helper;
|
|
|
|
public class TicketExternalLinkHelperTest
|
|
{
|
|
[Fact]
|
|
public void HasValidUserIdentity_NullIdentities_ReturnsFalse()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
|
|
Assert.False(TicketExternalLinkHelper.HasValidUserIdentity(relation));
|
|
}
|
|
|
|
[Fact]
|
|
public void HasValidUserIdentity_EmptyUserId_ReturnsFalse()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
relation.Identities =
|
|
[
|
|
new cF4sdIdentityEntry { Class = enumFasdInformationClass.Ticket, Id = relation.id },
|
|
new cF4sdIdentityEntry { Class = enumFasdInformationClass.User, Id = Guid.Empty }
|
|
];
|
|
|
|
Assert.False(TicketExternalLinkHelper.HasValidUserIdentity(relation));
|
|
}
|
|
|
|
[Fact]
|
|
public void HasValidUserIdentity_ValidUserId_ReturnsTrue()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
relation.Identities =
|
|
[
|
|
new cF4sdIdentityEntry { Class = enumFasdInformationClass.User, Id = Guid.NewGuid() }
|
|
];
|
|
|
|
Assert.True(TicketExternalLinkHelper.HasValidUserIdentity(relation));
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGetTicketLink_UsesProvidedPreviewLink()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
relation.Infos = new Dictionary<string, string>
|
|
{
|
|
["DirectLinkPreview"] = "https://m42.example/wm/ticket/preview"
|
|
};
|
|
|
|
var result = TicketExternalLinkHelper.TryGetTicketLink(relation, null, out var ticketLink);
|
|
|
|
Assert.True(result);
|
|
Assert.Equal("https://m42.example/wm/ticket/preview", ticketLink.TrimEnd('/'));
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGetTicketLink_BuildsPreviewLinkForOverviewRelation()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
relation.Infos = new Dictionary<string, string>
|
|
{
|
|
["ActivityType"] = "SPSActivityTypeIncident"
|
|
};
|
|
|
|
var result = TicketExternalLinkHelper.TryGetTicketLink(relation, "m42.example", out var ticketLink);
|
|
|
|
Assert.True(result);
|
|
Assert.Equal(
|
|
$"https://m42.example/wm/app-ServiceDesk/notSet/preview-object/SPSActivityTypeIncident/{relation.id:D}/0/",
|
|
ticketLink);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGetTicketLink_UsesDefaultTicketActivityType()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
|
|
var result = TicketExternalLinkHelper.TryGetTicketLink(relation, "https://m42.example/", out var ticketLink);
|
|
|
|
Assert.True(result);
|
|
Assert.Contains("/SPSActivityTypeTicket/", ticketLink);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGetTicketLink_MissingTicketId_ReturnsFalse()
|
|
{
|
|
var relation = CreateTicketRelation();
|
|
relation.id = Guid.Empty;
|
|
|
|
var result = TicketExternalLinkHelper.TryGetTicketLink(relation, "https://m42.example", out var ticketLink);
|
|
|
|
Assert.False(result);
|
|
Assert.Null(ticketLink);
|
|
}
|
|
|
|
private static cF4sdApiSearchResultRelation CreateTicketRelation()
|
|
{
|
|
return new cF4sdApiSearchResultRelation
|
|
{
|
|
Type = enumF4sdSearchResultClass.Ticket,
|
|
Name = "TCK00001",
|
|
DisplayName = "TCK00001",
|
|
id = Guid.NewGuid()
|
|
};
|
|
}
|
|
}
|