public void Add_New_LibraryBranch_To_Context()
        {
            var mockSet = new Mock <DbSet <LibraryBranch> >();
            var mockCtx = new Mock <LibraryDbContext>();

            mockCtx.Setup(c => c.LibraryBranches).Returns(mockSet.Object);
            var sut = new LibraryBranchService(mockCtx.Object);

            sut.Add(new LibraryBranch());

            mockCtx.Verify(s => s.Add(It.IsAny <LibraryBranch>()), Times.Once());
            mockCtx.Verify(c => c.SaveChanges(), Times.Once());
        }
        public void Get_Humanized_Branch_Hours()
        {
            var options = new DbContextOptionsBuilder <LibraryDbContext>()
                          .UseInMemoryDatabase("Gets_branch_hours")
                          .Options;

            using (var context = new LibraryDbContext(options))
            {
                var branch = new LibraryBranch {
                    Id = -190
                };

                var hours = new List <BranchHours>
                {
                    new BranchHours
                    {
                        Branch    = branch,
                        DayOfWeek = 1,
                        OpenTime  = 13,
                        CloseTime = 15
                    },

                    new BranchHours
                    {
                        Branch    = branch,
                        DayOfWeek = 2,
                        OpenTime  = 4,
                        CloseTime = 24
                    }
                };

                context.BranchHours.AddRange(hours);
                context.SaveChanges();
            }

            using (var context = new LibraryDbContext(options))
            {
                var sut      = new LibraryBranchService(context);
                var result   = sut.GetBranchHours(-190);
                var expected = new List <string>
                {
                    "Monday 13:00 to 15:00",
                    "Tuesday 04:00 to 00:00"
                };

                result.Should().BeEquivalentTo(expected);
            }
        }
        public void Get_Patron_Count()
        {
            var branches = GetBranches().AsQueryable();

            var mockSet = new Mock <DbSet <LibraryBranch> >();

            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Provider).Returns(branches.Provider);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Expression).Returns(branches.Expression);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.ElementType).Returns(branches.ElementType);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.GetEnumerator()).Returns(branches.GetEnumerator);

            var mockCtx = new Mock <LibraryDbContext>();

            mockCtx.Setup(c => c.LibraryBranches).Returns(mockSet.Object);

            var sut         = new LibraryBranchService(mockCtx.Object);
            var queryResult = sut.GetPatronCount(branches.First().Id);

            queryResult.Should().Be(2);
        }
        public void Get_LibraryBranch_By_Id()
        {
            var branches = GetBranches().AsQueryable();

            var mockSet = new Mock <DbSet <LibraryBranch> >();

            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Provider).Returns(branches.Provider);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Expression).Returns(branches.Expression);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.ElementType).Returns(branches.ElementType);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.GetEnumerator()).Returns(branches.GetEnumerator);

            var mockCtx = new Mock <LibraryDbContext>();

            mockCtx.Setup(c => c.LibraryBranches).Returns(mockSet.Object);

            var sut    = new LibraryBranchService(mockCtx.Object);
            var branch = sut.Get(-6);

            branch.Name.Should().Be("Hawkins");
        }
        public void Get_All_LibraryBranches()
        {
            var branches = GetBranches().AsQueryable();

            var mockSet = new Mock <DbSet <LibraryBranch> >();

            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Provider).Returns(branches.Provider);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.Expression).Returns(branches.Expression);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.ElementType).Returns(branches.ElementType);
            mockSet.As <IQueryable <LibraryBranch> >().Setup(b => b.GetEnumerator()).Returns(branches.GetEnumerator);

            var mockCtx = new Mock <LibraryDbContext>();

            mockCtx.Setup(c => c.LibraryBranches).Returns(mockSet.Object);

            var sut         = new LibraryBranchService(mockCtx.Object);
            var queryResult = sut.GetAll().ToList();

            queryResult.Should().AllBeOfType(typeof(LibraryBranch));
            queryResult.Should().HaveCount(2);
            queryResult.Should().Contain(a => a.Name == "Hawkins");
            queryResult.Should().Contain(a => a.Name == "Downtown");
        }