예제 #1
0
        public void OrderBy_ShouldOrderByLowToHighWhenDefaultOrderingIsUsed()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            var orderBy = new DynamicOrderBy("price", "asc");

            jewelryRepository.Expect(x => x.OrderJewelryItemsBy(Arg <DynamicOrderBy> .Is.Equal(orderBy))).Repeat.Once();

            var viewModel = new TabsViewModel();

            viewModel.TabKey      = TAB_KEY;
            viewModel.TabId       = TAB_ID1;
            viewModel.MetalFilter = JewelMediaType.WhiteGold;


            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);

            tabsViewModelBuilder.Build();

            //Act
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
예제 #2
0
        public void PageAndItemsPerPage_ShouldCallItemsPerPageMethodOnTheRepository()
        {
            //Arrange
            IJewelRepository jewelRepository = MockRepository.GenerateMock <IJewelRepository>();

            var tabsRepository = CreateStubTabsRepository(TabKey);

            jewelRepository.Expect(
                x =>
                x.ItemsPerPage(Arg <int> .Is.Equal(21))).Repeat.Once();

            jewelRepository.Expect(
                x =>
                x.Page(Arg <int> .Is.Equal(1))).Repeat.Once();

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();
            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelRepository, fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.JewelryInTabContainersCollection;

            //Assert
            jewelRepository.VerifyAllExpectations();
        }
예제 #3
0
        public void MapJewelsToInTabContainers_ShouldReturnHasMovieToBeFalseWhenMovieFileIsNotPresent()
        {
            //Arrange
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber(new Dictionary <string, MockFileData>()
            {
                { @"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-pic-wg.jpg", new MockFileData("") },
                { @"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-icon-wg.jpg", new MockFileData("") },
                { @"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-hires-wg.jpg", new MockFileData("") },
                { @"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-hand-wg.jpg", new MockFileData("") },
//                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-mov-wg.flv",new MockFileData("")}
            });

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabContainer1 = viewModel.JewelryInTabContainersCollection[0];

            //Assert

            tabContainer1.HasMovie.Should().BeFalse();
        }
예제 #4
0
        public void Tabs_ShouldCallTheTabRepositoryWithTheCorrectKey()
        {
            //Arrange
            var tabsRepository    = MockRepository.GenerateStrictMock <ITabsRepository>();
            var jewelryRepository = MockRepository.GenerateStub <IJewelRepository>();
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber();
            var faketablist       = new List <Tab>();

            faketablist.Add(new Tab("test1", TAB_ID1, 1));
            faketablist.Add(new Tab("test2", TAB_ID2, 2));
            faketablist.Add(new Tab("test3", TAB_ID3, 3));

            tabsRepository.Expect(x => x.GetTabsCollectionByKey(Arg <String> .Is.Equal(TAB_KEY))).Repeat.Once().Return(faketablist);



            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.Tabs;

            //Assert
            tabsRepository.VerifyAllExpectations();
        }
        private ChooseSettingViewModelBuilder CreateDefaultChooseSettingViewModelBuilderWithChooseSettingModelAsAParameter(ChooseSettingViewModel chooseSettingViewModel)
        {
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = TabsViewModelBuilderTests.CreateStubTabsRepository(JEWEL_DESIGN_TABKEY);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fakeTabXmlFactory  = new FakeTabXmlFactory();
            var xmldoc_jeweldesign = fakeTabXmlFactory.JewelDesign3Tabs(JEWEL_DESIGN_TABKEY);


            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");


            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(chooseSettingViewModel,
                                                                                 xmldoc_jeweldesign,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var diamondRepository = new FakeDiamondRepository(mapper);
            var webHelpers        = MockRepository.GenerateStub <IWebHelpers>();

            var tabsForJewelDesignBuilder = new TabsForJewelDesignNavigationBuilder(chooseSettingViewModel,
                                                                                    diamondRepository, jewelryRepository,
                                                                                    webHelpers);


            var builder = new ChooseSettingViewModelBuilder(chooseSettingViewModel, tabsViewModelBuilder, tabsForJewelDesignBuilder);

            return(builder);
        }
예제 #6
0
        public ViewResult SearchTabs(TabsViewModel viewModel)
        {
            XDocument tabsource = xmlSourceFactory.TabSource();

            TabsViewModelBuilder modelBuilder = new TabsViewModelBuilder(viewModel, tabsource, tabsRepository, jewelRepository, fileSystem);

            viewModel = modelBuilder.Build();
            viewModel.PathBarItems = pathBarGenerator.GenerateUsing <TabsPathBarResolver, ITabsViewModel>(viewModel);

            return(View("PresentTabs", viewModel));
        }
예제 #7
0
        public ViewResult SearchTabs(TabsViewModel viewModel)
        {
            XDocument tabsource = xmlSourceFactory.TabSource();

            TabsViewModelBuilder modelBuilder = new TabsViewModelBuilder(viewModel, tabsource, tabsRepository, jewelRepository, fileSystem);

            viewModel = modelBuilder.Build();
            viewModel.PathBarItems = pathBarGenerator.GenerateUsing<TabsPathBarResolver, ITabsViewModel>(viewModel);

            return View("PresentTabs",viewModel);
        }
예제 #8
0
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithSpecialTabs()
        {
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, SPECIAL_TABID1, xmldoc_specialtab,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            return(tabsViewModelBuilder);
        }
예제 #9
0
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithCustomInTabFilter()
        {
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_tabswithintabfilter,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            return(tabsViewModelBuilder);
        }
예제 #10
0
        public void Tabs_ShouldShowTheTabsIfRegularTabsArePresented()
        {
            //Arrange

            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub <IJewelRepository>();
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();

            //Act

            viewModel.IsShowTabs.Should().BeTrue();
        }
예제 #11
0
        public void Tabs_ShouldLoadTheTabExtraText()
        {
            //Arrange

            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub <IJewelRepository>();
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();

            //Act

            viewModel.ExtraText.Should().Be("extratext");
        }
예제 #12
0
        public ActionResult ChooseSetting(ChooseSettingViewModel chooseSettingViewModel )
        {
            var tabsource = xmlSourceFactory.TabSource();

            var tabsViewModelBuilder = new TabsViewModelBuilder(chooseSettingViewModel, tabsource, tabsRepository, jewelRepository, fileSystem);

            var tabsForJewelNavigation = new TabsForJewelDesignNavigationBuilder(chooseSettingViewModel, diamondRepository,
                                                                    jewelRepository, webHelpers);

            tabsForJewelNavigation.WhichTabToHighLight(NagivationTabType.ChooseSetting);

            var builder = new ChooseSettingViewModelBuilder(chooseSettingViewModel, tabsViewModelBuilder, tabsForJewelNavigation);

            var viewModel = builder.Build();

            viewModel.PathBarItems = pathBarGenerator.GenerateUsing<TabsPathBarResolver, ITabsViewModel>(viewModel);

            return View(viewModel);
        }
        public void Build_IfGivenATabKeyWithSpecialTebsReturnIsShowTabsToFalse()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();
            viewModel.TabKey = TAB_KEY;
            viewModel.TabId = SPECIAL_TABID1;

            var  tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_specialtab, tabsRepository, jewelryRepository, fileSystem);
            viewModel = tabsViewModelBuilder.Build();

            //Act

            viewModel.IsShowTabs.Should().BeFalse();
            //Assert
        }
예제 #14
0
        public ActionResult ChooseSetting(ChooseSettingViewModel chooseSettingViewModel)
        {
            var tabsource = xmlSourceFactory.TabSource();

            var tabsViewModelBuilder = new TabsViewModelBuilder(chooseSettingViewModel, tabsource, tabsRepository, jewelRepository, fileSystem);

            var tabsForJewelNavigation = new TabsForJewelDesignNavigationBuilder(chooseSettingViewModel, diamondRepository,
                                                                                 jewelRepository, webHelpers);

            tabsForJewelNavigation.WhichTabToHighLight(NagivationTabType.ChooseSetting);


            var builder = new ChooseSettingViewModelBuilder(chooseSettingViewModel, tabsViewModelBuilder, tabsForJewelNavigation);

            var viewModel = builder.Build();

            viewModel.PathBarItems = pathBarGenerator.GenerateUsing <TabsPathBarResolver, ITabsViewModel>(viewModel);

            return(View(viewModel));
        }
예제 #15
0
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithAllMetalFilter()
        {
            var settingManager    = new FakeSettingManager();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            var model = new TabsViewModel()
            {
                MetalFilter = JewelMediaType.All,
                TabKey      = TabKey,
                TabId       = TabID1
            };

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(model, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            return(tabsViewModelBuilder);
        }
예제 #16
0
        public void Build_ShouldAddACustmFilterToTheRapository()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            jewelryRepository.Expect(x => x.AddFilterList(Arg <List <DynamicSQLWhereObject> >
                                                          .Matches(
                                                              m =>
                                                              m[0].Pattern == "cs_type = @0" &&
                                                              m[0].Valuelist.Contains("ruby")

                                                              ))).Repeat.Once();

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = TAB_ID1;

            viewModel.CustomFilters = new List <CustomTabFilterViewModel>
            {
                new CustomTabFilterViewModel()
                {
                    Name  = "gemstone-center-stone",
                    Value = (int)GemstoneCenterStoneFilterValues.Ruby
                }
            };



            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                jewelryRepository, fileSystem);


            //Act
            tabsViewModelBuilder.Build();
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
예제 #17
0
        public void Tabs_ShouldCallTheJewelryRepository()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber();


            jewelryRepository.Expect(
                x =>
                x.GetJewelsByDynamicSQL(Arg <DynamicSQLWhereObject> .Is.Anything)).Repeat.Once();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.JewelryInTabContainersCollection;

            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
예제 #18
0
        public void Build_IfGivenATabKeyWithSpecialTebsReturnIsShowTabsToFalse()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = SPECIAL_TABID1;

            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_specialtab, tabsRepository, jewelryRepository, fileSystem);

            viewModel = tabsViewModelBuilder.Build();

            //Act

            viewModel.IsShowTabs.Should().BeFalse();
            //Assert
        }
예제 #19
0
        public void Tabs_ShouldSetViewModelToNotShowTabsWhenTheFeatureIsEnabledInsideTheXML()
        {
            //Arrange

            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub <IJewelRepository>();
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID2, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.Tabs;

            //Assert
            tabs[0].Active.Should().BeFalse();
            tabs[1].Active.Should().BeTrue();
            tabs[2].Active.Should().BeFalse();
        }
예제 #20
0
        public void Build_IfGivenAViewModelWithNoMetalFilterSetToDefaultOf1()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();

            viewModel.TabKey = TAB_KEY;
            viewModel.TabId  = TAB_ID1;

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);

            viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabsContainers = viewModel.JewelryInTabContainersCollection;

            //Assert
            tabsContainers.Should().OnlyContain(x => x.Metal == "White Gold 18K");
        }
예제 #21
0
        public void Build_ShouldPassTheCurrentValueOfTheGeneralFilterToTheViewModelForPresistance()
        {
            //Arrange


            //Arrange
            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();
            var tabsRepository    = CreateStubTabsRepository(TabKey);
            var fileSystem        = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");


            var viewModel = new TabsViewModel
            {
                TabKey        = TAB_KEY,
                TabId         = TAB_ID1,
                CustomFilters = new List <CustomTabFilterViewModel>
                {
                    new CustomTabFilterViewModel()
                    {
                        Name  = "gemstone-center-stone",
                        Value = (int)GemstoneCenterStoneFilterValues.Ruby
                    }
                }
            };



            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                jewelryRepository, fileSystem);


            //Act
            var result = tabsViewModelBuilder.Build();

            //Assert
            result.CustomFilters[0].Value.Should().Be(1);
        }
 public ChooseSettingViewModelBuilder(ChooseSettingViewModel chooseSettingViewModel, TabsViewModelBuilder tabsViewModelBuilder, TabsForJewelDesignNavigationBuilder tabsForJewelDesignBuilder)
 {
     this.chooseSettingViewModel = chooseSettingViewModel;
     this.tabsViewModelBuilder = tabsViewModelBuilder;
     this.tabsForJewelDesignBuilder = tabsForJewelDesignBuilder;
 }
        public void PageAndItemsPerPage_ShouldCallItemsPerPageMethodOnTheRepository()
        {
            //Arrange
            IJewelRepository jewelRepository = MockRepository.GenerateMock<IJewelRepository>();

            var tabsRepository = CreateStubTabsRepository(TabKey);

            jewelRepository.Expect(
                x =>
                x.ItemsPerPage(Arg<int>.Is.Equal(21))).Repeat.Once();

            jewelRepository.Expect(
                x =>
                x.Page(Arg<int>.Is.Equal(1))).Repeat.Once();

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();
            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelRepository,fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.JewelryInTabContainersCollection;

            //Assert
            jewelRepository.VerifyAllExpectations();
        }
        private ChooseSettingViewModelBuilder CreateDefaultChooseSettingViewModelBuilderWithChooseSettingModelAsAParameter(ChooseSettingViewModel chooseSettingViewModel)
        {
            var settingManager = new FakeSettingManager();
            var tabsRepository = TabsViewModelBuilderTests.CreateStubTabsRepository(JEWEL_DESIGN_TABKEY);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fakeTabXmlFactory = new FakeTabXmlFactory();
            var xmldoc_jeweldesign = fakeTabXmlFactory.JewelDesign3Tabs(JEWEL_DESIGN_TABKEY);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(chooseSettingViewModel,
                                                                                 xmldoc_jeweldesign,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var diamondRepository = new FakeDiamondRepository(mapper);
            var webHelpers = MockRepository.GenerateStub<IWebHelpers>();

            var tabsForJewelDesignBuilder = new TabsForJewelDesignNavigationBuilder(chooseSettingViewModel,
                                                                                    diamondRepository, jewelryRepository,
                                                                                    webHelpers);

            var builder = new ChooseSettingViewModelBuilder(chooseSettingViewModel, tabsViewModelBuilder, tabsForJewelDesignBuilder);
            return builder;
        }
        public void Build_ShouldNotAddAFilterThatIsSetToDoNothing()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            jewelryRepository.Expect(x => x.AddFilterList(Arg<List<DynamicSQLWhereObject>>
                                                              .Matches(
                                                                  m =>
                                                                  m[0].IsDoingNothing
                                                              ))).Repeat.Once();

            var viewModel = new TabsViewModel();
            viewModel.TabKey = TAB_KEY;
            viewModel.TabId = TAB_ID1;

            viewModel.CustomFilters = new List<CustomTabFilterViewModel>
                                          {
                                              new CustomTabFilterViewModel()
                                                  {
                                                      Name = "gemstone-center-stone",
                                                      Value = (int)GemstoneCenterStoneFilterValues.All

                                                  }
                                          };

            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                    jewelryRepository, fileSystem);

            //Act
            tabsViewModelBuilder.Build();
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
        public void Tabs_ShouldCallTheTabRepositoryWithTheCorrectKey()
        {
            //Arrange
            var tabsRepository = MockRepository.GenerateStrictMock<ITabsRepository>();
            var jewelryRepository = MockRepository.GenerateStub<IJewelRepository>();
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();
            var faketablist = new List<Tab>();

            faketablist.Add(new Tab("test1", TAB_ID1, 1));
            faketablist.Add(new Tab("test2", TAB_ID2, 2));
            faketablist.Add(new Tab("test3", TAB_ID3, 3));

            tabsRepository.Expect(x => x.GetTabsCollectionByKey(Arg<String>.Is.Equal(TAB_KEY))).Repeat.Once().Return(faketablist);

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelryRepository,fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.Tabs;

            //Assert
            tabsRepository.VerifyAllExpectations();
        }
        public void Tabs_ShouldLoadTheTabExtraText()
        {
            //Arrange

            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub<IJewelRepository>();
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();
            //Act

            viewModel.ExtraText.Should().Be("extratext");
        }
        public void MapJewelsToInTabContainers_ShouldReturnHasMovieToBeFalseWhenMovieFileIsNotPresent()
        {
            //Arrange
            var settingManager = new FakeSettingManager();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber(new Dictionary<string, MockFileData>()
                                                    {
                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-pic-wg.jpg",new MockFileData("")},
                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-icon-wg.jpg",new MockFileData("")},
                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-hires-wg.jpg",new MockFileData("")},
                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-hand-wg.jpg",new MockFileData("")},
            //                                                        {@"C:\Users\maMLUka\Documents\jewelryonnet\internet-sites\jon-images\jewelry\0101-15421-mov-wg.flv",new MockFileData("")}
                                                    });

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabContainer1 = viewModel.JewelryInTabContainersCollection[0];
            //Assert

            tabContainer1.HasMovie.Should().BeFalse();
        }
        public void Tabs_ShouldSetViewModelToNotShowTabsWhenTheFeatureIsEnabledInsideTheXML()
        {
            //Arrange

            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub<IJewelRepository>();
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID2, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.Tabs;

            //Assert
            tabs[0].Active.Should().BeFalse();
            tabs[1].Active.Should().BeTrue();
            tabs[2].Active.Should().BeFalse();
        }
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithSpecialTabs()
        {
            var settingManager = new FakeSettingManager();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, SPECIAL_TABID1, xmldoc_specialtab,
                                                                                 tabsRepository, jewelryRepository, fileSystem);
            return tabsViewModelBuilder;
        }
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithCustomInTabFilter()
        {
            var settingManager = new FakeSettingManager();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_tabswithintabfilter,
                                                                                 tabsRepository, jewelryRepository, fileSystem);
            return tabsViewModelBuilder;
        }
        public void OrderBy_ShouldOrderByLowToHighWhenDefaultOrderingIsUsed()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var orderBy = new DynamicOrderBy("price","asc");

            jewelryRepository.Expect(x => x.OrderJewelryItemsBy(Arg<DynamicOrderBy>.Is.Equal(orderBy))).Repeat.Once();

            var viewModel = new TabsViewModel();
            viewModel.TabKey = TAB_KEY;
            viewModel.TabId = TAB_ID1;
            viewModel.MetalFilter = JewelMediaType.WhiteGold;

            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository,fileSystem);
            tabsViewModelBuilder.Build();

            //Act
            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
        public void Tabs_ShouldCallTheJewelryRepository()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();

            jewelryRepository.Expect(
                x =>
                x.GetJewelsByDynamicSQL(Arg<DynamicSQLWhereObject>.Is.Anything) ).Repeat.Once();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs, tabsRepository, jewelryRepository,fileSystem);
            var viewModel = tabsViewModelBuilder.Build();
            //Act

            var tabs = viewModel.JewelryInTabContainersCollection;

            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
        public void Build_IfGivenAViewModelWithNoMetalFilterSetToDefaultOf1()
        {
            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel();
            viewModel.TabKey = TAB_KEY;
            viewModel.TabId = TAB_ID1;

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_regular3tabs, tabsRepository, jewelryRepository, fileSystem);
            viewModel = tabsViewModelBuilder.Build();

            //Act

            var tabsContainers = viewModel.JewelryInTabContainersCollection;

            //Assert
            tabsContainers.Should().OnlyContain(x => x.Metal == "White Gold 18K");
        }
        public void Tabs_ShouldShowTheTabsIfRegularTabsArePresented()
        {
            //Arrange

            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = MockRepository.GenerateStub<IJewelRepository>();
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber();

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(TAB_KEY, TAB_ID1, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);

            var viewModel = tabsViewModelBuilder.Build();
            //Act

            viewModel.IsShowTabs.Should().BeTrue();
        }
        private TabsViewModelBuilder CreateDefaultTabsViewModelBuilderWithAllMetalFilter()
        {
            var settingManager = new FakeSettingManager();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var jewelryRepository = new FakeJewelRepository(settingManager);

            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15421");

            var model = new TabsViewModel()
                            {
                                MetalFilter = JewelMediaType.All,
                                TabKey = TabKey,
                                TabId = TabID1

                            };

            TabsViewModelBuilder tabsViewModelBuilder = new TabsViewModelBuilder(model, xmldoc_regular3tabs,
                                                                                 tabsRepository, jewelryRepository, fileSystem);
            return tabsViewModelBuilder;
        }
        public void Build_ShouldPassTheCurrentValueOfTheGeneralFilterToTheViewModelForPresistance()
        {
            //Arrange

            //Arrange
            var jewelryRepository = MockRepository.GenerateMock<IJewelRepository>();
            var tabsRepository = CreateStubTabsRepository(TabKey);
            var fileSystem = FakeFileSystem.MediaFileSystemForItemNumber("0101-15001");

            var viewModel = new TabsViewModel
                                {
                                    TabKey = TAB_KEY,
                                    TabId = TAB_ID1,
                                    CustomFilters = new List<CustomTabFilterViewModel>
                                                        {
                                                            new CustomTabFilterViewModel()
                                                                {
                                                                    Name = "gemstone-center-stone",
                                                                    Value = (int) GemstoneCenterStoneFilterValues.Ruby
                                                                }
                                                        }
                                };

            var tabsViewModelBuilder = new TabsViewModelBuilder(viewModel, xmldoc_tabswithgeneralfilter, tabsRepository,
                                                                    jewelryRepository, fileSystem);

            //Act
            var result = tabsViewModelBuilder.Build();
            //Assert
            result.CustomFilters[0].Value.Should().Be(1);
        }