Matching key,values of Hash of Hash in script with key,values of Array of Hash got from the page is not working
Title
Question
I <span style="color: rgb(36, 39, 41); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 19.5px;">want to write a Ruby script to check if the layer found in DOM in Firebug for a page (For example: www.jira.com) is matching with the hash values declared in my script. Below is the Ruby script I have written:</span>
I want to write a Ruby script to check if the layer found in DOM in Firebug for a page (For example: www.jira.com) is matching with the hash values declared in my script. Below is the Ruby script I have written:
require 'watir'
# Initialize the browser
browser = Watir::Browser.new(:chrome)
# Go to the page
browser.goto('www.jira.com')
# Initialize hash for what needs to be matched. I initiliazed this way because in future, if some more addition comes to the hash, it will be easy to fix
JIRA_DATA_LAYER = {
    'one' => {
              'event'     => 'gtm.js',
              'gtm.start' => 1468393184212,
             },
}
# Function to read the elements of datalayer of JIRA
def read_data_layer(browser)
    data_layer = browser.execute_script("return dataLayer")
    return data_layer
end
# Function to compare the values of JIRA got directly from the page
def compare_jira_data_layer(browser)
    result = []
    compare_data_layer = read_data_layer(browser)
    compare_data_layer[0].each do |key,value|
       result.push(key)
    end
    return result.join("\\n")
end
# Function to check if the hash created and values got from page matches
def jira_data_layer(browser, layer)
    message = []
    result_compare = compare_jira_data_layer(browser)
    message.push('Checking Jira Data Layer')
    JIRA_DATA_LAYER.each do |key, value|
        value.each do |data_layer_key, data_layer_value|
            if data_layer_value == result_compare
                result = 'matches - PASS'
            else
                result = 'does not match - FAIL'
            end
            message.push("#{data_layer_key} #{result}")
        end
    end
    return message.join("\\n")
end
# Read the elements of the dataLayer from the page
data_layer = read_data_layer(browser)
puts jira_data_layer(browser, data_layer)
Following is the error I got when I ran the script in Netbeans.
event does not match - FAIL
gtm.start does not match - FAIL
I want the following OUTPUT to be achieved:
'event => gtm.js' matches - PASS
'gtm.start => 1468393184212' matches - PASS
My intention is that most part of possible code should be covered in function so that it can be used for more main scripts
Following code is not working:
# Function to check if the hash created and values got from page matches
def jira_data_layer(browser, layer)
    message = []
    result_compare = compare_jira_data_layer(browser)
    message.push('Checking Jira Data Layer')
    JIRA_DATA_LAYER.each do |key, value|
        value.each do |data_layer_key, data_layer_value|
            if data_layer_value == result_compare
                result = 'matches - PASS'
            else
                result = 'does not match - FAIL'
            end
            message.push("#{data_layer_key} #{result}")
        end
    end
    return message.join("\\n")
end
# Read the elements of the dataLayer from the page
data_layer = read_data_layer(browser)
puts jira_data_layer(browser, data_layer)
Where am I going wrong? Please help. Thanks in advance
<span style="color: rgb(36, 39, 41); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 19.5px;">
</span>
</span>
<span style="color: rgb(36, 39, 41); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 19.5px;">
</span>
</span>
Ruby General
