public void SaveRecording_WithNullZones_ThrowsException()
        {
            // Arrange
            var recording = FakeRecordings.CreateFakeRecording();

            recording.Zones = null;

            // Act
            _service.SaveRecording(recording);
        }
        public void GetPlaybackConfiguration_WithInvalidFileContents_ThrowsException()
        {
            // Arrange
            var fakeRecording     = FakeRecordings.CreateFakeRecording();
            var fakeRecordingJson = JsonConvert.SerializeObject(fakeRecording);

            _mockFileSystem.StoredFiles.Add(fakeRecording.FilePath, fakeRecordingJson);

            // Act
            _service.GetPlaybackConfiguration(fakeRecording.FilePath);
        }
        public void SaveRecording_WithoutExistingFile_SavesFile()
        {
            // Arrange
            var recording = FakeRecordings.CreateFakeRecording();

            // Act
            _service.SaveRecording(recording);

            var fileData = _mockFileSystem.StoredFiles[recording.FilePath];

            // Assert
            Assert.IsTrue(!string.IsNullOrEmpty(fileData));
        }
        public void GetRecording_WithNullZones_ThrowsException()
        {
            // Arrange
            var fakeRecording = FakeRecordings.CreateFakeSerializedRecording();

            fakeRecording.Zones = null;
            var fakeRecordingJson = JsonConvert.SerializeObject(fakeRecording);

            _mockFileSystem.StoredFiles.Add(fakeRecording.FilePath, fakeRecordingJson);

            // Act
            _service.GetRecording(fakeRecording.FilePath);
        }
        public void GetRecording_WithNullInternalFilePath_ThrowsException()
        {
            // Arrange
            var fakeRecording  = FakeRecordings.CreateFakeSerializedRecording();
            var filePathBefore = fakeRecording.FilePath;

            fakeRecording.FilePath = null;
            var fakeRecordingJson = JsonConvert.SerializeObject(fakeRecording);

            _mockFileSystem.StoredFiles.Add(filePathBefore, fakeRecordingJson);

            // Act
            _service.GetRecording(filePathBefore);
        }
        public void GetRecording_WithValidRecording_ReturnsRecording()
        {
            // Arrange
            var fakeRecording     = FakeRecordings.CreateFakeSerializedRecording();
            var fakeRecordingJson = JsonConvert.SerializeObject(fakeRecording);

            _mockFileSystem.StoredFiles.Add(fakeRecording.FilePath, fakeRecordingJson);

            // Act
            var returnedRecording = _service.GetRecording(fakeRecording.FilePath);

            // Assert
            Assert.IsNotNull(returnedRecording);
            Assert.IsTrue(returnedRecording.FilePath.Equals(fakeRecording.FilePath));
            Assert.IsTrue(returnedRecording.Zones.Count() == fakeRecording.Zones.Count());
        }
        public void GetPlaybackConfiguration_WithMissingRecordingsToRunIfFail_ThrowsException()
        {
            // Arrange
            var fakeRecording = FakeRecordings.CreateFakeRecording();

            _service.SaveRecording(fakeRecording);

            var fakeConfiguration = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            fakeConfiguration.Recordings.First().RecordingsToRunIfFail = null;
            var fakeConfigJson = JsonConvert.SerializeObject(fakeConfiguration);

            _mockFileSystem.StoredFiles.Add(fakeConfiguration.FilePath, fakeConfigJson);

            // Act
            _service.GetPlaybackConfiguration(fakeConfiguration.FilePath);
        }
        public void GetPlaybackConfiguration_WithValidConfig_ReturnsPlaybackConfiguration()
        {
            // Arrange
            var fakeRecording = FakeRecordings.CreateFakeRecording();

            _service.SaveRecording(fakeRecording);

            var fakeConfiguration = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            _service.SavePlaybackConfiguration(fakeConfiguration);

            // Act
            var returnedConfig = _service.GetPlaybackConfiguration(fakeConfiguration.FilePath);

            // Assert
            Assert.IsNotNull(returnedConfig);
            Assert.IsTrue(returnedConfig.FilePath.Equals(fakeConfiguration.FilePath));
            Assert.IsTrue(returnedConfig.Recordings.Count() == fakeConfiguration.Recordings.Count());
        }
        public void SaveRecording_WithExistingFile_OverwritesFile()
        {
            // Arrange
            var initialRecording = FakeRecordings.CreateFakeSerializedRecording();

            initialRecording.Date = SystemTime.Now().AddDays(-1);
            var initialRecordingJson = JsonConvert.SerializeObject(initialRecording);

            _mockFileSystem.StoredFiles.Add(initialRecording.FilePath, initialRecordingJson);

            var updatedRecording = _service.GetRecording(initialRecording.FilePath);

            updatedRecording.Date = new DateTime(111555666);

            // Act
            _service.SaveRecording(updatedRecording);

            // Assert
            Assert.IsTrue(updatedRecording.Date.Ticks == 111555666);
        }
        public void SavePlaybackConfiguration_WithExistingFile_OverwritesFile()
        {
            // Arrange
            var initialConfig = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            initialConfig.Recordings.First().Order = 111;
            _service.SavePlaybackConfiguration(initialConfig);

            var playbackRecording     = FakeRecordings.CreateFakeSerializedRecording();
            var playbackRecordingJson = JsonConvert.SerializeObject(playbackRecording);

            _mockFileSystem.StoredFiles.Add(playbackRecording.FilePath, playbackRecordingJson);

            var updatedConfig = _service.GetPlaybackConfiguration(initialConfig.FilePath);

            updatedConfig.Recordings.First().Order = 999;

            // Act
            _service.SavePlaybackConfiguration(updatedConfig);

            // Assert
            Assert.IsTrue(updatedConfig.Recordings.First().Order == 999);
        }