public async Task should_remove_handle_previous_document()
        {
            CreateDocument(1, "handle_bis", TestConfig.PathToDocumentPng);
            CreateDocument(2, "handle_bis", TestConfig.PathToDocumentPdf);
            await _projections.UpdateAndWait();

            var old_handle_bis_document = _documentReader.FindOneById(new DocumentDescriptorId(1));

            Assert.IsNull(old_handle_bis_document);

            var new_handle_bis_document = _documentReader.FindOneById(new DocumentDescriptorId(2));

            Assert.NotNull(new_handle_bis_document);
        }
        public void On(DocumentLinked e)
        {
            var doc = _documentDescriptorReadModel.FindOneById(e.DocumentId);

            if (doc == null)
            {
                Logger.InfoFormat("Document {0} is linked to document descriptor {1} that was not found. Probably the document descriptor was de-duplicated.", e.AggregateId, e.DocumentId);
                return;
            }
            if (!doc.Created)
            {
                return;               //Still not deduplicated.
            }
            var handle = _documentWriter.FindOneById(e.Handle);

            foreach (var format in doc.Formats)
            {
                var descriptor = _blobStore.GetDescriptor(format.Value.BlobId);
                _streamReadModelCollection.Insert(e, new StreamReadModel()
                {
                    Id                   = GetNewId(),
                    Handle               = e.Handle,
                    Filename             = descriptor.FileNameWithExtension,
                    DocumentDescriptorId = e.DocumentId,
                    FormatInfo           = new FormatInfo()
                    {
                        BlobId         = format.Value.BlobId,
                        DocumentFormat = format.Key,
                        PipelineId     = format.Value.PipelineId != PipelineId.Null
                            ? format.Value.PipelineId
                            : new PipelineId("original"),
                    },
                    EventType          = HandleStreamEventTypes.DocumentHasNewFormat,
                    DocumentCustomData = handle.CustomData,
                });
            }
        }
        public void SetUp()
        {
            _collectionWrapper = Substitute.For <ICollectionWrapper <StreamReadModel, Int64> >();
            rmStream           = new List <StreamReadModel>();
            rmDocuments        = new List <DocumentDescriptorReadModel>();

            _collectionWrapper.When(r => r.Insert(
                                        Arg.Any <DomainEvent>(),
                                        Arg.Any <StreamReadModel>()))
            .Do(cinfo => rmStream.Add((StreamReadModel)cinfo.Args()[1]));
            _collectionWrapper.All.Returns(rmStream.AsQueryable());

            _readerDocumentReadModel = Substitute.For <IReader <DocumentDescriptorReadModel, DocumentDescriptorId> >();
            _readerDocumentReadModel.AllUnsorted.Returns(rmDocuments.AsQueryable());
            _readerDocumentReadModel.AllSortedById.Returns(rmDocuments.AsQueryable().OrderBy(r => r.Id));
            _readerDocumentReadModel.FindOneById(Arg.Any <DocumentDescriptorId>())
            .Returns(cinfo => rmDocuments.SingleOrDefault(d => d.Id == (DocumentDescriptorId)cinfo.Args()[0]));

            _handleWriter = Substitute.For <IDocumentWriter>();
            _blobStore    = Substitute.For <IBlobStore>();
        }
        public void SetUp()
        {
            _collectionWrapper = Substitute.For<ICollectionWrapper<StreamReadModel, Int64>>();
            rmStream = new List<StreamReadModel>();
            rmDocuments = new List<DocumentDescriptorReadModel>();

            _collectionWrapper.When(r => r.Insert(
                Arg.Any<DomainEvent>(),
                Arg.Any<StreamReadModel>()))
                .Do(cinfo => rmStream.Add((StreamReadModel)cinfo.Args()[1]));
            _collectionWrapper.All.Returns(rmStream.AsQueryable());

            _readerDocumentReadModel = Substitute.For<IReader<DocumentDescriptorReadModel, DocumentDescriptorId>>();
            _readerDocumentReadModel.AllUnsorted.Returns(rmDocuments.AsQueryable());
            _readerDocumentReadModel.AllSortedById.Returns(rmDocuments.AsQueryable().OrderBy(r => r.Id));
            _readerDocumentReadModel.FindOneById(Arg.Any<DocumentDescriptorId>())
                .Returns(cinfo => rmDocuments.SingleOrDefault(d => d.Id == (DocumentDescriptorId)cinfo.Args()[0]));

            _handleWriter = Substitute.For<IDocumentWriter>();
            _blobStore = Substitute.For<IBlobStore>();
        }