From e3d1b37063c5f5d28a0957fc697c5427132d4740 Mon Sep 17 00:00:00 2001 From: Mark Rickert Date: Sat, 8 Jun 2013 12:11:26 -0400 Subject: [PATCH] Passing tests for new accessoryview paradigm. --- spec/functional/func_table_screen_spec.rb | 27 ++++++++++++ spec/helpers/table_screen.rb | 54 +++++++++-------------- spec/unit/tables/table_screen_spec.rb | 7 ++- spec/unit/tables/table_view_cell_spec.rb | 3 +- 4 files changed, 53 insertions(+), 38 deletions(-) diff --git a/spec/functional/func_table_screen_spec.rb b/spec/functional/func_table_screen_spec.rb index ef2daa2..1258d2e 100644 --- a/spec/functional/func_table_screen_spec.rb +++ b/spec/functional/func_table_screen_spec.rb @@ -49,4 +49,31 @@ describe "ProMotion::TestTableScreen functionality" do @controller.tableView(@controller.tableView, numberOfRowsInSection:0).should == 5 end + it "should call a method when the switch is flipped" do + @controller.scroll_to_bottom + wait 0.5 do + tap "switch_1" + @controller.tap_counter.should == 1 + end + end + + it "should call the method with arguments when the switch is flipped" do + @controller.scroll_to_bottom + wait 0.5 do + tap "switch_2" + @controller.tap_counter.should == 3 + end + end + + it "should call the method with arguments when the switch is flipped and when the cell is tapped" do + @controller.scroll_to_bottom + wait 0.5 do + tap "switch_3" + @controller.tap_counter.should == 3 + + tap "Switch With Cell Tap, Switch Action And Parameters" + @controller.tap_counter.should == 13 + end + end + end diff --git a/spec/helpers/table_screen.rb b/spec/helpers/table_screen.rb index b57b534..18a26bc 100644 --- a/spec/helpers/table_screen.rb +++ b/spec/helpers/table_screen.rb @@ -1,20 +1,22 @@ class TestTableScreen < ProMotion::SectionedTableScreen + attr_accessor :tap_counter + def promotion_table_data @promotion_table_data end def on_load - @tap_counter ||= 0 + self.tap_counter = 0 end def table_data @data ||= [{ title: "Your Account", cells: [ - { title: "Increment", action: :increment_counter_by, arguments: { number: 3 } }, + { title: "Increment", action: :increment_counter_by, arguments: {number: 3} }, { title: "Add New Row", action: :add_tableview_row }, - { title: "Delete the row below", action: :delete_cell, arguments: {section: 0, row:3 } }, + { title: "Delete the row below", action: :delete_cell, arguments: {section: 0, row:3} }, { title: "Just another blank row" }, { title: "Delete the row below with an animation", action: :delete_cell, arguments: {animated: true, section: 0, row:5 } }, { title: "Just another blank row" } @@ -36,45 +38,30 @@ class TestTableScreen < ProMotion::SectionedTableScreen }, { title: "Cell Accessory Tests", cells: [{ - title: "Basic Switch", - accessory: :switch - }, { title: "Switch With Action", accessory: { view: :switch, - action: :tap_counter + action: :increment_counter, + accessibility_label: "switch_1" } , }, { title: "Switch With Action And Parameters", accessory: { view: :switch, action: :increment_counter_by, - arguments: { number: 3 } + arguments: { number: 3 }, + accessibility_label: "switch_2" } , - }, { - title: "Custom View", - accessory: custom_accessory_view - }, { - title: "Custom View With Action", - accessory:{ - view: custom_accessory_view, - action: :tap_counter - }, - }, { - title: "Custom View With Action And Parameters", - accessory: { - view: :switch, - action: :increment_counter_by, - arguments: { number: 3 } - }, }, { title: "Switch With Cell Tap, Switch Action And Parameters", accessory:{ view: :switch, action: :increment_counter_by, arguments: { number: 3 }, + accessibility_label: "switch_3" }, - action: :increment_counter_by, accessory_arguments: { number: 10 } + action: :increment_counter_by, + arguments: { number: 10 } }] }] end @@ -99,16 +86,12 @@ class TestTableScreen < ProMotion::SectionedTableScreen end end - def increment_counter(args={}) - @tap_counter += 1 + def increment_counter + self.tap_counter = self.tap_counter + 1 end def increment_counter_by(args={}) - @tap_counter = @tap_counter + args[:number] - end - - def tap_counter - @tap_counter + self.tap_counter = self.tap_counter + args[:number] end def custom_accessory_view @@ -117,4 +100,11 @@ class TestTableScreen < ProMotion::SectionedTableScreen } end + def scroll_to_bottom + if table_view.contentSize.height > table_view.frame.size.height + offset = CGPointMake(0, table_view.contentSize.height - table_view.frame.size.height) + table_view.setContentOffset(offset, animated:false) + end + end + end diff --git a/spec/unit/tables/table_screen_spec.rb b/spec/unit/tables/table_screen_spec.rb index be58fe7..4deac34 100644 --- a/spec/unit/tables/table_screen_spec.rb +++ b/spec/unit/tables/table_screen_spec.rb @@ -15,6 +15,7 @@ describe "table screens" do @screen.tableView(@screen.tableView, numberOfRowsInSection:0).should == 6 @screen.tableView(@screen.tableView, numberOfRowsInSection:1).should == 2 @screen.tableView(@screen.tableView, numberOfRowsInSection:2).should == 4 + @screen.tableView(@screen.tableView, numberOfRowsInSection:3).should == 3 end it "should return a UITableViewCell" do @@ -30,10 +31,8 @@ describe "table screens" do end it "should display all images properly no matter how they were initialized" do - section = @screen.promotion_table_data.sections.count - 1 # All the cells we want to test are in the last section - - @screen.tableView(@screen.tableView, numberOfRowsInSection:section).times do |i| - index_path = NSIndexPath.indexPathForRow(i, inSection: section) + @screen.tableView(@screen.tableView, numberOfRowsInSection:2).times do |i| + index_path = NSIndexPath.indexPathForRow(i, inSection:2) @screen.tableView(@screen.tableView, cellForRowAtIndexPath: index_path).imageView.should.be.kind_of UIImageView diff --git a/spec/unit/tables/table_view_cell_spec.rb b/spec/unit/tables/table_view_cell_spec.rb index e4b5cf7..0fcf19e 100644 --- a/spec/unit/tables/table_view_cell_spec.rb +++ b/spec/unit/tables/table_view_cell_spec.rb @@ -13,8 +13,7 @@ describe "PM::TableViewCellModule" do layer: { masks_to_bounds: true }, background_color: UIColor.redColor, selection_style: UITableViewCellSelectionStyleGray, - accessory: :switch, # currently only :switch is supported - accessory_checked: true, # whether it's "checked" or not + accessory:{view: :switch, value: true}, # currently only :switch is supported image: { image: UIImage.imageNamed("list"), radius: 15 }, subviews: [ UIView.alloc.initWithFrame(CGRectZero), UILabel.alloc.initWithFrame(CGRectZero) ] # arbitrary views added to the cell }