Exemplo n.º 1
0
    def test_messages_to_str_by_id(self):
        """messages_to_str_by_id should create one message for added records, one
    message for removed records, and one message for each other record."""
        # an empty messages list should produce no errors and return a string with
        # no messages
        output_str = utils.MessagesOutput.messages_to_str_by_id([],
                                                                is_html=True)
        self.assertEqual(output_str.count('"message"'), 0)

        # there should be an added section, a deleted section, and one section for
        # each of the records that had fields added, removed, or changed
        messages = pfif_diff.pfif_file_diff(
            StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
            StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
        output_str = utils.MessagesOutput.messages_to_str_by_id(messages,
                                                                is_html=True)
        self.assertEqual(output_str.count('grouped_record_header'), 3)
        self.assertEqual(output_str.count('"message"'), 3)
        self.assertTrue('foo' in output_str)
        self.assertTrue('bar' in output_str)
        self.assertTrue('source_date' in output_str)

        # when a field is added but no field is changed or deleted, there should
        # only be one section with one list.
        messages = pfif_diff.pfif_file_diff(
            StringIO(PfifXml.XML_ONE_PERSON_ONE_FIELD),
            StringIO(PfifXml.XML_ONE_PERSON_TWO_FIELDS))
        output_str = utils.MessagesOutput.messages_to_str_by_id(messages,
                                                                is_html=True)
        self.assertEqual(output_str.count('grouped_record_header'), 1)
        self.assertEqual(output_str.count('"message"'), 1)
        self.assertEqual(output_str.count('grouped_record_list'), 1)
Exemplo n.º 2
0
  def test_messages_to_str_by_id(self):
    """messages_to_str_by_id should create one message for added records, one
    message for removed records, and one message for each other record."""
    # an empty messages list should produce no errors and return a string with
    # no messages
    output_str = utils.MessagesOutput.messages_to_str_by_id([])
    self.assertEqual(output_str, '')

    # there should be an added section, a deleted section, and one section for
    # each of the records that had fields added, removed, or changed
    messages = pfif_diff.pfif_file_diff(
        StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
        StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
    output_str = utils.MessagesOutput.messages_to_str_by_id(messages)
    self.assertEqual(output_str.count('1 messages'), 2)
    self.assertEqual(output_str.count('3 messages'), 1)
    self.assertTrue('foo' in output_str)
    self.assertTrue('bar' in output_str)
    self.assertTrue('source_date' in output_str)

    # when a field is added but no field is changed or deleted, there should
    # only be one section with one list.
    messages = pfif_diff.pfif_file_diff(
        StringIO(PfifXml.XML_ONE_PERSON_ONE_FIELD),
        StringIO(PfifXml.XML_ONE_PERSON_TWO_FIELDS))
    output_str = utils.MessagesOutput.messages_to_str_by_id(messages)
    self.assertEqual(output_str.count('1 messages'), 1)
    self.assertEqual(output_str.count('extra fields'), 1)
Exemplo n.º 3
0
 def run_diff(xml_str_1, xml_str_2, text_is_case_sensitive=None):
     """Runs pfif_file_diff on the two xml strings.  Returns the message list of
 differences."""
     xml_file_1 = StringIO(xml_str_1)
     xml_file_2 = StringIO(xml_str_2)
     if text_is_case_sensitive is not None:
         return pfif_diff.pfif_file_diff(xml_file_1, xml_file_2,
                                         text_is_case_sensitive)
     else:
         return pfif_diff.pfif_file_diff(xml_file_1, xml_file_2)
Exemplo n.º 4
0
 def run_diff(xml_str_1, xml_str_2, text_is_case_sensitive=None):
   """Runs pfif_file_diff on the two xml strings.  Returns the message list of
   differences."""
   xml_file_1 = StringIO(xml_str_1)
   xml_file_2 = StringIO(xml_str_2)
   if text_is_case_sensitive is not None:
     return pfif_diff.pfif_file_diff(xml_file_1, xml_file_2,
                                     text_is_case_sensitive)
   else:
     return pfif_diff.pfif_file_diff(xml_file_1, xml_file_2)
Exemplo n.º 5
0
 def post(self, request, *args, **kwargs):
   page_ctx = {'page_title': 'PFIF Diff: Results'}
   file_1, filename_1 = self.get_file(1, return_filename=True)
   file_2, filename_2 = self.get_file(2, return_filename=True)
   if file_1 is None or file_2 is None:
     page_ctx['error'] = 'Missing Input File'
     return render(request, 'error.html', page_ctx)
   page_ctx['filenames'] = [
       {'filename': filename_1, 'shorthand_name': 'A'},
       {'filename': filename_2, 'shorthand_name': 'B'},
   ]
   options = self.request.POST.getlist('options')
   ignore_fields = self.request.POST.get(
       'ignore_fields', default='').split()
   messages = pfif_diff.pfif_file_diff(
       file_1, file_2,
       text_is_case_sensitive='text_is_case_sensitive' in options,
       ignore_fields=ignore_fields,
       omit_blank_fields='omit_blank_fields' in options)
   page_ctx['msgs'] = messages
   page_ctx['msgs_by_category'] = (
       utils.MessagesOutput.group_messages_by_category(messages))
   if 'group_messages_by_record' in options:
     page_ctx['group_messages'] = True
     messages = utils.MessagesOutput.truncate(
         messages, utils.MessagesOutput.GROUPED_TRUNCATE_THRESHOLD)
     page_ctx['msg_grouping'] = utils.MessageGroupingById(messages)
   return render(request, 'diff_results.html', page_ctx)
Exemplo n.º 6
0
 def post(self, request, *args, **kwargs):
     page_ctx = {'page_title': 'PFIF Diff: Results'}
     file_1, filename_1 = self.get_file(1, return_filename=True)
     file_2, filename_2 = self.get_file(2, return_filename=True)
     if file_1 is None or file_2 is None:
         page_ctx['error'] = 'Missing Input File'
         return render(request, 'error.html', page_ctx)
     page_ctx['filenames'] = [
         {
             'filename': filename_1,
             'shorthand_name': 'A'
         },
         {
             'filename': filename_2,
             'shorthand_name': 'B'
         },
     ]
     options = self.request.POST.getlist('options')
     ignore_fields = self.request.POST.get('ignore_fields',
                                           default='').split()
     messages = pfif_diff.pfif_file_diff(
         file_1,
         file_2,
         text_is_case_sensitive='text_is_case_sensitive' in options,
         ignore_fields=ignore_fields,
         omit_blank_fields='omit_blank_fields' in options)
     page_ctx['msgs'] = messages
     page_ctx['msgs_by_category'] = (
         utils.MessagesOutput.group_messages_by_category(messages))
     if 'group_messages_by_record' in options:
         page_ctx['group_messages'] = True
         messages = utils.MessagesOutput.truncate(
             messages, utils.MessagesOutput.GROUPED_TRUNCATE_THRESHOLD)
         page_ctx['msg_grouping'] = utils.MessageGroupingById(messages)
     return render(request, 'diff_results.html', page_ctx)
Exemplo n.º 7
0
 def post(self):
     file_1, filename_1 = self.get_file(1, return_filename=True)
     file_2, filename_2 = self.get_file(2, return_filename=True)
     self.write_header('PFIF Diff: Results')
     if file_1 is None or file_2 is None:
         self.write_missing_input_file()
     else:
         options = self.request.get_all('options')
         ignore_fields = self.request.get('ignore_fields').split()
         messages = pfif_diff.pfif_file_diff(
             file_1,
             file_2,
             text_is_case_sensitive='text_is_case_sensitive' in options,
             ignore_fields=ignore_fields,
             omit_blank_fields='omit_blank_fields' in options)
         self.response.out.write('<h1>Diff: ' + str(len(messages)) +
                                 ' Messages</h1>')
         self.response.out.write(
             utils.MessagesOutput.generate_message_summary(messages,
                                                           is_html=True))
         self.write_filenames(filename_1, filename_2)
         if 'group_messages_by_record' in options:
             self.response.out.write(
                 utils.MessagesOutput.messages_to_str_by_id(messages,
                                                            is_html=True))
         else:
             self.response.out.write(
                 utils.MessagesOutput.messages_to_str(messages,
                                                      show_error_type=False,
                                                      is_html=True))
     self.write_footer()
Exemplo n.º 8
0
 def test_group_messages_by_record(self):
   """group_messages_by_record should return a map from record_id to
   message."""
   messages = pfif_diff.pfif_file_diff(
       StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
       StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
   grouped_messages = utils.MessagesOutput.group_messages_by_record(messages)
   self.assertTrue('example.org/person1' in grouped_messages)
   self.assertTrue('example.org/person2' in grouped_messages)
Exemplo n.º 9
0
 def test_group_messages_by_record(self):
     """group_messages_by_record should return a map from record_id to
 message."""
     messages = pfif_diff.pfif_file_diff(
         StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
         StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
     grouped_messages = utils.MessagesOutput.group_messages_by_record(
         messages)
     self.assertTrue('example.org/person1' in grouped_messages)
     self.assertTrue('example.org/person2' in grouped_messages)
Exemplo n.º 10
0
 def test_group_messages_by_category(self):
   """group_messages_by_category should return a map from category to
   message."""
   messages = pfif_diff.pfif_file_diff(
       StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
       StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
   grouped_messages = utils.MessagesOutput.group_messages_by_category(messages)
   self.assertTrue(utils.Categories.ADDED_RECORD in grouped_messages)
   self.assertTrue(utils.Categories.ADDED_FIELD in grouped_messages)
   self.assertTrue(utils.Categories.DELETED_RECORD in grouped_messages)
   self.assertTrue(utils.Categories.DELETED_FIELD in grouped_messages)
   self.assertTrue(utils.Categories.CHANGED_FIELD in grouped_messages)
Exemplo n.º 11
0
 def test_group_messages_by_category(self):
     """group_messages_by_category should return a map from category to
 message."""
     messages = pfif_diff.pfif_file_diff(
         StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
         StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
     grouped_messages = utils.MessagesOutput.group_messages_by_category(
         messages)
     self.assertTrue(utils.Categories.ADDED_RECORD in grouped_messages)
     self.assertTrue(utils.Categories.ADDED_FIELD in grouped_messages)
     self.assertTrue(utils.Categories.DELETED_RECORD in grouped_messages)
     self.assertTrue(utils.Categories.DELETED_FIELD in grouped_messages)
     self.assertTrue(utils.Categories.CHANGED_FIELD in grouped_messages)
Exemplo n.º 12
0
  def test_get_field_from_messages(self):
    """get_field_from_messages should return a list of all fields in the
    messages."""
    messages = pfif_diff.pfif_file_diff(
        StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
        StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))

    # record_id should get person and note records
    record_ids = utils.MessagesOutput.get_field_from_messages(messages,
                                                              'record_id')
    self.assertTrue('example.org/person1' in record_ids)
    self.assertTrue('example.org/person2' in record_ids)

    # xml_tag should get all tags
    tags = utils.MessagesOutput.get_field_from_messages(messages, 'xml_tag')
    self.assertTrue('foo' in tags)
    self.assertTrue('bar' in tags)
    self.assertTrue('source_date' in tags)
Exemplo n.º 13
0
    def test_get_field_from_messages(self):
        """get_field_from_messages should return a list of all fields in the
    messages."""
        messages = pfif_diff.pfif_file_diff(
            StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_1),
            StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))

        # record_id should get person and note records
        record_ids = utils.MessagesOutput.get_field_from_messages(
            messages, 'record_id')
        self.assertTrue('example.org/person1' in record_ids)
        self.assertTrue('example.org/person2' in record_ids)

        # xml_tag should get all tags
        tags = utils.MessagesOutput.get_field_from_messages(
            messages, 'xml_tag')
        self.assertTrue('foo' in tags)
        self.assertTrue('bar' in tags)
        self.assertTrue('source_date' in tags)