Skip to content

Commit f6883f6

Browse files
Make artifact type comparison case-insensitive (#431)
1 parent 66b2bd8 commit f6883f6

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

src/Cake.AzureDevOps.Tests/Cake.AzureDevOps.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
<ItemGroup>
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
18+
<PackageReference Include="Cake.Common" Version="3.0.0" />
1819
<PackageReference Include="Cake.Core" Version="3.0.0" />
1920
<PackageReference Include="Cake.Testing" Version="3.0.0" />
2021
<PackageReference Include="Microsoft.TeamFoundationServer.Client" Version="16.205.1" />
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
namespace Cake.AzureDevOps.Tests.Pipelines
2+
{
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using Cake.AzureDevOps.Pipelines;
6+
using Cake.Common.Build.AzurePipelines.Data;
7+
using Microsoft.TeamFoundation.Build.WebApi;
8+
using Shouldly;
9+
using Xunit;
10+
11+
// ReSharper disable once ClassNeverInstantiated.Global
12+
public sealed class ArtifactResourceExtensionsTests
13+
{
14+
public sealed class TheToAzureDevOpsArtifactResourceExtensionMethod
15+
{
16+
[Fact]
17+
public void Should_Return_The_Correct_AzureDevOpsArtifactResource_For_ArtifactResource()
18+
{
19+
// Given
20+
var artifactResource = new ArtifactResource()
21+
{
22+
Data = "data",
23+
DownloadUrl = "downloadUrl",
24+
Url = "url",
25+
Type = "FilePath",
26+
Properties = new Dictionary<string, string>()
27+
{
28+
{ "foo", "bar" },
29+
},
30+
};
31+
32+
// When
33+
var result = artifactResource.ToAzureDevOpsArtifactResource();
34+
35+
// Then
36+
result.Data.ShouldBe(artifactResource.Data);
37+
result.DownloadUrl.ShouldBe(artifactResource.DownloadUrl);
38+
result.Url.ShouldBe(artifactResource.Url);
39+
result.Type.ShouldBe(AzurePipelinesArtifactType.FilePath);
40+
result.Properties.Count.ShouldBe(1);
41+
result.Properties.Single().Key.ShouldBe(artifactResource.Properties.Single().Key);
42+
result.Properties.Single().Value.ShouldBe(artifactResource.Properties.Single().Value);
43+
}
44+
45+
[Theory]
46+
[InlineData("container", AzurePipelinesArtifactType.Container)]
47+
[InlineData("Container", AzurePipelinesArtifactType.Container)]
48+
[InlineData("FilePath", AzurePipelinesArtifactType.FilePath)]
49+
[InlineData("filepath", AzurePipelinesArtifactType.FilePath)]
50+
[InlineData("GitRef", AzurePipelinesArtifactType.GitRef)]
51+
[InlineData("gitref", AzurePipelinesArtifactType.GitRef)]
52+
[InlineData("TFVCLabel", AzurePipelinesArtifactType.TFVCLabel)]
53+
[InlineData("tfvclabel", AzurePipelinesArtifactType.TFVCLabel)]
54+
[InlineData("VersionControl", AzurePipelinesArtifactType.VersionControl)]
55+
[InlineData("versioncontrol", AzurePipelinesArtifactType.VersionControl)]
56+
57+
public void Should_Return_The_Correct_AzureDevOpsArtifactResource_Type_EnumValue_Independent_The_ArtifactResource_Type_String_Casing(string typeString, AzurePipelinesArtifactType expectedResult)
58+
{
59+
// Given
60+
var artifactResource = new ArtifactResource()
61+
{
62+
Type = typeString,
63+
};
64+
65+
// When
66+
var result = artifactResource.ToAzureDevOpsArtifactResource();
67+
68+
// Then
69+
result.Type.ShouldBe(expectedResult);
70+
}
71+
}
72+
}
73+
}

src/Cake.AzureDevOps/Pipelines/ArtifactResourceExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public static AzureDevOpsArtifactResource ToAzureDevOpsArtifactResource(this Art
1818
{
1919
artifactResource.NotNull(nameof(artifactResource));
2020

21-
if (!Enum.TryParse(artifactResource.Type, out AzurePipelinesArtifactType type))
21+
if (!Enum.TryParse(artifactResource.Type, true, out AzurePipelinesArtifactType type))
2222
{
2323
throw new InvalidOperationException($"Unexpected value for artifact type '{artifactResource.Type}'");
2424
}

0 commit comments

Comments
 (0)