public void SavePlaybackConfiguration_WithNullPlaybackRecordingRecordingsToRunIfFail_ThrowsException()
        {
            // Arrange
            var config = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            config.Recordings.First().RecordingsToRunIfFail = null;

            // Act
            _service.SavePlaybackConfiguration(config);
        }
        public void SavePlaybackConfiguration_WithNullRecordings_ThrowsException()
        {
            // Arrange
            var config = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            config.Recordings = null;

            // Act
            _service.SavePlaybackConfiguration(config);
        }
        public void SavePlaybackConfiguration_WithNullFilePath_ThrowsException()
        {
            // Arrange
            var config = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            config.FilePath = null;

            // Act
            _service.SavePlaybackConfiguration(config);
        }
        public void GetRecording_WithInvalidFileContents_ThrowsException()
        {
            // Arrange
            var fakeConfiguration     = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();
            var fakeConfigurationJson = JsonConvert.SerializeObject(fakeConfiguration);

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

            // Act
            _service.GetRecording(fakeConfiguration.FilePath);
        }
        public void SavePlaybackConfiguration_WithoutExistingFile_SavesFile()
        {
            // Arrange
            var config = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            // Act
            _service.SavePlaybackConfiguration(config);

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

            // Assert
            Assert.IsTrue(!string.IsNullOrEmpty(fileData));
        }
        public void GetPlaybackConfiguration_WithMissingRecordings_ThrowsException()
        {
            // Arrange
            var fakeConfiguration = FakePlaybackConfigurations.CreateFakePlaybackConfiguration();

            fakeConfiguration.Recordings = 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 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);
        }