lib/r2-oas/schema/editor.rb in r2-oas-0.1.2 vs lib/r2-oas/schema/editor.rb in r2-oas-0.1.3
- old
+ new
@@ -18,17 +18,19 @@
module Schema
class Editor < Base
extend Forwardable
TMP_FILE_NAME = 'edited_schema'
+ ALERT_TEXT = 'Would you like to convert your JSON into YAML?'
attr_accessor :edited_schema
def initialize(before_schema_data, options)
super(options)
@editor = swagger.editor
@before_schema_data = before_schema_data
+ @schema_doc_from_local = YAML.load_file(doc_save_file_path).to_yaml
end
def start
EM.run do
container.start
@@ -71,18 +73,32 @@
analyzer.analyze_docs
end
def ensure_save_tmp_schema_file
EM.add_periodic_timer(interval_to_save_edited_tmp_schema) do
- if @browser.exists?
- @after_schema_data = @browser.driver.local_storage[storage_key] || @after_schema_data
- save_edited_schema
- puts "\nwait for signal trap ..."
+ m = Mutex.new
+ return nil unless @browser.exists?
+
+ m.synchronize do
+ begin
+ save_after_fetch_local_strage
+ rescue Selenium::WebDriver::Error::UnexpectedAlertOpenError
+ alert = @browser.driver.switch_to.alert
+ if alert.text.eql?(ALERT_TEXT)
+ alert.accept && save_after_fetch_local_strage
+ end
+ end
end
end
end
+ def save_after_fetch_local_strage
+ @after_schema_data = @browser.driver.local_storage[storage_key] || @after_schema_data
+ save_edited_schema
+ puts "\nwait for signal trap ..."
+ end
+
def fetch_edited_schema_from_browser
@after_schema_data = @browser.driver.local_storage[storage_key] if @browser.exists?
end
def save_edited_schema
@@ -92,11 +108,10 @@
def open_browser_and_set_schema
capabilities = { 'chromeOptions' => { 'w3c' => false } }
@browser ||= Watir::Browser.new(:chrome, capabilities)
@browser.goto(url)
if wait_for_loaded
- schema_doc_from_local = YAML.load_file(doc_save_file_path)
- @browser.driver.local_storage[storage_key] = schema_doc_from_local.to_yaml
+ @browser.driver.local_storage[storage_key] = @schema_doc_from_local
@browser.refresh
end
end
def wait_for_loaded