#---
#This unit test checks the housings screen.
#---
class Test_03_housings_screen < Test::Unit::TestCase
  #
  #Test we can logon to the system using the webmip administrator user�s login credentials and check that 
  #all the columns required for the report appears with the button to create a new housing record
  #
  def test_01_housing_screen_appears
    @@ie.goto(HOUSING)
    #we'll need to login
    login(MIPADMIN, MIPADMIN_PWD)
    assert(@@ie.contains_text('Housings'),'The housing screen did not appear')
    assert(@@ie.contains_text('Housing Code'),'The housing code column did not appear')
    assert(@@ie.contains_text('Housing Type'),'The housing type column did not appear')
    assert(@@ie.contains_text('Housing Description'),'The housing description column did not appear')
    assert(@@ie.contains_text('Dim L'),'The Dim L column did not appear')
    assert(@@ie.contains_text('Dim W'),'The Dim W column did not appear')
    assert(@@ie.contains_text('Dim H'),'The Dim H column did not appear')
    assert(@@ie.contains_text('Weight'),'The drawing code column did not appear')
    assert(@@ie.contains_text('Drawing Code'),'The drawing code column did not appear')
    assert(@@ie.contains_text('Manufacturer'),'The manufacturer column did not appear')
    assert(@@ie.button(:id, 'create').exists?,'The create button was not available')        
  end
  #
  #Check that the Create/Edit Housing form can be accessed using the Create button on the Housings report, 
  #all the required columns appears on the screen along with create and cancel buttons 
  # assert(@@ie.select_list(:id, 'P5_COLUMN_NAMES').exists?,'The column headings field was not available')
  #
  def test_02_create_housing_screen_appears
    @@ie.button(:id, 'create').click
    @@ie.wait
    assert(@@ie.contains_text('Create/Edit Housing'),'The create/edit housing screen did not appear')
    assert(@@ie.text_field(:id, 'P55_CODE').exists?,'The housing code field is not available')
    assert(@@ie.select_list(:id, 'P55_HOTY_CODE').exists?,'The housing type field is not available')
    assert(@@ie.text_field(:id, 'P55_DESCRIPTION').exists?,'The housing description field is not available')
    assert(@@ie.text_field(:id, 'P55_DIM_L').exists?,'The dimension L field is not available')
    assert(@@ie.text_field(:id, 'P55_DIM_W').exists?,'The dimension W field is not available')
    assert(@@ie.text_field(:id, 'P55_DIM_H').exists?,'The dimension H field is not available')
    assert(@@ie.text_field(:id, 'P55_WEIGHT').exists?,'The weight field is not available')
    assert(@@ie.select_list(:id, 'P55_DRWG_CODE').exists?,'The drawing code field is not available')
    assert(@@ie.select_list(:id, 'P55_PRTY_ID').exists?,'The manufacturer field is not available')
    assert(@@ie.button(:id, 'create').exists?,'The create button was not available') 
    assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
  end
  #~ def test_03_correct_lists_of_values_displayed
    #~ listofhousingtypes= W%[LIFT OFF
    #~ WALK IN
    #~ WALK THOUGH]
    #~ assert_equal(listofhousingtypes,@@ie.select_list(:id, 'P3_HOTY_CODE').getAllContents ,'The expected list of housing types was not found')
    #~ listofmanufacturers= W%[ACTARIS,
                                        #~ DRESSER,
                                        #~ QUINSHIELD]
    #~ assert_equal(listofmanufacturers,@@ie.select_list(:id, 'P3_PRTY_ID').getAllContents,'The expected list of manufacturers was not found')
  #~ end
  #
  #Check that the Create/Edit Housing form allows data to be inserted to create a new housing
  #Check that the new housing record appears in the Housings report
  #
  def test_03_create_housing
    @@ie.text_field(:id, 'P55_CODE').set('1766H')
    @@ie.select_list(:id, 'P55_HOTY_CODE').select('Lift Off')
    @@ie.text_field(:id, 'P55_DESCRIPTION').set('Housing for meters')
    @@ie.text_field(:id, 'P55_DIM_L').set('3800')
    @@ie.text_field(:id, 'P55_DIM_W').set('1400')
    @@ie.text_field(:id, 'P55_DIM_H').set('2400')
    @@ie.text_field(:id, 'P55_WEIGHT').set('400')
    @@ie.select_list(:id, 'P55_DRWG_CODE').select('WI')
    @@ie.select_list(:id, 'P55_PRTY_ID').select('DRESSER')
    @@ie.button(:id, 'create').click
    @@ie.wait
    assert(@@ie.contains_text('Housings'),'The housing screen did not appear')
    assert(@@ie.contains_text('1766H'),'The new record with housing code 1766H did not appear')
    assert(@@ie.contains_text('Lift Off'),'The new record with housing type lift off did not appear')
    assert(@@ie.contains_text('Housing for meters'),'The description Housing for meters did not appear')
    assert(@@ie.contains_text('3800'),'The value 3800 for Dim L did not appear')
    assert(@@ie.contains_text('1400'),'The value 1400 for Dim W did not appear')
    assert(@@ie.contains_text('2400'),'The value 2400 for Dim H did not appear')
    assert(@@ie.contains_text('400'),'The value 400 for weight  did not appear')
    assert(@@ie.contains_text('WI'),'The new record with drawing code WI did not appear')
    assert(@@ie.contains_text('DRESSER'),'The new record with manufacturer dresser did not appear')
    @@ie.button(:id, 'create').click
    @@ie.wait
    @@ie.text_field(:id, 'P55_CODE').set('3811H')
    @@ie.select_list(:id, 'P55_HOTY_CODE').select('Walk Thru')
    @@ie.text_field(:id, 'P55_DESCRIPTION').set('Housing for regulators')
    @@ie.text_field(:id, 'P55_DIM_L').set('3600')
    @@ie.text_field(:id, 'P55_DIM_W').set('1700')
    @@ie.text_field(:id, 'P55_DIM_H').set('2200')
    @@ie.text_field(:id, 'P55_WEIGHT').set('300')
    @@ie.select_list(:id, 'P55_DRWG_CODE').select('WI')
    @@ie.select_list(:id, 'P55_PRTY_ID').select('ACTARIS')
    @@ie.button(:id, 'create').click
    @@ie.wait
    assert(@@ie.contains_text('Housings'),'The housing screen did not appear')
    assert(@@ie.contains_text('3811H'),'The new record with drawing code 3811H did not appear')
    assert(@@ie.contains_text('Walk Thru'),'The new record with housing type walk through did not appear')
    assert(@@ie.contains_text('Housing for regulators'),'The description Housing for regulators did not appear')
    assert(@@ie.contains_text('3600'),'The value 3600 for Dimension L did not appear')
    assert(@@ie.contains_text('1700'),'The value 1700 for Dimension W  did not appear')
    assert(@@ie.contains_text('2200'),'The value 2200 for Dimension H  did not appear')
    assert(@@ie.contains_text('300'),'The value 300 for weight  did not appear')
    assert(@@ie.contains_text('WI'),'The new record with drawing code WI did not appear')
    assert(@@ie.contains_text('ACTARIS'),'The new record with manufacturer dresser did not appear')
  end
  # 
  #Check that the code 1765H  links to the Create/Edit Housing form and the form appears with the correct data 
  #in the fields. Check that the housing description can be updated and the updated record appears in the Housings report
  # 
  def test_04_update_housing
    @@ie.link(:text, '1766H').click
    @@ie.wait
    assert(@@ie.contains_text('Create/Edit Housings'),'The Create/Edit Housings screen did not appear')
    assert(@@ie.contains_text('1766H'), 'The housing code field did not contain value 1765H')
    #assert_equal(@@ie.select_list(:id, 'P55_HOTY_CODE').getAllContents, ['Lift Off', 'Unknown Housing Type - inserted for bulk load', 'Walk In', 'Walk Through'], 'Not all values found in Housing type Select list')
    assert(@@ie.select_list(:id, 'P55_HOTY_CODE').selected?('Lift Off'), 'The housing type is not LIFT OFF')    
    assert(@@ie.text_field(:id, 'P55_DESCRIPTION').verify_contains('Housing for meters'), 'The description is not housing for meters')
    assert(@@ie.text_field(:id, 'P55_DIM_L').verify_contains('3800'), 'DIM L is not 3800')
    assert(@@ie.text_field(:id, 'P55_DIM_W').verify_contains('1400'), 'DIM W is not 1400')
    assert(@@ie.text_field(:id, 'P55_DIM_H').verify_contains('2400'), 'DIM H is not 2400')
    assert(@@ie.text_field(:id, 'P55_WEIGHT').verify_contains('400'), 'Weight is not 400')
    assert(@@ie.select_list(:id, 'P55_DRWG_CODE').selected?('WI'), 'Drawing code is not WI')
    assert(@@ie.select_list(:id, 'P55_PRTY_ID').selected?('DRESSER'), 'Manufacturer is not DRESSER')
    assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
    assert(@@ie.button(:id, 'delete').exists?,'The delete button was not available') 
    assert(@@ie.button(:id, 'apply_changes').exists?,'The Apply Changes button was not available') 
    @@ie.text_field(:id, 'P55_DESCRIPTION').set('Housing for slamshut valves')
    @@ie.button(:id, 'apply_changes').click
    @@ie.wait
    assert(@@ie.contains_text('Housings'),'The housing screen did not appear')
    assert(@@ie.contains_text('1766H'),'The new record with housing code 1765H did not appear')
    assert(@@ie.contains_text('Lift Off'),'The new record with housing type lift off did not appear')
    assert(@@ie.contains_text('Housing for slamshut valves'),'The updated description Housing for slamshut valves did not appear')
    assert(@@ie.contains_text('3800'),'The value 3800 for Dimension L did not appear')
    assert(@@ie.contains_text('1400'),'The value 1400 for Dimension W  did not appear')
    assert(@@ie.contains_text('2400'),'The value 2400 for Dimension H  did not appear')
    assert(@@ie.contains_text('400'),'The value 400 for weight  did not appear')
    assert(@@ie.contains_text('WI'),'The new record with drawing code WI did not appear')
    assert(@@ie.contains_text('DRESSER'),'The new record with manufacturer dresser did not appear')
  end
  #
  #Check that the housing 3811H can be deleted and that the record is no longer displayed in the report
  # can't delete housing due to javascript popup
#  def test_05_delete_housing
#    @@ie.link(:text, '3811H').click
#    @@ie.wait
#    assert(@@ie.text_field(:id, 'P55_CODE').verify_contains('3811H'), 'The housing code field did not contain value 3811H')
#    assert(@@ie.select_list(:id, 'P55_HOTY_CODE').selected?('Walk Thru'), 'The housing type is not Walk Through')
#    assert(@@ie.text_field(:id, 'P55_DESCRIPTION').verify_contains('Housing for regulators'), 'The description is not housing for meters')
#    assert(@@ie.text_field(:id, 'P55_DIM_L').verify_contains('3600'), 'DIM L is not 3600')
#    assert(@@ie.text_field(:id, 'P55_DIM_W').verify_contains('1700'), 'DIM W is not 1700')
#    assert(@@ie.text_field(:id, 'P55_DIM_H').verify_contains('2200'), 'DIM H is not 2200')
#    assert(@@ie.text_field(:id, 'P55_WEIGHT').verify_contains('300'), 'Weight is not 300')
#    assert(@@ie.select_list(:id, 'P55_DRWG_CODE').selected?('WI'), 'Drawing code is not WI')
#    assert(@@ie.select_list(:id, 'P55_PRTY_ID').selected?('ACTARIS'), 'Manufacturer is not ACTARIS')
#    assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
#    assert(@@ie.button(:id, 'delete').exists?,'The delete button was not available') 
#    assert(@@ie.button(:id, 'apply_changes').exists?,'The Apply Changes button was not available') 
#    startClicker("OK", 1)
#    @@ie.button(:id, 'delete').click
#    @@ie.wait
#    assert_nil(@@ie.contains_text('3811H'),'The housing code field did contain value 3811H')
#  end
  #
  #Check that the housing code cannot be updated 
  # 
  #~ def test_06_update_drawing_code
    #~ @@ie.link(:text, '1765H').click
    #~ @@ie.wait
    #~ assert(@@ie.contains_text('Create/Edit Housings'),'The Create/Edit Housings screen did not appear')
    #~ assert(@@ie.text_field(:id, 'P55_CODE').verify_contains('1765H'), 'The housing code field did not contain value 1765H')
    #~ assert(@@ie.select_list(:id, 'P55_HOTY_CODE').selected?('LIFT OFF'), 'The housing type is not LIFT OFF')
    #~ assert(@@ie.text_field(:id, 'P55_DESCRIPTION').verify_contains('Housing for slamshut valves'), 'The description is not housing for meters')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_L').verify_contains('3800'), 'DIM L is not 3800')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_W').verify_contains('1400'), 'DIM W is not 1400')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_H').verify_contains('2400'), 'DIM H is not 2400')
    #~ assert(@@ie.text_field(:id, 'P55_WEIGHT').verify_contains('400'), 'Weight is not 400')
    #~ assert(@@ie.select_list(:id, 'P55_DRWG_CODE').selected?('WI'), 'Drawing code is not WI')
    #~ assert(@@ie.select_list(:id, 'P55_PRTY_ID').selected?('DRESSER'), 'Manufacturer is not DRESSER')
    #~ assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
    #~ assert(@@ie.button(:id, 'delete').exists?,'The delete button was not available') 
    #~ assert(@@ie.button(:id, 'apply_changes').exists?,'The Apply Changes button was not available') 
    #~ @@ie.text_field(:id, 'P55_CODE').set("2245A")
    #~ @@ie.button(:id, 'apply_changes').click
    #~ @@ie.wait
    #~ assert(@@ie.contains_text('Housings'),'The housings screen did not appear')
    #~ assert(@@ie.contains_text('2245A'),'The record with housing code 2245A did not appear')
  #~ end
  #
  #Check that a housing record with child records cannot be deleted
  #
  #~ def test_07_delete_housing_child
    #~ @@ie.link(:text, '2016').click
    #~ @@ie.wait
    #~ assert(@@ie.text_field(:id, 'P55_CODE').verify_contains('2016'), 'The housing code field did not contain value 3811H')
    #~ assert(@@ie.select_list(:id, 'P55_HOTY_CODE').selected?('WALK IN'), 'The housing type is not LIFT OFF')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_L').verify_contains('2000'), 'DIM L is not 3600')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_W').verify_contains('1600'), 'DIM W is not 1700')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_H').verify_contains('2100'), 'DIM H is not 2200')
    #~ assert(@@ie.text_field(:id, 'P55_WEIGHT').verify_contains('0'), 'Weight is not 300')
    #~ assert(@@ie.select_list(:id, 'P55_DRWG_CODE').selected?('WI'), 'Drawing code is not WI')
    #~ assert(@@ie.select_list(:id, 'P55_PRTY_ID').selected?('ACTARIS'), 'Manufacturer is not ACTARIS')
    #~ assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
    #~ assert(@@ie.button(:id, 'delete').exists?,'The delete button was not available') 
    #~ assert(@@ie.button(:id, 'apply_changes').exists?,'The Apply Changes button was not available') 
    #~ @@ie.button(:id, 'delete').click
    #~ @@ie.wait
    #~ assert(@@ie.contains_text('2016'),'The housing code field did not contain value 3811H')
  #~ end
  #
  #Check that a duplicate housing record cannot be recorded
  #
  #~ def test_08_create_duplicate
    #~ assert(@@ie.button(:id, 'create').exists?,'The create button was not available') 
    #~ @@ie.button(:id, 'create').click
    #~ @@ie.wait
    #~ assert(@@ie.contains_text('Create/Edit Housing'),'The create/edit housings screen did not appear')
    #~ assert(@@ie.text_field(:id, 'P55_CODE').exists?,'The housing code field is not available')
    #~ assert(@@ie.select_list(:id, 'P55_HOTY_CODE').exists?,'The housing type field is not available')
    #~ assert(@@ie.text_field(:id, 'P55_DESCRIPTION').exists?,'The housing description field is not available')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_L').exists?,'The dimension L field is not available')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_W').exists?,'The dimension W field is not available')
    #~ assert(@@ie.text_field(:id, 'P55_DIM_H').exists?,'The dimension H field is not available')
    #~ assert(@@ie.text_field(:id, 'P55_WEIGHT').exists?,'The weight field is not available')
    #~ assert(@@ie.select_list(:id, 'P55_DRWG_CODE').exists?,'The drawing code field is not available')
    #~ assert(@@ie.select_list(:id, 'P55_PRTY_ID').exists?,'The manufacturer field is not available')
    #~ assert(@@ie.button(:id, 'create').exists?,'The create button was not available') 
    #~ assert(@@ie.button(:id, 'cancel').exists?,'The cancel button was not available') 
    #~ @@ie.text_field(:id, 'P55_CODE').set('1765H')
    #~ @@ie.select_list(:id, 'P55_HOTY_CODE').select('WALK THROUGH')
    #~ @@ie.text_field(:id, 'P55_DESCRIPTION').set('Housing for regulators')
    #~ @@ie.text_field(:id, 'P55_DIM_L').set('3600')
    #~ @@ie.text_field(:id, 'P55_DIM_W').set('1700')
    #~ @@ie.text_field(:id, 'P55_DIM_H').set('2200')
    #~ @@ie.text_field(:id, 'P55_WEIGHT').set('300')
    #~ @@ie.select_list(:id, 'P55_DRWG_CODE').select('WI')
    #~ @@ie.select_list(:id, 'P55_PRTY_ID').select('ACTARIS')
    #~ @@ie.button(:id, 'create').click
    #~ @@ie.wait
    #~ assert_nil(@@ie.contains_text('Housings'),'The housing screen did appear')
    #~ assert_nil(@@ie.contains_text('3811H'),'The new record with drawing code 3811H did appear')
    #~ assert_nil(@@ie.contains_text('WALK THROUGH'),'The new record with housing type wwalk through did appear')
    #~ assert_nil(@@ie.contains_text('Housing for regulators'),'The description Housing for regulators did appear')
    #~ assert_nil(@@ie.contains_text('3600'),'The value 3600 for Dimension L did appear')
    #~ assert_nil(@@ie.contains_text('1700'),'The value 1700 for Dimension W  did appear')
    #~ assert_nil(@@ie.contains_text('2200'),'The value 2200 for Dimension H  did appear')
    #~ assert_nil(@@ie.contains_text('300'),'The value 300 for weight  did appear')
    #~ assert_nil(@@ie.contains_text('WI'),'The new record with drawing code WI did appear')
    #~ assert_nil(@@ie.contains_text('ACTARIS'),'The new record with manufacturer dresser did appear')
    #~ assert(@@ie.contains_text('Error'),'An error was not generated')
  #~ end
  def test_50_logout
    menu('Logout')
    assert(@@ie.button(:value, 'Login').exists?,'The Login button was not available')        
    @@ie.button(:value, 'Login').click        
    @@ie.wait
  end
end








