public void Save_AllScenarios_FuncIsCalledAndCorrectItemsPassed()
        {
            //Arrange
            IEnumerable <ITestObject> addedItems    = new List <ITestObject>();
            IEnumerable <ITestObject> deletedItems  = new List <ITestObject>();
            IEnumerable <ITestObject> modifiedItems = new List <ITestObject>();
            IEnumerable <ITestObject> arg1          = null;
            IEnumerable <ITestObject> arg2          = null;
            IEnumerable <ITestObject> arg3          = null;
            bool fetchCalled    = false;
            bool fetchAllCalled = false;
            bool saveCalled     = false;
            Func <int, ITestObject>           fetch    = x => { fetchCalled = true; return(new Mock <ITestObject>().Object); };
            Func <IEnumerable <ITestObject> > fetchAll = () => { fetchAllCalled = true; return(new Mock <IEnumerable <ITestObject> >().Object); };
            Action <IEnumerable <ITestObject>, IEnumerable <ITestObject>, IEnumerable <ITestObject> > save = (a, b, c) => { saveCalled = true; arg1 = a; arg2 = b; arg3 = c; };
            var mapping = new PicnicCacheMapping <int, ITestObject>(fetch, fetchAll, save);

            //Act
            mapping.Save(addedItems, deletedItems, modifiedItems);

            //Assert
            Assert.IsTrue(saveCalled);
            Assert.AreEqual(addedItems, arg1);
            Assert.AreEqual(deletedItems, arg2);
            Assert.AreEqual(modifiedItems, arg3);
            Assert.IsFalse(fetchCalled);
            Assert.IsFalse(fetchAllCalled);
        }
        public void Constructor_PassNullFetchAll_ThrowsException()
        {
            //Arrange
            var fetch = new Mock <Func <int, ITestObject> >().Object;
            var save  = new Mock <Action <IEnumerable <ITestObject>, IEnumerable <ITestObject>, IEnumerable <ITestObject> > >().Object;

            //Act
            var mapping = new PicnicCacheMapping <int, ITestObject>(fetch, null, save);
        }
        public void FetchAll_AllScenarios_FuncIsCalled()
        {
            //Arrange
            bool fetchCalled    = false;
            bool fetchAllCalled = false;
            bool saveCalled     = false;
            Func <int, ITestObject>           fetch    = x => { fetchCalled = true; return(new Mock <ITestObject>().Object); };
            Func <IEnumerable <ITestObject> > fetchAll = () => { fetchAllCalled = true; return(new Mock <IEnumerable <ITestObject> >().Object); };
            Action <IEnumerable <ITestObject>, IEnumerable <ITestObject>, IEnumerable <ITestObject> > save = (a, b, c) => { saveCalled = true; };
            var mapping = new PicnicCacheMapping <int, ITestObject>(fetch, fetchAll, save);

            //Act
            var result = mapping.FetchAll();

            //Assert
            Assert.IsTrue(fetchAllCalled);
            Assert.IsFalse(fetchCalled);
            Assert.IsFalse(saveCalled);
        }