protected void SetupFakeEnvironment()
        {
            // TODO: Prettify and extract smaller methods

            NhibernateTestSetup = new NhibernateTestSetupHelper();

            var storageProvider = new IoHiveTestSetupHelper(NhibernateTestSetup.FakeFrameworkContext);

            Hive = new HiveManager(
                new[]
                    {
                        new ProviderMappingGroup(
                            "test",
                            new WildcardUriMatch("content://"),
                            NhibernateTestSetup.ReadonlyProviderSetup,
                            NhibernateTestSetup.ProviderSetup,
                            NhibernateTestSetup.FakeFrameworkContext),
                        storageProvider.CreateGroup("uploader", "storage://file-uploader"),
                    },
                NhibernateTestSetup.FakeFrameworkContext);

            AppContext = new FakeUmbracoApplicationContext(Hive, false);

            var resolverContext = new MockedMapResolverContext(NhibernateTestSetup.FakeFrameworkContext, Hive,
                                                               new MockedPropertyEditorFactory(AppContext),
                                                               new MockedParameterEditorFactory());
            var webmModelMapper = new CmsModelMapper(resolverContext);
            var renderModelMapper = new RenderTypesModelMapper(resolverContext);

            NhibernateTestSetup.FakeFrameworkContext.SetTypeMappers(
                new FakeTypeMapperCollection(new AbstractMappingEngine[]
                                             	{
                                             		webmModelMapper, renderModelMapper,
                                             		new FrameworkModelMapper(NhibernateTestSetup.FakeFrameworkContext)
                                             	}));

            var membersMembershipProvider = new MembersMembershipProvider { AppContext = AppContext };
            membersMembershipProvider.Initialize("MembersMembershipProvider", new NameValueCollection());
            MembershipService = new MembershipService<Member, MemberProfile>(AppContext.FrameworkContext, Hive,
                                                                             "security://member-profiles",
                                                                             "security://member-groups",
                                                                             Umbraco.Framework.Security.Model.FixedHiveIds.
                                                                                MemberProfileVirtualRoot,
                                                                             membersMembershipProvider,
                                                                             Enumerable.Empty<MembershipProviderElement>());

            PublicAccessService = new PublicAccessService(Hive, MembershipService, AppContext.FrameworkContext);
        }
        public void TestSetup()
        {
            this.Setup = new NhibernateTestSetupHelper();
            this._singleProvider = new ProviderMappingGroup("default", new WildcardUriMatch(new Uri("content://")), this.Setup.ReadonlyProviderSetup, this.Setup.ProviderSetup, this.Setup.FakeFrameworkContext);
            this.HiveManager = new HiveManager(this._singleProvider, this._singleProvider.FrameworkContext);

            this.AppContext = new FakeUmbracoApplicationContext(this.HiveManager, false);

            this._resolverContext = new MockedMapResolverContext(this.HiveManager.FrameworkContext, this.HiveManager, new MockedPropertyEditorFactory(this.AppContext), new MockedParameterEditorFactory());

            //mappers
            var cmsModelMapper = new CmsModelMapper(this._resolverContext);
            var persistenceToRenderModelMapper = new RenderTypesModelMapper(this._resolverContext);
            
            this.Setup.FakeFrameworkContext.SetTypeMappers(new FakeTypeMapperCollection(new AbstractMappingEngine[] { cmsModelMapper, persistenceToRenderModelMapper }));

            var membersMembershipProvider = new MembersMembershipProvider { AppContext = AppContext };
            MembershipService = new MembershipService<Member, MemberProfile>(AppContext.FrameworkContext, HiveManager,
                "security://member-profiles", "security://member-groups", Framework.Security.Model.FixedHiveIds.MemberProfileVirtualRoot,
                membersMembershipProvider, Enumerable.Empty<MembershipProviderElement>());

            PublicAccessService = new PublicAccessService(HiveManager, MembershipService, AppContext.FrameworkContext);
        }