public void Heartbeat_DoesNotUpdateCurrentSnapshotAccessTime_WhenSnapshotDoesNotExist()
        {
            _mockStorage.Setup(_ => _.SnapshotExists("Current")).Returns(false);

            using (var purger = new DependencySnapshotPurger(_mockStorage.Object))
            {
                purger.Heartbeat("Current", _mockLogger.Object);
            }

            _mockStorage.Verify(_ => _.SetSnapshotAccessTimeToUtcNow(It.IsAny <string>()), Times.Never);
        }
        public void Heartbeat_Tolerates_FileAccessFailures(Exception exception)
        {
            const string snapshotPath = "FakeSnapshotPath";

            _mockStorage.Setup(_ => _.SnapshotExists(snapshotPath)).Returns(true);
            _mockStorage.Setup(_ => _.SetSnapshotAccessTimeToUtcNow(snapshotPath))
            .Throws(exception);

            using (var purger = new DependencySnapshotPurger(_mockStorage.Object))
            {
                purger.Heartbeat(snapshotPath, _mockLogger.Object);
            }

            _mockLogger.Verify(
                _ => _.Log(
                    false,
                    LogLevel.Warning,
                    It.Is <string>(
                        message => message.Contains(exception.GetType().FullName) &&
                        message.Contains(exception.Message) &&
                        message.Contains(snapshotPath)),
                    null),
                Times.AtLeastOnce);
        }