public SilkveilContainerTests()
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.Register(typeof(IContainerBinder), typeof(ContainerBinder));
            containerBuilder.Register(typeof(IRequestListener), typeof(DownloadRequestListener));
            containerBuilder.Register(typeof(IRequestListener), typeof(RedirectRequestListener));
            containerBuilder.Register(typeof(IMappingResolver <IDownloadMapping>), typeof(DownloadMappingResolver));
            containerBuilder.Register(typeof(IMappingResolver <IRedirectMapping>), typeof(RedirectMappingResolver));
            containerBuilder.Register <IMappingProvider <IDownloadMapping> >(
                c =>
            {
                var downloadMappingProvider = new DownloadMappingProvider(c);
                downloadMappingProvider.Initialize();
                return(downloadMappingProvider);
            });
            containerBuilder.Register <IMappingProvider <IRedirectMapping> >(
                c =>
            {
                var redirectMappingProvider = new RedirectMappingProvider(c);
                redirectMappingProvider.Initialize();
                return(redirectMappingProvider);
            });
            containerBuilder.Register(typeof(IContentSource), typeof(HttpContentSource));
            containerBuilder.Register(typeof(IContentSource), typeof(FileContentSource));
            containerBuilder.Register(typeof(IStreamSplitter), typeof(StreamSplitter));
            containerBuilder.Register(typeof(IHttpStreamFactory), typeof(HttpStreamFactory));
            containerBuilder.Register(typeof(ISilkveilContainer), typeof(SilkveilContainer));

            containerBuilder.Register(typeof(IDownloadMapping), typeof(DownloadMapping));
            containerBuilder.Register(typeof(IRedirectMapping), typeof(RedirectMapping));

            this._container = containerBuilder.Build();
        }
        public void Update()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping         =
                new DownloadMapping
            {
                Guid = Guid.NewGuid(),
                Uri  = new Uri("http://www.google.de")
            };

            int count = 0;

            downloadMappingProvider.MappingAvailable += d =>
            {
                Assert.That(d.Uri, Is.EqualTo(downloadMapping.Uri));
                count++;
            };

            downloadMappingProvider.Create(downloadMapping);

            downloadMapping.Uri = new Uri("http://www.silkveil.net");
            downloadMappingProvider.Update(downloadMapping);
            downloadMappingProvider.ReadById(downloadMapping.Guid);

            Assert.That(count, Is.EqualTo(1));
        }
        public void DeleteNonExistentMapping()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            Assert.That(() => downloadMappingProvider.Delete(Guid.NewGuid()),
                        Throws.Exception.TypeOf(typeof(MappingNotFoundException)));
        }
        public void ReadAllReturnsNonEmptyCollectionAfterCreate()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping         =
                new DownloadMapping
            {
                Guid = Guid.NewGuid(),
                Uri  = new Uri("http://www.silkveil.net")
            };

            int count = 0;

            downloadMappingProvider.MappingsAvailable += d =>
            {
                Assert.That(d, Is.InstanceOf(typeof(IEnumerable <IDownloadMapping>)));
                Assert.That(d.Count(), Is.EqualTo(1));

                Assert.That(d.First().Guid, Is.EqualTo(downloadMapping.Guid));
                Assert.That(d.First().Uri, Is.EqualTo(downloadMapping.Uri));

                count++;
            };

            downloadMappingProvider.Create(downloadMapping);
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public SilkveilContainerTests()
        {
            var containerBuilder = new ContainerBuilder();
            containerBuilder.Register(typeof(IContainerBinder), typeof(ContainerBinder));
            containerBuilder.Register(typeof(IRequestListener), typeof(DownloadRequestListener));
            containerBuilder.Register(typeof(IRequestListener), typeof(RedirectRequestListener));
            containerBuilder.Register(typeof(IMappingResolver<IDownloadMapping>), typeof(DownloadMappingResolver));
            containerBuilder.Register(typeof(IMappingResolver<IRedirectMapping>), typeof(RedirectMappingResolver));
            containerBuilder.Register<IMappingProvider<IDownloadMapping>>(
                c =>
                {
                    var downloadMappingProvider = new DownloadMappingProvider(c);
                    downloadMappingProvider.Initialize();
                    return downloadMappingProvider;
                });
            containerBuilder.Register<IMappingProvider<IRedirectMapping>>(
                c =>
                {
                    var redirectMappingProvider = new RedirectMappingProvider(c);
                    redirectMappingProvider.Initialize();
                    return redirectMappingProvider;
                });
            containerBuilder.Register(typeof(IContentSource), typeof(HttpContentSource));
            containerBuilder.Register(typeof(IContentSource), typeof(FileContentSource));
            containerBuilder.Register(typeof(IStreamSplitter), typeof(StreamSplitter));
            containerBuilder.Register(typeof(IHttpStreamFactory), typeof(HttpStreamFactory));
            containerBuilder.Register(typeof(ISilkveilContainer), typeof(SilkveilContainer));

            containerBuilder.Register(typeof(IDownloadMapping), typeof(DownloadMapping));
            containerBuilder.Register(typeof(IRedirectMapping), typeof(RedirectMapping));

            this._container = containerBuilder.Build();
        }
        public void UpdateNonExistentMapping()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping         =
                new DownloadMapping
            {
                Guid = Guid.NewGuid(),
                Uri  = new Uri("http://www.silkveil.net")
            };

            Assert.That(() => downloadMappingProvider.Update(downloadMapping),
                        Throws.Exception.TypeOf(typeof(MappingNotFoundException)));
        }
        public void CreateAlreadyExistingItemResultsInException()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping         =
                new DownloadMapping
            {
                Guid = Guid.NewGuid(),
                Uri  = new Uri("http://www.silkveil.net")
            };

            downloadMappingProvider.Create(downloadMapping);

            Assert.That(() => downloadMappingProvider.Create(downloadMapping), Throws.Exception.TypeOf(typeof(DuplicateMappingException)));
        }
        public void CreateAlreadyExistingItemResultsInException()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping =
                new DownloadMapping
                {
                    Guid = Guid.NewGuid(),
                    Uri = new Uri("http://www.silkveil.net")
                };

            downloadMappingProvider.Create(downloadMapping);

            Assert.That(() => downloadMappingProvider.Create(downloadMapping), Throws.Exception.TypeOf(typeof(DuplicateMappingException)));
        }
        public void ReadAllReturnsEmptyCollection()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            int count = 0;

            downloadMappingProvider.MappingsAvailable += d =>
            {
                Assert.That(d, Is.InstanceOf(typeof(IEnumerable <IDownloadMapping>)));
                Assert.That(d.Count(), Is.EqualTo(0));
                count++;
            };

            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void InitializeCreatesMappingForSilkveilWebsite()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            int count = 0;

            downloadMappingProvider.MappingsAvailable += d =>
            {
                Assert.That(d.Count(), Is.EqualTo(1));
                Assert.That(d.First().Guid, Is.EqualTo(Guid.Empty));
                Assert.That(d.First().Uri, Is.EqualTo(new Uri("http://www.silkveil.net")));
                count++;
            };

            downloadMappingProvider.Initialize();
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void DeleteByMapping()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping =
                new DownloadMapping
                {
                    Guid = Guid.NewGuid(),
                    Uri = new Uri("http://www.silkveil.net")
                };

            int count = 0;
            downloadMappingProvider.MappingsAvailable += m =>
            {
                Assert.That(m.Count(), Is.EqualTo(0));
                count++;
            };

            downloadMappingProvider.Create(downloadMapping);
            downloadMappingProvider.Delete(downloadMapping);
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void DeleteByGuid()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping         =
                new DownloadMapping
            {
                Guid = Guid.NewGuid(),
                Uri  = new Uri("http://www.silkveil.net")
            };

            int count = 0;

            downloadMappingProvider.MappingsAvailable += m =>
            {
                Assert.That(m.Count(), Is.EqualTo(0));
                count++;
            };

            downloadMappingProvider.Create(downloadMapping);
            downloadMappingProvider.Delete(downloadMapping.Guid);
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void InitializeCreatesMappingForSilkveilWebsite()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            int count = 0;
            downloadMappingProvider.MappingsAvailable += d =>
                                                     {
                                                         Assert.That(d.Count(), Is.EqualTo(1));
                                                         Assert.That(d.First().Guid, Is.EqualTo(Guid.Empty));
                                                         Assert.That(d.First().Uri, Is.EqualTo(new Uri("http://www.silkveil.net")));
                                                         count++;
                                                     };

            downloadMappingProvider.Initialize();
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void DeleteNonExistentMapping()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            Assert.That(() => downloadMappingProvider.Delete(Guid.NewGuid()),
                        Throws.Exception.TypeOf(typeof(MappingNotFoundException)));
        }
        public void UpdateNonExistentMapping()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping =
                new DownloadMapping
                {
                    Guid = Guid.NewGuid(),
                    Uri = new Uri("http://www.silkveil.net")
                };

            Assert.That(() => downloadMappingProvider.Update(downloadMapping),
                        Throws.Exception.TypeOf(typeof(MappingNotFoundException)));
        }
        public void Update()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping =
                new DownloadMapping
                {
                    Guid = Guid.NewGuid(),
                    Uri = new Uri("http://www.google.de")
                };

            int count = 0;
            downloadMappingProvider.MappingAvailable += d =>
            {
                Assert.That(d.Uri, Is.EqualTo(downloadMapping.Uri));
                count++;
            };

            downloadMappingProvider.Create(downloadMapping);

            downloadMapping.Uri = new Uri("http://www.silkveil.net");
            downloadMappingProvider.Update(downloadMapping);
            downloadMappingProvider.ReadById(downloadMapping.Guid);

            Assert.That(count, Is.EqualTo(1));
        }
        public void ReadAllReturnsNonEmptyCollectionAfterCreate()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);
            var downloadMapping =
                new DownloadMapping
                    {
                        Guid = Guid.NewGuid(),
                        Uri = new Uri("http://www.silkveil.net")
                    };

            int count = 0;
            downloadMappingProvider.MappingsAvailable += d =>
            {
                Assert.That(d, Is.InstanceOf(typeof(IEnumerable<IDownloadMapping>)));
                Assert.That(d.Count(), Is.EqualTo(1));

                Assert.That(d.First().Guid, Is.EqualTo(downloadMapping.Guid));
                Assert.That(d.First().Uri, Is.EqualTo(downloadMapping.Uri));

                count++;
            };

            downloadMappingProvider.Create(downloadMapping);
            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void ReadAllReturnsEmptyCollection()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            int count = 0;
            downloadMappingProvider.MappingsAvailable += d =>
                                                     {
                                                         Assert.That(d, Is.InstanceOf(typeof(IEnumerable<IDownloadMapping>)));
                                                         Assert.That(d.Count(), Is.EqualTo(0));
                                                         count++;
                                                     };

            downloadMappingProvider.ReadAll();

            Assert.That(count, Is.EqualTo(1));
        }
        public void IsRunForTheFirstTime()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            Assert.That(downloadMappingProvider.IsRunForTheFirstTime, Is.EqualTo(true));
        }
        public void IsRunForTheFirstTime()
        {
            var downloadMappingProvider = new DownloadMappingProvider(this._container);

            Assert.That(downloadMappingProvider.IsRunForTheFirstTime, Is.EqualTo(true));
        }