unit tests

This commit is contained in:
John Andrews
2024-08-28 07:43:18 +12:00
parent 5266891e9d
commit d7136cedcd
2 changed files with 57 additions and 21 deletions
+7 -1
View File
@@ -67,7 +67,7 @@ public class EmbyUpdater: Node
string url = serverUrl;
if (url.EndsWith("/") == false)
if (url.EndsWith('/') == false)
url += "/";
url += "Library/Media/Updated";
@@ -119,5 +119,11 @@ public class EmbyUpdater: Node
}
return _GetWebRequest;
}
#if(DEBUG)
set
{
_GetWebRequest = value;
}
#endif
}
}
+50 -20
View File
@@ -9,43 +9,73 @@ namespace FileFlows.Emby.Tests;
[TestClass]
public class EmbyTests : TestBase
{
private NodeParameters Args = null!;
private EmbyUpdater element = null!;
protected override void TestStarting()
{
Args = GetNodeParameters(TempFile);
Args.GetPluginSettingsJson = _ => string.Empty;
element = new EmbyUpdater();
element.ServerUrl = "http://emby.test/";
element.AccessToken = "access-token";
element.GetWebRequest = (client, url, accessToken, json)
=> (true, "test");
}
[TestMethod]
public void Emby_Basic()
{
var args = new NodeParameters(@"/media/movies/Citizen Kane (1941)/Citizen Kane (1941).mp4", Logger, false, string.Empty, new LocalFileService());
args.GetPluginSettingsJson = (string input) =>
{
return File.ReadAllText("../../../settings.json");
};
var node = new EmbyUpdater();
Assert.AreEqual(1, node.Execute(args));
Assert.AreEqual(1, element.Execute(Args));
}
[TestMethod]
public void Emby_Fail()
{
var args = new NodeParameters(@"/media/unknownmovies/The Batman (2022)/The Batman.mkv", Logger, false, string.Empty, new LocalFileService());
args.GetPluginSettingsJson = (string input) =>
{
return File.ReadAllText("../../../settings.invalid.json");
};
element.GetWebRequest = (client, url, accessToken, json)
=> (false, "cant reach");
var node = new EmbyUpdater();
Assert.AreEqual(2, node.Execute(args));
Assert.AreEqual(2, element.Execute(Args));
}
[TestMethod]
public void Emby_Mapped()
{
var args = new NodeParameters(@"/mnt/movies/Citizen Kane (1941)/Citizen Kane (1941).mp4", Logger, false, string.Empty, new LocalFileService());
args.GetPluginSettingsJson = (string input) =>
element.Mapping = new List<KeyValuePair<string, string>>()
{
return File.ReadAllText("../../../settings.json");
new(TempPath, "/mapped")
};
var node = new EmbyUpdater();
Assert.AreEqual(1, node.Execute(args));
element.GetWebRequest = (client, url, accessToken, json) =>
{
var payload = System.Text.Json.JsonSerializer.Deserialize<EmbyPayload>(json);
bool success = payload!.Updates[0].Path.StartsWith("/mapped");
return (success, "mapped");
};
Assert.AreEqual(1, element.Execute(Args));
}
/// <summary>
/// The emby payload
/// </summary>
internal class EmbyPayload
{
/// <summary>
/// Gets or sets the emby payload updates
/// </summary>
public EmbyUpdate[] Updates { get; set; } = null!;
}
/// <summary>
/// A emby update
/// </summary>
internal class EmbyUpdate
{
/// <summary>
/// Gets or stees the path that is updated
/// </summary>
public string Path { get; set; } = null!;
}
}