using SheetMe.Core.Catalog; namespace SheetMe.Core.Tests; /// /// 싸인 이미지 경로 판정 — 파일서버 전송(ActiveX)을 옮기지 않았으므로 /// "받지 않고 찾는" 규칙이 값의 유무를 가른다. DB·파일 없이 검증한다. /// [TestClass] public sealed class SignatureImagePathTests { #region Methods private const string Install = @"C:\MsystechHIS_Ver.2"; private const string Remote = @"C:\Sign\Server\hong.tif"; private static readonly string Cached = @"C:\MsystechHIS_Ver.2\Tmp\DownLoadedFiles\Signature\hong.tif"; [TestMethod] public void 레거시가_받아둔_캐시가_있으면_그것을_쓴다() { var result = SignatureImagePath.Resolve(Remote, Install, p => p == Cached); Assert.AreEqual(SignatureImageOrigin.LegacyCache, result.Origin); Assert.AreEqual(Cached, result.LocalPath); Assert.AreEqual("hong.tif", result.FileName); } [TestMethod] public void 캐시가_없으면_DB_경로_자체를_본다() { var result = SignatureImagePath.Resolve(Remote, Install, p => p == Remote); Assert.AreEqual(SignatureImageOrigin.DirectPath, result.Origin); Assert.AreEqual(Remote, result.LocalPath); } [TestMethod] public void 캐시가_원격보다_먼저다() { // 둘 다 있으면 캐시 — 레거시가 그 폴더에 받아 두고 그 경로를 돌려준다 var result = SignatureImagePath.Resolve(Remote, Install, _ => true); Assert.AreEqual(SignatureImageOrigin.LegacyCache, result.Origin); } [TestMethod] public void 둘_다_없으면_없음이고_파일명은_남는다() { // 파일명은 사유 문구에 쓴다 — "무엇을 못 찾았는지" 를 말할 수 있어야 한다 var result = SignatureImagePath.Resolve(Remote, Install, _ => false); Assert.AreEqual(SignatureImageOrigin.None, result.Origin); Assert.AreEqual(string.Empty, result.LocalPath); Assert.AreEqual("hong.tif", result.FileName); } [TestMethod] public void 경로가_비면_아무것도_찾지_않는다() { var result = SignatureImagePath.Resolve(" ", Install, _ => true); Assert.AreEqual(SignatureImageOrigin.None, result.Origin); Assert.AreEqual(string.Empty, result.FileName); } [TestMethod] public void 설치경로가_없으면_캐시를_보지_않는다() { // 레거시는 설치 경로가 없으면 "\Tmp\..." 라는 루트 상대경로를 만든다 — 그 결함은 안 옮긴다 Assert.AreEqual(string.Empty, SignatureImagePath.CacheFolder(null)); var result = SignatureImagePath.Resolve(Remote, null, p => p == Remote); Assert.AreEqual(SignatureImageOrigin.DirectPath, result.Origin); } [TestMethod] public void UNC_공유_경로도_파일명을_뗀다() { var unc = @"\\fileserver\sign\kim.jpg"; var result = SignatureImagePath.Resolve(unc, Install, p => p == unc); Assert.AreEqual(SignatureImageOrigin.DirectPath, result.Origin); Assert.AreEqual("kim.jpg", result.FileName); } #endregion }