Ejemplo n.º 1
0
		public void DontCopyIfSourceIsTargetFile ()
		{
			var photo = PhotoMock.Create (targetUri);
			var fileSystem = new FileSystemMock ();
			var tracker = new PhotoFileTracker (fileSystem);

			tracker.CopyIfNeeded (photo, targetBase);

			Assert.AreEqual (0, tracker.OriginalFiles.Count ());
			Assert.AreEqual (0, tracker.CopiedFiles.Count ());
			Assert.AreEqual (targetUri, photo.DefaultVersion.Uri);
			fileSystem.FileMock.Verify (f => f.Copy (It. IsAny<SafeUri> (), It.IsAny<SafeUri> (), It.IsAny<bool> ()), Times.Never);
		}
Ejemplo n.º 2
0
        public void CopyNewFile()
        {
            var photo      = PhotoMock.Create(sourceUri);
            var fileSystem = new FileSystemMock();
            var tracker    = new PhotoFileTracker(fileSystem);

            tracker.CopyIfNeeded(photo, targetBase);

            CollectionAssert.AreEquivalent(new[] { sourceUri }, tracker.OriginalFiles);
            CollectionAssert.AreEquivalent(new[] { targetUri }, tracker.CopiedFiles);
            Assert.AreEqual(targetUri, photo.DefaultVersion.Uri);
            fileSystem.FileMock.Verify(f => f.Copy(sourceUri, targetUri, false), Times.Once);
        }
Ejemplo n.º 3
0
        public void DontCopyIfSourceIsTargetFile()
        {
            var photo      = PhotoMock.Create(targetUri);
            var fileSystem = new FileSystemMock();
            var tracker    = new PhotoFileTracker(fileSystem);

            tracker.CopyIfNeeded(photo, targetBase);

            Assert.AreEqual(0, tracker.OriginalFiles.Count());
            Assert.AreEqual(0, tracker.CopiedFiles.Count());
            Assert.AreEqual(targetUri, photo.DefaultVersion.Uri);
            fileSystem.FileMock.Verify(f => f.Copy(It.IsAny <SafeUri> (), It.IsAny <SafeUri> (), It.IsAny <bool> ()), Times.Never);
        }
Ejemplo n.º 4
0
        public void PhotoWithVersionsAndXmpIsCopied()
        {
            var photo      = PhotoMock.Create(sourceUri, rawUri);
            var fileSystem = new FileSystemMock(xmpSourceUri);
            var tracker    = new PhotoFileTracker(fileSystem);

            tracker.CopyIfNeeded(photo, targetBase);

            CollectionAssert.AreEquivalent(new[] { sourceUri, rawUri, xmpSourceUri }, tracker.OriginalFiles);
            CollectionAssert.AreEquivalent(new[] { targetUri, targetRawUri, xmpTargetUri }, tracker.CopiedFiles);
            Assert.AreEqual(targetUri, photo.DefaultVersion.Uri);
            Assert.AreEqual(targetRawUri, photo.Versions.ElementAt(1).Uri);
            fileSystem.FileMock.Verify(f => f.Copy(sourceUri, targetUri, false), Times.Once);
            fileSystem.FileMock.Verify(f => f.Copy(rawUri, targetRawUri, false), Times.Once);
            fileSystem.FileMock.Verify(f => f.Copy(xmpSourceUri, xmpTargetUri, true), Times.Once);
        }
Ejemplo n.º 5
0
        void ImportPhoto(IPhoto item, DbItem roll)
        {
            if (item is IInvalidPhotoCheck && (item as IInvalidPhotoCheck).IsInvalid)
            {
                throw new Exception("Failed to parse metadata, probably not a photo");
            }

            // Do duplicate detection
            if (DuplicateDetect && store.HasDuplicate(item))
            {
                return;
            }

            if (CopyFiles)
            {
                var destinationBase = FindImportDestination(item, Global.PhotoUri);
                EnsureDirectory(destinationBase);
                // Copy into photo folder.
                photo_file_tracker.CopyIfNeeded(item, destinationBase);
            }

            // Import photo
            var photo = store.CreateFrom(item, false, roll.Id);

            bool needs_commit = false;

            // Add tags
            if (attach_tags.Count > 0)
            {
                photo.AddTag(attach_tags);
                needs_commit = true;
            }

            // Import XMP metadata
            needs_commit |= metadata_importer.Import(photo, item);

            if (needs_commit)
            {
                store.Commit(photo);
            }

            // Prepare thumbnail (Import is I/O bound anyway)
            ThumbnailLoader.Default.Request(item.DefaultVersion.Uri, ThumbnailSize.Large, 10);

            imported_photos.Add(photo.Id);
        }
Ejemplo n.º 6
0
		public void XmpIsCopiedIfItExists ()
		{
			var photo = PhotoMock.Create (sourceUri);
			var fileSystem = new FileSystemMock (xmpSourceUri);
			var tracker = new PhotoFileTracker (fileSystem);

			tracker.CopyIfNeeded (photo, targetBase);

			CollectionAssert.AreEquivalent (new[]{ sourceUri, xmpSourceUri }, tracker.OriginalFiles);
			CollectionAssert.AreEquivalent (new[]{ targetUri, xmpTargetUri }, tracker.CopiedFiles);
			Assert.AreEqual (targetUri, photo.DefaultVersion.Uri);
			fileSystem.FileMock.Verify (f => f.Copy (sourceUri, targetUri, false), Times.Once);
			fileSystem.FileMock.Verify (f => f.Copy (xmpSourceUri, xmpTargetUri, true), Times.Once);
		}
Ejemplo n.º 7
0
		public void FilesAreRenamedToNextFreeIndex ()
		{
			var photo = PhotoMock.Create (sourceUri, rawUri);
			var fileSystem = new FileSystemMock (
				xmpSourceUri,
				targetUri, targetUri1,
				targetRawUri, targetRawUri1, targetRawUri2, targetRawUri4);
			var tracker = new PhotoFileTracker (fileSystem);

			tracker.CopyIfNeeded (photo, targetBase);

			CollectionAssert.AreEquivalent (new[]{ sourceUri, rawUri, xmpSourceUri }, tracker.OriginalFiles);
			CollectionAssert.AreEquivalent (new[]{ targetUri2, targetRawUri3, xmpTargetUri2 }, tracker.CopiedFiles);
			Assert.AreEqual (targetUri2, photo.DefaultVersion.Uri);
			Assert.AreEqual (targetRawUri3, photo.Versions.ElementAt(1).Uri);
			fileSystem.FileMock.Verify (f => f.Copy (sourceUri, targetUri2, false), Times.Once);
			fileSystem.FileMock.Verify (f => f.Copy (rawUri, targetRawUri3, false), Times.Once);
			fileSystem.FileMock.Verify (f => f.Copy (xmpSourceUri, xmpTargetUri2, true), Times.Once);
		}