public async Task UploadedFileRepository_MetadataFileMissing_GetFile_ReturnsNull()
    {
        // Given
        IFileStore fileStore = Substitute.For <IFileStore>();

        fileStore.GetMetadataFile(Arg.Any <FileIdentifier>()).Returns(new NotFoundFileInfo("_"));

        // When
        IUploadedFileRepository testObject    = new UploadedFileRepository(fileStore, null, null, FakeLogger.Get <UploadedFileRepository>());
        UploadedFile            returnedValue = await testObject.GetFile(FileIdentifier.CreateNew());

        // Then
        Assert.That(returnedValue, Is.Null);
    }
    public async Task UploadedFileRepository_Success_ReturnsFileWithMetadata()
    {
        // Given
        IFileStore      fileStore      = Substitute.For <IFileStore>();
        IMetadataReader metadataReader = new MetadataReader(Substitute.For <ILogger <MetadataReader> >());

        var metadataString = (new StoredMetadata {
            OriginalFileName = "TestFile.txt"
        }).Serialize();

        fileStore.GetMetadataFile(Arg.Any <FileIdentifier>()).Returns(new FakeFile(contents: metadataString));

        fileStore.GetDataFile(Arg.Any <FileIdentifier>()).Returns(new FakeFile());

        // When
        IUploadedFileRepository testObject    = new UploadedFileRepository(fileStore, null, metadataReader, FakeLogger.Get <UploadedFileRepository>());
        UploadedFile            returnedValue = await testObject.GetFile(FileIdentifier.CreateNew());

        // Then
        Assert.That(returnedValue.Metadata.OriginalFileName, Is.EqualTo("TestFile.txt"));
    }