spec/unit/tab_spec.rb in ProMotion-2.3.1 vs spec/unit/tab_spec.rb in ProMotion-2.4.0

- old
+ new

@@ -1,16 +1,16 @@ describe "tab bar functionality" do before do @app = TestDelegate.new - @tab_1 = TabScreen.new - @tab_2 = BasicScreen.new - @tab_3 = HomeScreen.new - @tab_4 = TestTableScreen.new + @tab_0 = TabScreen.new + @tab_1 = BasicScreen.new + @tab_2 = HomeScreen.new + @tab_3 = TestTableScreen.new - @tab_bar = @app.open_tab_bar @tab_1, @tab_2, @tab_3, @tab_4 + @tab_bar = @app.open_tab_bar @tab_0, @tab_1, @tab_2, @tab_3 end after do end @@ -34,18 +34,87 @@ @tab_bar.tabBar.items[2].title.should == "Home" @tab_bar.tabBar.items[3].title.should == "Test tab title" end it "should allow changing the tab bar item with set_tab_bar_item" do - @tab_1.set_tab_bar_item title: "Custom", item: "test.jpeg" + @tab_0.set_tab_bar_item title: "Custom", item: "test.jpeg" @tab_bar.tabBar.items.first.title.should == "Custom" end it "should allow replacing a view controller with `open`" do new_screen = BasicScreen.new - @tab_4.open new_screen, in_tab: "Home" + @tab_3.open new_screen, in_tab: "Home" @tab_bar.viewControllers[2].should == new_screen end -end + describe "changing tab bar orders" do + before do + # Reset the user defaults + app_domain = NSBundle.mainBundle.bundleIdentifier + NSUserDefaults.standardUserDefaults.removePersistentDomainForName(app_domain) + NSUserDefaults.standardUserDefaults.synchronize + @tab_0 = TabScreen.new + @tab_1 = BasicScreen.new + @tab_2 = HomeScreen.new + @tab_3 = TestTableScreen.new + @tab_4 = PresentScreen.new + @tab_5 = TestWebScreen.new + @tab_bar = @app.open_tab_bar @tab_0, @tab_1, @tab_2, @tab_3, @tab_4, @tab_5 + end + + it "should start without a name" do + @tab_bar.name.should.be.nil + end + + it "should set a name" do + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_test_tabs").should.be.nil + @tab_bar.name = "test_tabs" + @tab_bar.name.should == "test_tabs" + end + + it "should not save the order when not changed" do + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_").should.be.nil + @tab_bar.tabBarController(@tab_bar, didEndCustomizingViewControllers:@tab_bar.viewControllers, changed:false) + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_").should.be.nil + end + + it "should save an order without a name" do + @tab_bar.name = "" + new_order = [@tab_5, @tab_1, @tab_2, @tab_3, @tab_4, @tab_0] + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_").should.be.nil + @tab_bar.tabBarController(@tab_bar, didEndCustomizingViewControllers:new_order, changed:true) + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_").nil?.should == false + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_").should == [5, 1, 2, 3, 4, 0] + end + + it "should save an order with a name" do + new_name = "test_tab_bar" + + @tab_bar.name = new_name + new_order = [@tab_5, @tab_4, @tab_3, @tab_2, @tab_1, @tab_0] + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_#{new_name}").should.be.nil + @tab_bar.tabBarController(@tab_bar, didEndCustomizingViewControllers:new_order, changed:true) + NSUserDefaults.standardUserDefaults.arrayForKey("tab_bar_order_#{new_name}").should == [5, 4, 3, 2, 1, 0] + end + + it "should persist order when reopening the tabs" do + @tab_bar.name = "test_tab_bar" + new_order = [@tab_5, @tab_4, @tab_3, @tab_2, @tab_1, @tab_0] + @tab_bar.tabBarController(@tab_bar, didEndCustomizingViewControllers:new_order, changed:true) + + new_tab_bar = @app.open_tab_bar @tab_0, @tab_1, @tab_2, @tab_3, @tab_4, @tab_5 + new_tab_bar.name = "test_tab_bar" + new_tab_bar.viewControllers.should == new_order + end + + it "should always select the leftmost tab when rearranging tabs" do + new_order = [@tab_5, @tab_4, @tab_3, @tab_2, @tab_1, @tab_0] + @tab_bar.tabBarController(@tab_bar, didEndCustomizingViewControllers:new_order, changed:true) + new_tab_bar = @app.open_tab_bar @tab_0, @tab_1, @tab_2, @tab_3, @tab_4, @tab_5 + new_tab_bar.selectedIndex.should == 0 + end + + end + +end