From 1994e92e9e57e1dc234d87591a91e3949e565e9d Mon Sep 17 00:00:00 2001 From: ProfessionalUwU Date: Sun, 18 Jun 2023 17:24:56 +0200 Subject: [PATCH] Minor changes && Add tests Made a seperate method for writing the database access time files Added tests for checkIfDatabasesWereModified --- .../checkIfDatabasesWereModifiedTest.cs | 31 +++++++++++ src/Pacserver/Pacserver.cs | 52 +++++++------------ 2 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 src/Pacserver.Tests/checkIfDatabasesWereModifiedTest.cs diff --git a/src/Pacserver.Tests/checkIfDatabasesWereModifiedTest.cs b/src/Pacserver.Tests/checkIfDatabasesWereModifiedTest.cs new file mode 100644 index 0000000..d4ef46e --- /dev/null +++ b/src/Pacserver.Tests/checkIfDatabasesWereModifiedTest.cs @@ -0,0 +1,31 @@ +using Pacserver.Utils; + +namespace Pacserver.Tests; + +public class checkIfDatabasesWereModifiedTest { + [Fact] + public void checkIfDatabasesWereModified_throwsExceptionIfNoValidModeIsGiven() { + // Arrange + PacserverUtils utils = new PacserverUtils(); + utils.readPacmanConfig(); + + // Act + Action act = () => utils.checkIfDatabasesWereModified("test", "/tmp/test.txt"); + + // Assert + act.Should().Throw().WithMessage("No valid mode was given. Valid modes are before and after"); + } + + [Fact] + public void checkIfDatabasesWereModified_throwsNoExceptionIfValidModeIsGiven() { + // Arrange + PacserverUtils utils = new PacserverUtils(); + utils.readPacmanConfig(); + + // Act + Action act = () => utils.checkIfDatabasesWereModified("before", "/tmp/test.txt"); + + // Assert + act.Should().NotThrow(); + } +} \ No newline at end of file diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs index 7f1155b..985bc11 100644 --- a/src/Pacserver/Pacserver.cs +++ b/src/Pacserver/Pacserver.cs @@ -63,46 +63,32 @@ public class PacserverUtils { public void checkIfDatabasesWereModified(string mode, string filePath) { string[] databases = Directory.GetFiles(pacmanDatabaseDirectory + "sync/"); - // if (mode == "nuke") { - // using (File.Open(filePath, FileMode.Truncate, FileAccess.ReadWrite, FileShare.Delete)) { - // File.Delete(filePath); - // } - // } - foreach (string database in databases) { switch (mode) { case "before": - if (!File.Exists(filePath)) { - using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { - using (StreamWriter sw = new StreamWriter(filePath)) { - sw.WriteLine(database + " " + File.GetLastAccessTime(database)); - } - } - } else if (File.Exists(filePath)) { - using (File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { - using (var sw = new StreamWriter(filePath, true)) { - sw.WriteLine(database + " " + File.GetLastAccessTime(database)); - } - } - } + writeDatabaseAccessTimeToFile(filePath, database); break; case "after": - if (!File.Exists(filePath)) { - using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { - using (StreamWriter sw = new StreamWriter(filePath)) { - sw.WriteLine(database + " " + File.GetLastAccessTime(database)); - } - } - } else if (File.Exists(filePath)) { - using (File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { - using (var sw = new StreamWriter(filePath, true)) { - sw.WriteLine(database + " " + File.GetLastAccessTime(database)); - } - } - } + writeDatabaseAccessTimeToFile(filePath, database); break; default: - throw new ArgumentException("No valid mode was selected"); + throw new ArgumentException("No valid mode was given. Valid modes are before and after"); + } + } + } + + public void writeDatabaseAccessTimeToFile(string filePath, string database) { + if (!File.Exists(filePath)) { + using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { + using (StreamWriter sw = new StreamWriter(filePath)) { + sw.WriteLine(database + " " + File.GetLastAccessTime(database)); + } + } + } else if (File.Exists(filePath)) { + using (File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { + using (var sw = new StreamWriter(filePath, true)) { + sw.WriteLine(database + " " + File.GetLastAccessTime(database)); + } } } }