public long CreateNewAudioVersion(long audioId, CreateAudioContract data, Stream stream) { var userId = m_authenticationManager.GetCurrentUserId(); var resultVersionId = new CreateNewAudioResourceVersionWork(m_resourceRepository, m_fileSystemManager, audioId, data, stream, userId).Execute(); return(resultVersionId); }
public void TestNewAudioVersion() { var repository = new MockResourceRepository(); var fileSystemManager = new MockFileSystemManager(); var resourceId = 2; var userId = 3; var data = new CreateAudioContract { FileName = "test-audio.ogg", Comment = string.Empty, OriginalVersionId = 1, ResourceTrackId = 30, Duration = new TimeSpan(0, 3, 45) }; fileSystemManager.FileInfo = new SaveResourceResult { FileNameId = "file-id", FileSize = 8192, }; try { new CreateNewAudioResourceVersionWork(repository, fileSystemManager, resourceId, data, Stream.Null, userId).Execute(); Assert.Fail("Create new AudioResouce should fail, because version conflict"); } catch (MainServiceException e) { Assert.AreEqual(HttpStatusCode.Conflict, e.StatusCode); } var latestAudio = repository.GetLatestResourceVersion <AudioResource>(resourceId); data.OriginalVersionId = latestAudio.Id; // No conflict ID var work = new CreateNewAudioResourceVersionWork(repository, fileSystemManager, resourceId, data, Stream.Null, userId); work.Execute(); Assert.AreEqual(1, repository.CreatedObjects.Count); Assert.AreEqual(1, repository.UpdatedObjects.Count); Assert.AreSame(repository.CreatedObjects.First(), repository.UpdatedObjects.First()); var newAudioResource = repository.CreatedObjects.OfType <AudioResource>().First(); Assert.AreEqual(latestAudio.VersionNumber + 1, newAudioResource.VersionNumber); Assert.AreEqual("audio/ogg", newAudioResource.MimeType); Assert.AreEqual(AudioTypeEnum.Ogg, newAudioResource.AudioType); Assert.AreEqual(latestAudio.Resource.Id, newAudioResource.Resource.Id); Assert.AreEqual(userId, newAudioResource.CreatedByUser.Id); Assert.AreEqual(data.ResourceTrackId, newAudioResource.ResourceTrack.Id); }