Beispiel #1
0
        public void FetchAllScripts_Test()
        {
            //Arange
            var stubFactory = new Mock <IPrompterDbContextFactory>();
            var stubContext = new Mock <IPrompterDbContext>();
            var scriptDbSet = new Mock <IDbSet <Script> >();

            var script = new Script
            {
                ScriptId  = 1,
                Title     = "test",
                OptionsId = 1,
                Sections  = new List <Section>
                {
                    new Section
                    {
                        Order = 2,
                    },
                    new Section
                    {
                        Order = 1,
                    }
                }
            };

            var fakeScripts = new List <Script>
            {
                script,
                new Script
                {
                    Sections = new List <Section>()
                }
            }.AsQueryable();

            stubFactory.Setup(s => s.Create())
            .Returns(stubContext.Object);

            scriptDbSet.Setup(s => s.Provider)
            .Returns(fakeScripts.Provider);
            scriptDbSet.Setup(s => s.Expression)
            .Returns(fakeScripts.Expression);
            scriptDbSet.Setup(s => s.GetEnumerator())
            .Returns(fakeScripts.GetEnumerator());

            stubContext.Setup(s => s.Scripts)
            .Returns(scriptDbSet.Object);

            var service = new ScriptService(stubFactory.Object);

            //Act
            var actual = service.FetchAllScripts();

            //Assert
            Assert.That(actual.Count, Is.EqualTo(2));
            Assert.That(actual.Contains(script));
            Assert.That(SectionsAreOrdered(actual[0]), Is.True);
            Assert.That(actual[0].Title == "test");
            stubContext.Verify(s => s.Scripts, Times.Once);
        }