mirror of
https://github.com/zhigang1992/ProMotion.git
synced 2026-05-15 07:37:21 +08:00
117 lines
3.6 KiB
Ruby
117 lines
3.6 KiB
Ruby
describe "ProMotion::TableScreen functionality" do
|
|
tests PM::TestTableScreen
|
|
|
|
def table_screen
|
|
@table_screen ||= begin
|
|
t = TestTableScreen.new(nav_bar: true)
|
|
t.on_load
|
|
t
|
|
end
|
|
end
|
|
|
|
def controller
|
|
rotate_device to: :portrait, button: :bottom
|
|
table_screen.navigationController
|
|
end
|
|
|
|
def confirmation_class
|
|
TestHelper.ios7 ? "UITableViewCellDeleteConfirmationButton" : "UITableViewCellDeleteConfirmationControl"
|
|
end
|
|
|
|
def table_label_class
|
|
TestHelper.ios7 ? "UILabel" : "UITableViewLabel"
|
|
end
|
|
|
|
before { UIView.setAnimationDuration 0.01 }
|
|
|
|
after { @table_screen = nil }
|
|
|
|
it "should have a navigation bar" do
|
|
table_screen.navigationController.should.be.kind_of(UINavigationController)
|
|
end
|
|
|
|
it "should increment the tap counter on tap" do
|
|
tap("Increment")
|
|
table_screen.tap_counter.should == 3
|
|
end
|
|
|
|
it "should add a new table cell on tap" do
|
|
tap("Add New Row")
|
|
view("Dynamically Added").class.to_s.should == table_label_class
|
|
end
|
|
|
|
it "should do nothing when no action specified" do
|
|
tap("Just another blank row")
|
|
table_screen.should == table_screen
|
|
end
|
|
|
|
it "should increment the tap counter by one on tap" do
|
|
tap("Increment One")
|
|
table_screen.tap_counter.should == 1
|
|
end
|
|
|
|
it "should delete the specified row from the table view on tap" do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
tap("Delete the row below")
|
|
wait 0.11 do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
end
|
|
end
|
|
|
|
it "should delete the specified row from the table view on tap with an animation" do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
tap("Delete the row below with an animation")
|
|
wait 0.11 do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
end
|
|
end
|
|
|
|
# TODO: Why is it so complicated to find the delete button??
|
|
it "should use editing_style to delete the table row" do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
table_screen.cell_was_deleted.should != true
|
|
flick("Just another deletable blank row", :to => :left)
|
|
|
|
wait 0.11 do
|
|
# Tap the delete button
|
|
view('Just another deletable blank row').superview.superview.subviews.each do |subview|
|
|
if subview.class.to_s == confirmation_class
|
|
tap subview
|
|
wait 0.11 do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
table_screen.cell_was_deleted.should == true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
it "should not allow deleting if on_cell_delete returns `false`" do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
table_screen.cell_was_deleted.should != true
|
|
flick("A non-deletable blank row", :to => :left)
|
|
|
|
wait 0.11 do
|
|
# Tap the delete button
|
|
view('A non-deletable blank row').superview.superview.subviews.each do |subview|
|
|
if subview.class == confirmation_class
|
|
tap subview
|
|
wait 0.11 do
|
|
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
table_screen.cell_was_deleted.should != false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
it "should not crash if cell with editing_style is swiped left" do
|
|
Proc.new { flick("Just another deletable blank row", to: :left) }.should.not.raise(StandardError)
|
|
end
|
|
|
|
it "should not crash if cell with no editing_style is swiped left" do
|
|
Proc.new { flick("Increment", to: :left) }.should.not.raise(StandardError)
|
|
end
|
|
|
|
end
|