public static void ShouldInvokeRepositoryOnFetch()
        {
            var testObjectRepository = MockRepository.GenerateStub<IRepository<ITestObject>>();
            var testObject = new TestObject();

            testObjectRepository.Stub(repository => repository.Get("TestId")).Return(testObject);

            var result = new DefaultFetchingStrategy<ITestObject>(testObjectRepository).Fetch("TestId");

            Assert.AreSame(testObject, result);
        }
        public void SaveUsesSavingStrategyFromContext()
        {
            var savingStrategy = MockRepository.GenerateStub<ISavingStrategy<TestObject>>();
            var instance = new TestObject();

            Container.Stub(container => container.GetInstance<ISavingStrategy<TestObject>>()).Return(savingStrategy);

            PersistenceFacade.Save(instance);

            savingStrategy.AssertWasCalled(strategy => strategy.Save(instance));
        }
        public void SavedInstanceShouldBePersistedInstance()
        {
            var sessionContextStrategy = MockRepository.GenerateStub<ISessionContextStrategy>();
            var session = MockRepository.GenerateStub<ISession>();
            sessionContextStrategy.Stub(strategy => strategy.Retrieve()).Return(session);

            var instance = new TestObject();

            new DefaultSavingStrategy<ITestObject>(sessionContextStrategy).Save(instance);

            session.AssertWasCalled(s => s.Save(instance));
        }
        public void FindByIdUsesFetchingStrategy()
        {
            var fetchingStrategy = MockRepository.GenerateStub<IFetchingStrategy<TestObject>>();
            var testObject = new TestObject();
            var testId = Guid.NewGuid();

            Container.Stub(container => container.GetInstance<IFetchingStrategy<TestObject>>()).Return(fetchingStrategy);
            fetchingStrategy.Stub(strategy => strategy.Fetch(testId)).Return(testObject);

            var result = PersistenceFacade.FindById<TestObject>(testId);

            Assert.AreSame(testObject, result);
        }