2021-11-21 05:54:30 +00:00
|
|
|
|
using NUnit.Framework;
|
2025-02-22 14:32:26 +00:00
|
|
|
|
using NUnit.Framework.Legacy;
|
2021-11-21 05:54:30 +00:00
|
|
|
|
using Flow.Launcher.Core.Plugin;
|
|
|
|
|
|
using Flow.Launcher.Plugin;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Flow.Launcher.Test
|
|
|
|
|
|
{
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
|
class PluginLoadTest
|
|
|
|
|
|
{
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
public void GivenDuplicatePluginMetadatasWhenLoadedThenShouldReturnOnlyUniqueList()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Given
|
|
|
|
|
|
var duplicateList = new List<PluginMetadata>
|
|
|
|
|
|
{
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B4085823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B4085823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.1"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B4085823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.2"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B4085823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B4085823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
2021-11-21 06:16:46 +00:00
|
|
|
|
ID = "ABC0TYUC6D3B7855823D60DC76F28855",
|
2021-11-21 05:54:30 +00:00
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
2021-11-21 06:16:46 +00:00
|
|
|
|
ID = "ABC0TYUC6D3B7855823D60DC76F28855",
|
2021-11-21 05:54:30 +00:00
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// When
|
|
|
|
|
|
(var unique, var duplicates) = PluginConfig.GetUniqueLatestPluginMetadata(duplicateList);
|
|
|
|
|
|
|
|
|
|
|
|
// Then
|
2025-02-22 14:32:26 +00:00
|
|
|
|
ClassicAssert.True(unique.FirstOrDefault().ID == "CEA0TYUC6D3B4085823D60DC76F28855" && unique.FirstOrDefault().Version == "1.0.2");
|
|
|
|
|
|
ClassicAssert.True(unique.Count == 1);
|
2021-11-21 05:54:30 +00:00
|
|
|
|
|
2025-02-22 14:32:26 +00:00
|
|
|
|
ClassicAssert.False(duplicates.Any(x => x.Version == "1.0.2" && x.ID == "CEA0TYUC6D3B4085823D60DC76F28855"));
|
|
|
|
|
|
ClassicAssert.True(duplicates.Count == 6);
|
2021-11-21 05:54:30 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
public void GivenDuplicatePluginMetadatasWithNoUniquePluginWhenLoadedThenShouldReturnEmptyList()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Given
|
|
|
|
|
|
var duplicateList = new List<PluginMetadata>
|
|
|
|
|
|
{
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B7855823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
},
|
2025-02-22 14:32:26 +00:00
|
|
|
|
new()
|
2021-11-21 05:54:30 +00:00
|
|
|
|
{
|
|
|
|
|
|
ID = "CEA0TYUC6D3B7855823D60DC76F28855",
|
|
|
|
|
|
Version = "1.0.0"
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// When
|
|
|
|
|
|
(var unique, var duplicates) = PluginConfig.GetUniqueLatestPluginMetadata(duplicateList);
|
|
|
|
|
|
|
|
|
|
|
|
// Then
|
2025-02-22 14:32:26 +00:00
|
|
|
|
ClassicAssert.True(unique.Count == 0);
|
|
|
|
|
|
ClassicAssert.True(duplicates.Count == 2);
|
2021-11-21 05:54:30 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|