#---
#This unit test checks the drawings screen.
#---
class Test_04_drawings_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 drawings record
  #
  def test_01_drawing_screen_appears
    @@ie.goto(LOGIN)
    #now we'll need to login
    login(DEFAULT, DEFAULT_PWD)
    menu('Administration')
    menu('Drawings')
    #assert(@@ie.contains_text('Drawings'),'The drawing screen did not appear')
    #assert(@@ie.contains_text('Code'),'The drawing code column did not appear')
    #assert(@@ie.contains_text('Description'),'The drawing description column did not appear')
    #assert(@@ie.contains_text('no data found'),'Some data must have appeared, expected to find no records')
    assert(@@ie.button(:id, 'create').exists?,'The create button was not available')        
  end
  #
  #Check that the Create/Edit Drawing form can be accessed using the Create button on the Drawings 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_drawing_screen_appears
    @@ie.button(:id, 'create').click
    @@ie.wait
    assert(@@ie.contains_text('Create/Edit Drawings'),'The create/edit drawing screen did not appear')
    assert(@@ie.text_field(:id, 'P53_CODE').exists?,'The drawings code field is not available')
    assert(@@ie.text_field(:id, 'P53_DESCRIPTION').exists?,'The drawings description 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
  #
  #Check that the Create/Edit Drawing form allows data to be inserted to create a new drawing
  #Check that the new drawing record appears in the report
  #
  def test_03_create_drawing
  @@ie.text_field(:id, 'P53_CODE').set("D1")
  @@ie.text_field(:id, 'P53_DESCRIPTION').set("Drawing for housing")
  @@ie.button(:id, 'create').click
  @@ie.wait
  assert(@@ie.contains_text('Drawings'),'The drawing screen did not appear')
  assert(@@ie.contains_text('D1'),'The new record with drawing code D1 did not appear')
  assert(@@ie.contains_text('Drawing for housing'),'The description for D1, Drawing for housing did not appear')
  @@ie.button(:id, 'create').click
  @@ie.wait
  assert(@@ie.contains_text('Create/Edit Drawings'),'The create/edit drawing screen did not appear')
  assert(@@ie.text_field(:id, 'P53_CODE').exists?,'The drawings code field is not available')
  assert(@@ie.text_field(:id, 'P53_DESCRIPTION').exists?,'The drawings description 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, 'P53_CODE').set("D2")
  @@ie.text_field(:id, 'P53_DESCRIPTION').set("Drawing for module")
  @@ie.button(:id, 'create').click
  @@ie.wait
  assert(@@ie.contains_text('Drawings'),'The drawing screen did not appear')
  assert(@@ie.contains_text('D2'),'The new record with drawing code D2 did not appear')
  assert(@@ie.contains_text('Drawing for module'),'The description for D2, Drawing for module did not appear')
  end
  #
  #Check that the D1 code links to the Create/Edit Drawing form and the form appears with the correct data 
  #in the fields. Check that the drawing description can be updated and the updated record appears in the Drawings report
  #
  def test_04_update_drawing
    @@ie.link(:text, 'D1').click
    assert(@@ie.contains_text('D1'),'The drawing code field did not contain value D1')
    assert(@@ie.text_field(:id, 'P53_DESCRIPTION').verify_contains('Drawing for housing'),'The drawing description field did not contain value Drawing for housing')
    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') 
    assert(@@ie.button(:id, 'upload').exists?,'The file upload/replace button was not available')
    @@ie.button(:id, 'upload').click
    @@ie.wait
    assert(@@ie.contains_text('Upload File'),'The file upload screen did not appear')     
    assert(@@ie.button(:id, 'upload').exists?,'The file upload button was not available')
    #
    #Upload a file to the drawing and check that we get a success message
    #
    filetoupload = 'c:\\ruby\\LICENSE.txt'
    @@ie.file_field(:id, 'P41_FILE_UPLOAD').set(filetoupload)
    @@ie.button(:id, 'upload').click
    @@ie.wait
    assert(@@ie.button(:id, 'upload').exists?,'The file upload/replace button was not available') 
    assert(@@ie.contains_text('Create/Edit Drawings'),'The edit/create drawing screen did not appear')
    assert(@@ie.contains_text('Drawing uploaded'),'The success message Drawing uploaded did not appear')
              
    #set description and save
    @@ie.text_field(:id, 'P53_DESCRIPTION').set('Drawing for base')
    @@ie.button(:id, 'apply_changes').click
    @@ie.wait
    assert(@@ie.contains_text('Drawings'),'The drawing screen did not appear')
    assert(@@ie.contains_text('D1'),'The record with drawing code D1 did not appear')
    assert(@@ie.contains_text('Drawing for base'),'The updated description Drawing for base did not appear')    
  end
  #The following is commented out because the javascript dialog box cannot be clicked on some machines
  #and on those that it does work it will only work if run from the dos prompt, there for the integrated
  #test will not be able to complete the test automatically
  #
  #Check that the drawing D2 can be deleted and that the record is no longer displayed in the report
  #
#  def test_05_delete_drawing
#    @@ie.link(:text, 'D2').click
#    assert(@@ie.text_field(:id, 'P53_CODE').verify_contains('D2'),'The drawing code is not D2')
#    assert(@@ie.text_field(:id, 'P53_DESCRIPTION').verify_contains('Drawing for module'),'The description is not drawing for module')
#    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_nil(@@ie.contains_text('D2'),'The drawing code D2 did appear')
#  end
  #
  #Check that the existing drawing code cannot be updated 
  #
   def test_06_update_drawing_code
     @@ie.link(:text, 'D1').click
     @@ie.wait
     assert(@@ie.contains_text('D1'),'The drawing code field did not contain value D1')
     assert(@@ie.text_field(:id, 'P53_DESCRIPTION').verify_contains('Drawing for base'),'The drawing description field did not contain value Drawing for housing')
     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') 
     assert(@@ie.hidden(:id, 'P53_CODE').exists?,'The CODE field is not read only when it should be') 
     @@ie.button(:id, 'cancel').click
     @@ie.wait
   end
  #
  #Check that a drawing record with child records cannot be deleted
  #~ 
  #~ def test_07_delete_drawing_child
  #~ @@ie.link(:text, 'lphhcompac').click
  #~ assert(@@ie.text_field(:id, 'P13_CODE').verify_contains('lphhcompac'),'The drawing code is not lphhcompac')
  #~ assert(@@ie.text_field(:id, 'P13_DESCRIPTION').verify_contains('MODULE'),'The description is not module')
  #~ 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('lphhcompac'),'The record with drawing code lphhcompac did not appear')
  #~ end
  #
  #Check that a duplicate drawing 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
  assert(@@ie.contains_text('Create/Edit Drawings'),'The create/edit drawing screen did not appear')
  assert(@@ie.text_field(:id, 'P53_CODE').exists?,'The drawings code field is not available')
  assert(@@ie.text_field(:id, 'P53_DESCRIPTION').exists?,'The drawings description 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, 'P53_CODE').set("D1")
  @@ie.text_field(:id, 'P53_DESCRIPTION').set("HOUSING")
  @@ie.button(:id, 'create').click
  @@ie.wait
  assert(@@ie.contains_text('Error'),'An error was not generated')
  assert(@@ie.contains_text('Attempting to create a duplicate Drawings entry'),'Expected a nice error message but did not get it') 
  end
#
end