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