public async Task CriteriaFullMatchTestAsync()
        {
            // Arrange
            var widgets = new List <Widget>()
            {
                new Widget()
                {
                    Name = "frog"
                },
                new Widget()
                {
                    Name = "toad"
                },
                new Widget()
                {
                    Name = "kangaroo"
                },
            };
            await _repository.SaveAsync(widgets);

            // Act
            var pagination = await _repository.SearchAsync(page : 1, itemsPerPage : 10, criteria : "toad");

            // Assert
            Assert.AreEqual(1, pagination.Items.Count);
            Assert.AreEqual("toad", pagination.Items.First().Name);
        }
        public async Task OrderByDefaultTestAsync()
        {
            // Arrange
            var widgets = new List <Widget>()
            {
                new Widget()
                {
                    Name = "a"
                },
                new Widget()
                {
                    Name = "c"
                },
                new Widget()
                {
                    Name = "b"
                },
            };
            await _repository.SaveAsync(widgets);

            // Act
            var pagination = await _repository.SearchAsync(page : 1, itemsPerPage : 10);

            // Assert
            Assert.AreEqual(3, pagination.Items.Count);
            Assert.AreEqual("a", pagination.Items[0].Name);
            Assert.AreEqual("b", pagination.Items[1].Name);
            Assert.AreEqual("c", pagination.Items[2].Name);
        }
        public async Task PaginationReportingSunnyDayTestAsync()
        {
            // Arrange
            var widgets = new List <Widget>()
            {
                new Widget()
                {
                    Name = "a"
                },
                new Widget()
                {
                    Name = "b"
                },
                new Widget()
                {
                    Name = "c"
                },

                new Widget()
                {
                    Name = "d"
                },
                new Widget()
                {
                    Name = "e"
                },
                new Widget()
                {
                    Name = "f"
                },

                new Widget()
                {
                    Name = "g"
                },
                new Widget()
                {
                    Name = "h"
                },
            };
            await _repository.SaveAsync(widgets);

            // Act
            var pagination = await _repository.SearchAsync(page : 2, itemsPerPage : 3);

            // Assert
            Assert.AreEqual(2, pagination.CurrentPage);
            Assert.AreEqual(3, pagination.TotalPages);
            Assert.AreEqual(8, pagination.TotalItems);
        }
        public async Task TestInitialize()
        {
            _repository = new WidgetRepository(DatabaseHelper.GetInMemoryContext());

            // Generates the test data for all the pagination tests.
            var widgets = new List <Widget>()
            {
                new Widget()
                {
                    Name = "a"
                },
                new Widget()
                {
                    Name = "b"
                },
                new Widget()
                {
                    Name = "c"
                },

                new Widget()
                {
                    Name = "d"
                },
                new Widget()
                {
                    Name = "e"
                },
                new Widget()
                {
                    Name = "f"
                },

                new Widget()
                {
                    Name = "g"
                },
            };

            await _repository.SaveAsync(widgets);
        }