public void TestAddComic()
        {
            Comic comic1 = new Comic("De legende van het Westen", new Series("Lucky Luke"), 73, new List <Author>()
            {
                new Author("Morris"), new Author("Nordmann Patrick")
            }, new Publisher("Dupuis"));
            Comic comic2 = new Comic("Oklahoma Jim", new Series("Lucky Luke"), 69, new List <Author>()
            {
                new Author("Léturgie Jean"), new Author("Morris"), new Author("Conrad Didier"), new Author("Pearce")
            }, new Publisher("Dupuis"));
            ComicRepository cr = new ComicRepository(context);

            cr.AddComic(comic1);
            cr.AddComic(comic2);
            var result = cr.GetComics();

            result.Should().HaveCount(2);
            result.First().Title.Should().Be("De legende van het Westen");
            result.First().Series.Name.Should().Be("Lucky Luke");
            result.First().SeriesNumber.Should().Be(73);
            result.First().Publisher.Name.Should().Be("Dupuis");
            result.First().Authors.Should().HaveCount(2);
            result.First().Authors.First().Name.Should().Be("Morris");
            result.First().Authors.ElementAt(1).Name.Should().Be("Nordmann Patrick");

            result.ElementAt(1).Title.Should().Be("Oklahoma Jim");
            result.ElementAt(1).Series.Name.Should().Be("Lucky Luke");
            result.ElementAt(1).SeriesNumber.Should().Be(69);
            result.ElementAt(1).Publisher.Name.Should().Be("Dupuis");
            result.ElementAt(1).Authors.Should().HaveCount(4);
            result.ElementAt(1).Authors.First().Name.Should().Be("Léturgie Jean");
            result.ElementAt(1).Authors.ElementAt(3).Name.Should().Be("Pearce");
            context.Dispose();
        }
        public void VerifyRepoSavesComicTitles()
        {
            // Setup
            ComicRepository   cr        = new ComicRepository();
            List <ComicTitle> comicList = new List <ComicTitle>();

            cr.DeleteAllSubscriptions();

            // Arrange
            for (var i = 0; i < 5; i++)
            {
                comicList.Add(new ComicTitle
                {
                    Name    = "TestTitle" + i,
                    Url     = "TestUrl" + i,
                    IconUrl = "TestIconUrl" + i
                });
            }

            // Act
            cr.SaveSubscription(comicList[0]);
            List <ComicTitle> comicTitlesFromStorage = cr.GetSubscriptionList();

            // Assert
            Assert.AreEqual(comicList[0].Name, comicTitlesFromStorage[0].Name);
        }
        public async Task Test_No_Next_Comic_When_Current_Is_Last()
        {
            //Arrange
            int mockId       = 1000;
            int?nextValidId  = null;
            var mockComicApi = new Mock <IXKCDApi>();

            mockComicApi.Setup(api => api.GetFirstComicId())
            .ReturnsAsync(GetValidMockedFirstComicId());
            mockComicApi.Setup(api => api.GetComicOfTheDay())
            .ReturnsAsync(GetValidMockedComicOfTheDay());
            mockComicApi.Setup(api => api.GetComicById(nextValidId ?? default))
            .ReturnsAsync(GetInvalidComic());

            var comicRepository = new ComicRepository(mockComicApi.Object);

            //Act
            var result = await comicRepository.GetNextComicId(mockId);

            var nextComic = await comicRepository.GetComicById(nextValidId ?? default);

            var lastComicId = await comicRepository.GetLastComicId();

            //Assert
            Assert.Null(result);
            Assert.Equal(nextValidId, result);
            Assert.Null(nextComic);
            Assert.Equal(lastComicId, mockId);
        }
Пример #4
0
        public TitlePage()
        {
            InitializeComponent();

            ComicRepository   cr = new ComicRepository();
            List <ComicTitle> subscriptions;

            _comicParser = new ComicParserService();

            hideComicsButton.IsVisible = false;
            comicsTitles.IsVisible     = false;

            // get user subscriptions
            subscriptions = cr.GetSubscriptionList();
            if (subscriptions == null)
            {
                subscriptions = new List <ComicTitle>();
            }
            comicTitles = _comicParser.GetComicTitles();
            if (comicTitles == null)
            {
                comicTitles = new List <ComicTitle>();
            }

            // get subscribed comics
            subscribedComicTitles = new ObservableCollection <ComicTitle>(subscriptions);
            UpdateDataBinding();
        }
Пример #5
0
        private void UpdateDataBinding()
        {
            ComicRepository cr = new ComicRepository();

            subscribredComicTitles.ItemsSource = cr.GetSubscriptionList();

            comicsTitles.ItemsSource = comicTitles
                                       .Where(ct => !subscribedComicTitles.Any(s => s.Name == ct.Name));
        }
Пример #6
0
        void OnUnsubbedComicTapped(object sender, ItemTappedEventArgs e)
        {
            var             comicTitle = e.Item as ComicTitle;
            ComicRepository cr         = new ComicRepository();

            cr.SaveSubscription(comicTitle);
            UpdateDataBinding();

            Device.BeginInvokeOnMainThread(() =>
            {
                DisplayAlert("Success", $"{comicTitle.Name} has been added!", "OK");
            });
        }
Пример #7
0
        void OnDeleteClicked(object sender, EventArgs args)
        {
            var button     = sender as Button;
            var comicTitle = button.Parent.BindingContext as ComicTitle;

            ComicRepository cr = new ComicRepository();

            cr.DeleteSubscription(comicTitle);
            subscribedComicTitles = new ObservableCollection <ComicTitle>(cr.GetSubscriptionList());

            comicsTitles.ItemsSource = comicTitles
                                       .Where(ct => !subscribedComicTitles.Any(s => s.ComicTitleId == ct.ComicTitleId));

            UpdateDataBinding();
        }
        public void TestUpdateSeries()
        {
            ComicRepository cr             = new ComicRepository(context);
            Series          seriestoUpdate = new Series("series1");
            Series          updated        = new Series("series2");

            cr.AddSeries(seriestoUpdate);
            var result1 = cr.GetAllSeries();

            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("series1");
            cr.UpdateSeries(seriestoUpdate, updated);
            result1 = cr.GetAllSeries();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("series2");
            context.Dispose();
        }
        public void TestUpdatePubliher()
        {
            ComicRepository cr = new ComicRepository(context);
            Publisher       publishertoUpdate = new Publisher("publisher1");
            Publisher       updated           = new Publisher("publisher2");

            cr.AddPublisher(publishertoUpdate);

            var result1 = cr.GetAllPublishers();

            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("publisher1");
            cr.UpdatePublisher(publishertoUpdate, updated);
            result1 = cr.GetAllPublishers();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("publisher2");
            context.Dispose();
        }
        /// <summary>
        /// Makes a UnitOfWork that establishes a connection the the database.
        /// </summary>
        /// <param name="db">Which database to use, defult is production.</param>
        public UnitOfWork(string db = "Production")
        {
            context = new AdoNetContext(true, db);
            if (Comics == null)
            {
                Comics = new ComicRepository(context);
            }

            if (Orders == null)
            {
                Orders = new OrderRepository(context);
            }

            if (Deliveries == null)
            {
                Deliveries = new DeliveryRepository(context);
            }
        }
        public void TestUpdateAuthor()
        {
            ComicRepository cr             = new ComicRepository(context);
            Author          authortoUpdate = new Author("author1");
            Author          updated        = new Author("author2");

            cr.AddAuthor(authortoUpdate);
            var result1 = cr.GetAllAuthors();

            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("author1");

            cr.UpdateAuthor(authortoUpdate, updated);
            result1 = cr.GetAllAuthors();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("author2");
            context.Dispose();
        }
        public void TestAddPublisher()
        {
            ComicRepository cr         = new ComicRepository(context);
            Publisher       publisher1 = new Publisher("publisher1");
            Publisher       publisher2 = new Publisher("publisher2");
            var             result1    = cr.GetAllPublishers();

            result1.Should().HaveCount(0);
            cr.AddPublisher(publisher1);
            result1 = cr.GetAllPublishers();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("publisher1");
            cr.AddPublisher(publisher2);
            result1 = cr.GetAllPublishers();
            result1.Should().HaveCount(2);
            result1.ElementAt(1).Name.Should().Be("publisher2");
            context.Dispose();
        }
        public void TestAddAuthor()
        {
            ComicRepository cr      = new ComicRepository(context);
            Author          author1 = new Author("author1");
            Author          author2 = new Author("author2");
            var             result1 = cr.GetAllAuthors();

            result1.Should().HaveCount(0);
            cr.AddAuthor(author1);
            result1 = cr.GetAllAuthors();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("author1");
            cr.AddAuthor(author2);
            result1 = cr.GetAllAuthors();
            result1.Should().HaveCount(2);
            result1.First().Name.Should().Be("author1");
            result1.ElementAt(1).Name.Should().Be("author2");
            context.Dispose();
        }
        public void TestAddSeries()
        {
            ComicRepository cr      = new ComicRepository(context);
            Series          series1 = new Series("series1");
            Series          series2 = new Series("series2");
            var             result1 = cr.GetAllSeries();

            result1.Should().HaveCount(0);
            cr.AddSeries(series1);
            result1 = cr.GetAllSeries();
            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("series1");
            cr.AddSeries(series2);
            result1 = cr.GetAllSeries();
            result1.Should().HaveCount(2);
            result1.First().Name.Should().Be("series1");
            result1.ElementAt(1).Name.Should().Be("series2");
            context.Dispose();
        }
        public async Task Test_ComicId_In_ValidRange()
        {
            //Arrange
            int mockId       = 100;
            var mockComicApi = new Mock <IXKCDApi>();

            mockComicApi.Setup(api => api.GetFirstComicId())
            .ReturnsAsync(GetValidMockedFirstComicId());
            mockComicApi.Setup(api => api.GetComicOfTheDay())
            .ReturnsAsync(GetValidMockedComicOfTheDay());
            var comicRepository = new ComicRepository(mockComicApi.Object);

            //Act
            var result = await comicRepository.IsComicInValidRange(mockId);

            //Assert
            Assert.NotNull(result);
            Assert.Equal(1, result.FirstComicId);
            Assert.Equal(1000, result.LastComicId);
            Assert.True(result.IsValid);
        }
        public void CheckDuplicateAuthor()
        {
            ComicRepository cr      = new ComicRepository(context);
            Author          author1 = new Author("author1");
            Author          author2 = new Author("author1");

            cr.AddAuthor(author1);
            cr.AddAuthor(author2);
            var result1 = cr.GetAllAuthors();

            result1.Should().HaveCount(1);
            result1.First().Name.Should().Be("author1");

            Author author3 = new Author("author3");

            cr.AddAuthor(author3);
            var result2 = cr.GetAllAuthors();

            result2.Should().HaveCount(2);
            context.Dispose();
        }
        public async Task Test_Previous_Valid_Comic_When_Current_Is_Not_First()
        {
            //Arrange
            int mockId          = 406;
            int previousValidId = 403;
            var mockComicApi    = new Mock <IXKCDApi>();

            mockComicApi.Setup(api => api.GetFirstComicId())
            .ReturnsAsync(GetValidMockedFirstComicId());
            mockComicApi.Setup(api => api.GetComicOfTheDay())
            .ReturnsAsync(GetValidMockedComicOfTheDay());
            mockComicApi.Setup(api => api.GetComicById(404))
            .ReturnsAsync(GetInvalidComic());
            mockComicApi.Setup(api => api.GetComicById(405))
            .ReturnsAsync(GetInvalidComic());
            mockComicApi.Setup(api => api.GetComicById(previousValidId))
            .ReturnsAsync(GetMockedComicById(previousValidId));

            var comicRepository = new ComicRepository(mockComicApi.Object);

            //Act
            var result = await comicRepository.GetPreviousComicId(mockId);

            var previousComic = await comicRepository.GetComicById(previousValidId);

            //Assert
            Assert.NotNull(result);
            Assert.Equal(previousValidId, result);
            Assert.NotNull(previousComic);
            Assert.Equal(previousComic.Num, result);
            Assert.Equal($"Testing {result.Value}", previousComic.Alt);
            Assert.Equal($"Test comic {result.Value}", previousComic.SafeTitle);
            Assert.Equal($"Test comic {result.Value}", previousComic.Title);

            mockComicApi.Verify(mock => mock.GetComicById(mockId - 1), Times.Once());
            mockComicApi.Verify(mock => mock.GetComicById(mockId - 2), Times.Once());
            //Because of the fetch during the act
            mockComicApi.Verify(mock => mock.GetComicById(previousValidId), Times.Exactly(2));
            mockComicApi.Verify(mock => mock.GetComicById(mockId - 4), Times.Never());
        }
        public void CheckDuplicateComic()
        {
            ComicRepository cr     = new ComicRepository(context);
            Comic           comic1 = new Comic("De legende van het Westen", new Series("Lucky Luke"), 73, new List <Author>()
            {
                new Author("Morris"), new Author("Nordmann Patrick")
            }, new Publisher("Dupuis"));
            Comic comic2 = new Comic("De legende van het Westen", new Series("Lucky Luke"), 73, new List <Author>()
            {
                new Author("Morris"), new Author("Nordmann Patrick")
            }, new Publisher("Dupuis"));

            cr.AddComic(comic1);
            cr.AddComic(comic2);
            var result = cr.GetComics();

            result.Should().HaveCount(1);
            result.First().Title.Should().Be("De legende van het Westen");
            result.First().Series.Name.Should().Be("Lucky Luke");
            result.First().SeriesNumber.Should().Be(73);
            result.First().Publisher.Name.Should().Be("Dupuis");
            result.First().Authors.Should().HaveCount(2);
            result.First().Authors.First().Name.Should().Be("Morris");
            result.First().Authors.ElementAt(1).Name.Should().Be("Nordmann Patrick");

            Comic comic3 = new Comic("De legende van het Westen Part 2", new Series("Lucky Luke"), 73, new List <Author>()
            {
                new Author("Morris"), new Author("Nordmann Patrick")
            }, new Publisher("Dupuis"));

            cr.AddComic(comic3);
            result = cr.GetComics();
            result.Should().HaveCount(2);
            result.First().Title.Should().Be("De legende van het Westen");
            result.ElementAt(1).Title.Should().Be("De legende van het Westen Part 2");
            context.Dispose();
        }
        public async Task Test_No_Next_Comic_When_Current_Is_Invalid()
        {
            //Arrange
            int mockId       = 10000;
            int?nextValidId  = null;
            var mockComicApi = new Mock <IXKCDApi>();

            mockComicApi.Setup(api => api.GetFirstComicId())
            .ReturnsAsync(GetValidMockedFirstComicId());
            mockComicApi.Setup(api => api.GetComicOfTheDay())
            .ReturnsAsync(GetValidMockedComicOfTheDay());
            mockComicApi.Setup(api => api.GetComicById(mockId))
            .ReturnsAsync(GetInvalidComic());

            var comicRepository = new ComicRepository(mockComicApi.Object);

            //Act
            var result = await comicRepository.GetPreviousComicId(mockId);

            //Assert
            Assert.Null(result);
            Assert.Equal(nextValidId, result);
            mockComicApi.Verify(mock => mock.GetComicById(mockId + 1), Times.Never());
        }
Пример #20
0
 public ComicBooksController()
 {
     _comicbookRepo = new ComicRepository();
 }
Пример #21
0
 public ComicBooksController()
 {
     comicRepository = new ComicRepository();
 }
Пример #22
0
        private List <ComicTitle> GetUserSubscriptions(int userId)
        {
            ComicRepository cr = new ComicRepository();

            return(cr.GetSubscriptionList());
        }
 public ComicController()
 {
     _comicRepository = new ComicRepository();
 }