public void GetServiceUrl_RepositoryDescriptionsAdded()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;

            if (dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)))
                Assert.Fail("Unable to determine if the ITestRepositoryOne type has been registered in the Repository Descriptions.");

            wdl.GetServiceUrl<ITestRepositoryOne>();

            Assert.IsTrue(dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)));
        }
        public void RegisterRepository_RepositoryDescriptionAdded()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();

            if (dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)))
                Assert.Fail("Unable to determine if the ITestRepositoryOne type has been registered in the Repository Descriptions.");

            dl.RegisterRepository<ITestRepositoryOne>();

            Assert.IsTrue(dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)));
        }
        public void GetServiceHost_UnregisteredService()
        {
            try
            {
                IWhippedCreamDataLayer dl = new WhippedCreamDataLayer();
                WhippedCreamDataLayer.Container = new UnityContainer();

                WhippedCreamDataLayer.Container = new UnityContainer();
                WhippedCreamDataLayer.Container.RegisterInstance<IUrlService>(new DefaultUrlService(new System.Uri("http://localhost"), null));

                dl.GetServiceHost<ITestRepositoryTwo>();
                Assert.Fail(@"
            System.InvalidOperationException expected because the repository has not registered a service.
            ");
            }
            catch (System.InvalidOperationException) { }
        }
        public void GetServiceUrl()
        {
            System.Uri result = new System.Uri("http://www.asdfasdf.com");
            Mock<IUrlService> urlServiceMock = new Mock<IUrlService>();
            urlServiceMock.Setup(a => a.GetServiceUrl("TestRepositoryPath")).Returns("ExpectedResult");
            WhippedCreamDataLayer.Container = new UnityContainer();
            WhippedCreamDataLayer.Container.RegisterInstance<IUrlService>(urlServiceMock.Object);
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;

            Assert.AreEqual("ExpectedResult", wdl.GetServiceUrl<ITestRepositoryOne>(), @"
            The result of the GetServiceUrl is not what was expected.
            ");
        }
        public void GetServiceHost_RegistersRepository()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer dlService = dl;

            WhippedCreamDataLayer.Container = new UnityContainer();
            WhippedCreamDataLayer.Container.RegisterInstance<IUrlService>(new DefaultUrlService(new System.Uri("http://localhost"), null));

            if (dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)))
                Assert.Fail("Unable to determine if the ITestRepositoryOne type has been registered in the Repository Descriptions.");

            var repo = dlService.GetServiceHost<ITestRepositoryOne>();

            Assert.IsTrue(dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)));
        }
        public void GetServiceHost_ReturnsWhippedCreamDataServiceHost()
        {
            IWhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            WhippedCreamDataLayer.Container = new UnityContainer();

            WhippedCreamDataLayer.Container = new UnityContainer();
            WhippedCreamDataLayer.Container.RegisterInstance<IUrlService>(new DefaultUrlService(new System.Uri("http://localhost"), null));

            Assert.IsInstanceOf<WhippedCreamDataServiceHost>(dl.GetServiceHost<ITestRepositoryOne>(),
                "The returned object is not an instance of WhippedCreamDataServiceHost.");
        }
        public void CreateRepository_UnregisteredRepository_Testing_ExpectNull()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;
            IRepositoryFactory rf = dl as IRepositoryFactory;
            wdl.State = DataLayerState.Testing;

            Assert.IsNull(rf.CreateRepository<ITestRepositoryNoTestingReg>());
        }
        public void GetRepositoryDescription()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer dlService = dl;

            if (dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)))
                Assert.Fail("Unable to determine if the ITestRepositoryOne type has been registered in the Repository Descriptions.");

            var repo = dlService.GetRepositoryDescription<ITestRepositoryOne>();

            Assert.AreEqual(dl.RepositoryDescriptions[typeof(ITestRepositoryOne)], repo);
        }
        public void CreateRepository_Testing()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;
            IRepositoryFactory rf = dl as IRepositoryFactory;
            wdl.State = DataLayerState.Testing;

            Assert.IsInstanceOf<TestingITestRepositoryOne>(rf.CreateRepository<ITestRepositoryOne>());
        }
        public void CreateRepositoryContext_UnregisteredRepository_Live_ExpectNull()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;
            IRepositoryContextFactory rf = dl as IRepositoryContextFactory;
            wdl.State = DataLayerState.Live;

            Assert.IsNull(rf.CreateRepository<ITestRepositoryNoLiveReg>());
        }
        public void CreateRepositoryContext_RepositoryDescriptionsAdded()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IRepositoryContextFactory rf = dl as IRepositoryContextFactory;

            if (dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)))
                Assert.Fail("Unable to determine if the ITestRepositoryOne type has been registered in the Repository Descriptions.");

            var repo = rf.CreateRepository<ITestRepositoryOne>();

            Assert.IsTrue(dl.RepositoryDescriptions.ContainsKey(typeof(ITestRepositoryOne)));
        }
        public void CreateRepositoryContext_Live()
        {
            WhippedCreamDataLayer dl = new WhippedCreamDataLayer();
            IWhippedCreamDataLayer wdl = dl;
            IRepositoryContextFactory rf = dl as IRepositoryContextFactory;
            wdl.State = DataLayerState.Live;

            Assert.IsInstanceOf<LiveITestRepositoryOne>(rf.CreateRepository<ITestRepositoryOne>());
        }
 public void Constructor_StateIsSetToLive()
 {
     IWhippedCreamDataLayer dl = new WhippedCreamDataLayer();
     Assert.AreEqual(DataLayerState.Live, dl.State, "The initial state of the Data layer should be set to Live.");
 }