def test5():
  courses = []
  coursera_root_page_filepath = ls.get_default_coursera_stocked_root_webpage_osfilepath()
  html_text = open(coursera_root_page_filepath).read() 
  root = etree.HTML(html_text)
  elements = root.findall(".//div[@class]")
  for element in elements:
    classname = element.get('class')
    if classname == 'coursera-course-listing-main':
      course_obj = process_element(element)
      if course_obj != None:
        courses.append(course_obj)
      #sys.exit(0)

  grabber = CourseraRootCourseGrabber()
  grabber.restart_items_by_reading_htmlwebroot_source()
  for course_id in grabber.unique_course_id_dict.keys():
    msg = '%s seq = %s' %(course_id, grabber.unique_course_id_dict[course_id].course_n_seq)
    logging.info(msg)

  logging.info('**********************************')
  
  for i, course_obj in enumerate(courses):
    if course_obj.course_id in grabber.unique_course_id_dict.keys():
      course_there = grabber.unique_course_id_dict[course_obj.course_id]
      course_obj.course_n_seq = course_there.course_n_seq
      msg = '****EQUAL **** %s :: seq = %s' %(course_obj.course_id, course_there.course_n_seq) 
      logging.info(msg)
    print i, course_obj.course_id
    logging.info(course_obj.course_id)
    print 'title', course_obj.title
    print 'nseq', course_obj.course_n_seq
 def test_non_empty_items(self):
   '''
   Test grabber for non-empty items when it SHOULD NOT have non-empty items
   '''
   grabber = CourseraRootCourseGrabber()
   course_id = 'anycourse'
   course_n_seq = '001'
   coursera_item_obj = CourseraCourse(course_id, course_n_seq)
   # adding one arbitrary course arbitrarily
   grabber.course_tuple_list = [(coursera_item_obj.course_id, coursera_item_obj)] 
   # it must NOT be empty if an item was added to it 
   self.assertNotEqual([], grabber.course_tuple_list)
 def test_empty_items(self):
   '''
   Test grabber when it SHOULD have non empty items
   Here there are 2 subtests:
     ST#1 : items should be empty after constructor 
     ST#2 : items should be empty after method empty_items() is invoked
   '''
   grabber = CourseraRootCourseGrabber()
   # ST#1 : items should be empty after constructor 
   self.assertEqual([], grabber.course_tuple_list)
   grabber.empty_items()
   # ST#2 : items should be empty after method empty_items() is invoked 
   self.assertEqual([], grabber.course_tuple_list)
  def test_saved_txt(self):
    '''
    Here follows this test's rationale:

    :: First (ST#1) SubTest
    1) Read coursera's items from its webroot html page
    2) Write the items to a test text file
    3) Copy items to a 'buffer' list 
    4) Empty items data from the stocking object
    5) Read coursera's items from the given test text file, just writen out above
    6) Assert equality of buffered items with current items read from the test text file in the previous step

    :: Second (ST#2) SubTest
    7) Recopy items to the 'buffer' list 
    8) Again empty items data from the stocking object
    9) Refetch items now via a different method
    10) Again, a second time, assert equality of buffered items with current items read from the test text file in the previous step
    '''
    grabber = CourseraRootCourseGrabber()
    grabber.fill_in_items_by_read_source(grabber.COURSERA_COURSES_IN_WEBROOT_HTML)
    # hardcopy course_tuple_list
    course_tuple_list = grabber.course_tuple_list[:] 
    target_txt_filename = 'test_txt_of_coursera_items.txt'
    grabber.write_to_txtfile_current_stocked_coursera_items(target_txt_filename)
    grabber.empty_items()
    grabber.fill_in_items_by_read_source(grabber.COURSERA_COURSES_IN_STOCKED_TXT, filename = target_txt_filename)
    self.assertEqual(course_tuple_list, grabber.course_tuple_list)
    # test the same items fetch, but via a different method 
    course_tuple_list = grabber.course_tuple_list[:] 
    grabber.restart_items_by_reading_txt_source(target_txt_filename)
    self.assertEqual(course_tuple_list, grabber.course_tuple_list)