lib/briar/email.rb in briar-0.0.6 vs lib/briar/email.rb in briar-0.0.7

- old
+ new

@@ -1,17 +1,21 @@ require 'calabash-cucumber' module Briar module Email + def warn_about_ios6_email_view + warn 'WARN: iOS6 detected - cannot test for email views on iOS simulator or devices' + end + def email_body query("view:'MFComposeTextContentView'", :text) end def email_body_contains? (text) if gestalt.is_ios6? - puts 'WARN: cannot test for email body text on iOS 6 - see https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' + warn 'WARN: iOS6 detected - cannot test for email body text https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' else !query("view:'MFComposeTextContentView' {text LIKE '*#{text}*'}").empty? end end @@ -19,19 +23,19 @@ query("view:'MFComposeSubjectView'", :text).first end def email_subject_is? (text) if gestalt.is_ios6? - puts 'WARN: cannot test for email subject text on iOS 6 - see https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' + warn 'WARN: iOS6 detected - cannot test for email subject text https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' else email_subject.eql? text end end def email_subject_has_text_like? (text) if gestalt.is_ios6? - puts 'WARN: cannot test for email subject text on iOS 6 - see https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' + warn 'WARN: iOS6 detected - cannot test for email subject text https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' else !query("view:'MFComposeSubjectView' {text LIKE '*#{text}*'}").empty? end end @@ -39,35 +43,63 @@ query("view:'_MFMailRecipientTextField'", :text).first end def email_to_field_is? (text) if gestalt.is_ios6? - puts "WARN: iOS6 detected - cannot test for email 'to' field on iOS simulator or devices" + warn 'WARN: iOS6 detected - cannot test for email to field https://groups.google.com/d/topic/calabash-ios/Ff3XFsjp-B0/discussion' else email_to.eql? text end end def email_to_contains? (address) addrs = email_to.split(/, ?/) addrs.include? address end + def should_see_recipients (addresses) + should_see_mail_view + wait_for_animation + addrs = addresses.split(/, ?/) + addrs.each do |expected| + unless email_to_contains? expected.strip + screenshot_and_raise "expected to see '#{expected}' in the email 'to' field but found '#{email_to}'" + end + end + end + def is_ios5_mail_view query("layoutContainerView descendant view:'MFMailComposeView'").count == 1 end def is_ios6_mail_view gestalt.is_ios6? - # sometimes this is returning false - # access_ids = query("view", :accessibilityIdentifier) - # access_ids.member?("RemoteViewBridge") end - def should_see_mail_view - wait_for_animation + def should_see_mail_view (opts={:wait => true}) + wait = opts[:wait] + wait_for_animation if wait || wait == nil unless is_ios5_mail_view || is_ios6_mail_view screenshot_and_raise 'expected to see email view' + end + end + + def device_can_send_email + return true if gestalt.is_simulator? + backdoor('calabash_backdoor_configured_for_mail:', 'ignorable').eql? 'YES' + end + + def delete_draft_and_wait_for (view_id) + if gestalt.is_ios6? + warn_about_ios6_email_view + else + should_see_mail_view({:wait => false}) + touch_navbar_item 'Cancel' + wait_for_animation + touch_transition("button marked:'Delete Draft'", + "view marked:'#{view_id}'", + {:timeout=>TOUCH_TRANSITION_TIMEOUT, + :retry_frequency=>TOUCH_TRANSITION_RETRY_FREQ}) end end end end