Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

require 'rubygems'
require 'selenium-webdriver'

require_relative "../../module/DriverUtility"
require_relative "../date_filter"
require_relative "../../helpers/entry_form"


class Diet < EntryForm
include DriverUtility

TITLE = ".main-title[aria-hidden]"
EVENT_TITLE = "eventTitle"
SELECT_BOX_MEAL_TYPE = "select[name='Meal Type']"
CALORIES_TEXTFIELD = "input[name='caloriesInput']"
FAT_TEXTFIELD = "input[name='fatInput']"
CARBS_TEXTFIELD = "input[name='carbInput']"
PROTEIN_TEXTFIELD = "input[name='proteinInput']"
NOTE_TEXTFIELD= "textarea[name='Note']"

def initialize(driver)
@driver = driver
@date_filter = Date_Filter.new(@driver)
end

def getTitle()
return getTextForElement(:css, TITLE)
end

def clickAddMealBtn()
click(:css, "button[ng-click='getDetails()']")
end

def clickSaveNewBtn()
click(:css, "button[ng-click='confirmSave()']")
end

def clickCancelBtn()
click(:css, "button[ng-click='cancel()']")
end

def clickSaveExistingMealBtn()
click(:css, "button[ng-click='confirmSave()']")
end

def clickDeleteBtn()
click(:css, "button[ng-click='deleteItem()']")
end

def clickNthMeal(number)
click(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button")
end

def getPrimaryHeader()
return getTextForElement(:css, "div.primary-header h2")
end

def getSecondaryHeader()
return getTextForElement(:css, "div.secondary-header h2")
end

def selectType(type)
select = getElement(:css, "select[name='Meal Type']")
options = select.find_elements(:tag_name, "option").select
options.each do |option|
if(option.attribute('value') == type)
option.click
break
end
end
end

def selectBoxMealType(meal_type)
setSelectBoxValue(SELECT_BOX_MEAL_TYPE,meal_type)
end

def setCalories(calories_textfield)
setInput(CALORIES_TEXTFIELD, calories_textfield)
end

def setFat(textfield)
setInput(FAT_TEXTFIELD, textfield)
end

def setCarb(carbs_textfield)
setInput(CARBS_TEXTFIELD, carbs_textfield)
end

def setProtein(protein_textfield)
setInput(PROTEIN_TEXTFIELD, protein_textfield)
end

def setNarrative(text)
@driver.find_element(:css, "textarea[name='Note']").clear
@driver.find_element(:css, "textarea[name='Note']").send_keys(text)
end

def setNote(textfield)
setInput(NOTE_TEXTFIELD,textfield)
end

def setDateRange(fromDate, toDate)
@date_filter.setDateRangeAndFilter(fromDate, toDate)
sleep 5
end

def getNoResultsFoundMessage()
return getTextForElement(:css, '.no-results-message')
end

def verifyDefautDateRangeIs30DaysBack()
verifiedYes = false
todayDate = getDateNthDaysAgo(0, "%m/%d/%Y")
thirtyDaysAgo = getDateNthDaysAgo(30, "%m/%d/%Y")
fromDate = getTextFromInput(:css, "input[name='startDate']")

toDate = getTextFromInput(:css, "input[name='endDate']")
if toDate == todayDate and fromDate == thirtyDaysAgo then
verifiedYes = true
end
end

def isDateWithinFilteredDateRange?()
fromDate = getTextFromInput(:css, "input[name='startDate']")
toDate = getTextFromInput(:css, "input[name='endDate']")
#puts "[isDateWithinFilteredDateRange?()] Filter Date Range " + fromDate + " - " + toDate

mealCount = getTotalMealCount()
isValid = true

fromDateObj = DateTime.strptime(fromDate, "%m/%d/%Y")
toDateObj = DateTime.strptime(toDate, "%m/%d/%Y")

for i in 1..mealCount
mealDateTime = getNthDateTimeInMealList(i)
mealDateArry = mealDateTime.split(" ")
mealDate = mealDateArry[0]
mealDateObj = DateTime.strptime(mealDate, "%m/%d/%Y")

#puts "mealDate " + mealDate
if mealDateObj <= fromDateObj and mealDateObj >= toDateObj then
isValid = false
break
end
end

return isValid

end

def getNthDateTimeInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(1) div:nth-of-type(2)")
end

def getNthCaloriesInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(2) div:nth-of-type(1)")
end

def getNthTypeInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(1) div:nth-of-type(1) strong")
end

def getNthFatInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(2) div:nth-of-type(2)")
end

def getNthCarbInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(3) div:nth-of-type(1)")
end

def getNthProteinInMealList(number)
return getTextForElement(:css, "ul.secondary-list li:nth-of-type(" + number.to_s + ") button div:nth-of-type(3) div:nth-of-type(2)")
end

def getNthLabelCalories()
return getTextForElement(:css, "#caloriesInput div label span span:nth-of-type(1)")
end

def getNthLabelFat()
return getTextForElement(:css, "#fatInput div label span span:nth-of-type(1)")
end

def getNthLabelCarbs()
return getTextForElement(:css, "#carbInput div label span span:nth-of-type(1)")
end

def getNthLabelProtein()
return getTextForElement(:css, "#proteinInput div label span span:nth-of-type(1)")
end

def getMessageInEventDetail()
return getTextForElement(:css, "div[ng-if='!details'] span")
end

def getTotalMealCount()
begin
elements = getElements(:css, "ul.secondary-list li strong")
return elements.length
rescue Exception=>e
puts "Exception " + e.to_s
return 0
end
end

def findIndexWithAGivenMealType(mealType)
mealLength = getTotalMealCount()
#puts "Meal Length : " + mealLength.to_s
index = -1

for i in 1..mealLength
#puts "listtype = " + getNthTypeInMealList(i)
listtype = getNthTypeInMealList(i)
if listtype == mealType then
index = i
break
end
end
#puts "rowIndex found : " + index.to_s
return index
end

def isThisMealDisplayed?(mealType)
isDisplaying = false
rowIndex = findIndexWithAGivenMealType(mealType)
if(rowIndex > 0)
isDisplaying = true
end
return isDisplaying
end

def addAMeal(dateStr, timeStr, type, calories, fat, carb, protein, text)
clickAddMealBtn()
!15.times{ break if (getPrimaryHeader() == "Add Diet Entry"); sleep 1 }
getPrimaryHeader().should == "Add Diet Entry"

setDateAndTime(dateStr, timeStr, "input[name='date']", "input[name='time']")
sleep 0.5
selectType(type)
sleep 0.2
setCalories(calories)
sleep 0.2
setFat(fat)
sleep 0.2
setCarb(carb)
sleep 0.2
setProtein(protein)
sleep 0.2
setNarrative(text)
sleep 0.2
clickSaveNewBtn()
end

def verifyTotalCharacterInNarrative()
boundaryTest = false
part1 = "VerifyTheTotalAllowedCharactersInNarrativeField001"
part2 = "VerifyTheTotalAllowedCharactersInNarrativeField002"
part3 = "VerifyTheTotalAllowedCharactersInNarrativeField003"
part4 = "VerifyTheTotalAllowedCharactersInNarrativeField004"
part5 = "VerifyTheTotalAllowedCharactersInNarrativeField005"
typeInText = part1 + part2+ part3 + part4 + part5

setNarrative(typeInText)

counterText = getTextForElement(:css, "span[ng-if='characterCounter']")
if counterText == "0 characters left"
boundaryTest = true
else
boundaryTest = false
end

return boundaryTest
end

def EditAMeal(number)
setCalories(number)
clickSaveExistingMealBtn()
end

#"%Y-%m-%d"
def getDateNthDaysAgo(numberOfDaysAgo, formatStr)
dateNthDaysAgo = numberOfDaysAgo.day.ago.strftime(format=formatStr)
return dateNthDaysAgo

end



def breakfast_Entry

mealCount = 0
time = Time.new
today = time.strftime("%m/%d/%Y")
#puts today
morningTime = "08:00 AM"
noonTime = "12:00 PM"
dinnerTime = "06:00 PM"
snackTime = "03:00 PM"

yesterday = @diet.getDateNthDaysAgo(1, "%m/%d/%Y")

clickAddMealBtn
waitForPageToFinishLoading
@driver.find_element(:id, "date").clear
sleep 1
@driver.find_element(:id, "date").send_keys (yesterday)
sleep 1
@driver.find_element(:id, "time").clear
sleep 1
@driver.find_element(:id, "time").send_keys (morningTime)
sleep 1
@driver.find_element(:css, "select[name='Meal Type']").send_keys "Breakfast"
waitForPageToFinishLoading
@driver.find_element(:css, "input[name='caloriesInput']").send_keys "300"
sleep 1
@driver.find_element(:css, "input[name='fatInput']").send_keys "10"
sleep 1
@driver.find_element(:css, "input[name='carbInput']").send_keys "50"
sleep 1
@driver.find_element(:css, "input[name='proteinInput']").send_keys "14"
sleep 1
@driver.find_element(:css, "textarea[name='Note']").send_keys "Delicious"
sleep 1
clickSaveButton
waitForPageToFinishLoading
end

# def lunch_Entry
#
# mealCount = 0
# time = Time.new
# today = time.strftime("%m/%d/%Y")
# #puts today
# morningTime = "08:00 AM"
# noonTime = "12:00 PM"
# dinnerTime = "06:00 PM"
# snackTime = "03:00 PM"
#
# yesterday = @diet.getDateNthDaysAgo(1, "%m/%d/%Y")
#
# clickAddMealBtn
# waitForPageToFinishLoading
# @driver.find_element(:id, "date").clear
# sleep 1
# @driver.find_element(:id, "date").send_keys (yesterday)
# sleep 1
# @driver.find_element(:id, "time").clear
# sleep 1
# @driver.find_element(:id, "time").send_keys (noonTime)
# sleep 1
# @driver.find_element(:css, "select[name='Meal Type']").send_keys "Lunch"
# waitForPageToFinishLoading
# @driver.find_element(:css, "input[name='caloriesInput']").send_keys "600"
# sleep 1
# @driver.find_element(:css, "input[name='fatInput']").send_keys "20"
# sleep 1
# @driver.find_element(:css, "input[name='carbInput']").send_keys "50"
# sleep 1
# @driver.find_element(:css, "input[name='proteinInput']").send_keys "33"
# sleep 1
# @driver.find_element(:css, "textarea[name='Note']").send_keys "I enjoyed the meal"
# sleep 1
# clickSaveButton
# waitForPageToFinishLoading
#
# end
#
# def snack_Entry
#
# mealCount = 0
# time = Time.new
# today = time.strftime("%m/%d/%Y")
# #puts today
# morningTime = "08:00 AM"
# noonTime = "12:00 PM"
# dinnerTime = "06:00 PM"
# snackTime = "03:00 PM"
#
# yesterday = @diet.getDateNthDaysAgo(1, "%m/%d/%Y")
#
# clickAddMealBtn
# waitForPageToFinishLoading
# @driver.find_element(:id, "date").clear
# sleep 1
# @driver.find_element(:id, "date").send_keys (yesterday)
# sleep 1
# @driver.find_element(:id, "time").clear
# sleep 1
# @driver.find_element(:id, "time").send_keys (snackTime)
# sleep 1
# @driver.find_element(:css, "select[name='Meal Type']").send_keys "Snack"
# waitForPageToFinishLoading
# @driver.find_element(:css, "input[name='caloriesInput']").send_keys "150"
# sleep 1
# @driver.find_element(:css, "input[name='fatInput']").send_keys "7"
# sleep 1
# @driver.find_element(:css, "input[name='carbInput']").send_keys "30"
# sleep 1
# @driver.find_element(:css, "input[name='proteinInput']").send_keys "9"
# sleep 1
# @driver.find_element(:css, "textarea[name='Note']").send_keys "Yummy protein bar."
# sleep 1
# clickSaveButton
# waitForPageToFinishLoading
#
# end
#
# def dinner_Entry
# mealCount = 0
# time = Time.new
# today = time.strftime("%m/%d/%Y")
# #puts today
# morningTime = "08:00 AM"
# noonTime = "12:00 PM"
# dinnerTime = "06:00 PM"
# snackTime = "03:00 PM"
#
# yesterday = @diet.getDateNthDaysAgo(1, "%m/%d/%Y")
#
# clickAddMealBtn
# waitForPageToFinishLoading
# @driver.find_element(:id, "date").clear
# sleep 1
# @driver.find_element(:id, "date").send_keys (yesterday)
# sleep 1
# @driver.find_element(:id, "time").clear
# sleep 1
# @driver.find_element(:id, "time").send_keys (dinnerTime)
# sleep 1
# @driver.find_element(:css, "select[name='Meal Type']").send_keys "Dinner"
# waitForPageToFinishLoading
# @driver.find_element(:css, "input[name='caloriesInput']").send_keys "800"
# sleep 1
# @driver.find_element(:css, "input[name='fatInput']").send_keys "24"
# sleep 1
# @driver.find_element(:css, "input[name='carbInput']").send_keys "55"
# sleep 1
# @driver.find_element(:css, "input[name='proteinInput']").send_keys "37"
# sleep 1
# @driver.find_element(:css, "textarea[name='Note']").send_keys "I did not feel stuffed after dinner."
# sleep 1
# clickSaveButton
# waitForPageToFinishLoading
# end

end