public void ValidGuid()
        {
            var guid = Guid.NewGuid();
            var downloadMappingResolver = new DownloadMappingResolver();

            int count = 0;
            downloadMappingResolver.MappingResolved += m =>
            {
                Assert.That(m.Guid, Is.EqualTo(guid));
                Assert.That(m.Uri, Is.EqualTo(new Uri("http://www.silkveil.net")));
                count++;
            };

            downloadMappingResolver.RequestMapping +=
                g =>
                    {
                        var mapping = new DownloadMapping
                                          {
                                              Guid = guid,
                                              Uri = new Uri("http://www.silkveil.net")
                                          };
                        downloadMappingResolver.RequestedMappingAvailable(mapping);
                    };

            downloadMappingResolver.ResolveGuid(guid);

            Assert.That(count, Is.EqualTo(1));
        }
        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 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 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));
        }