def test_format_protoclaims_ref_adds_column_set_default(self):
        claim_1 = pywikibot.Claim(self.repo, 'P123')
        claim_1.setTarget('1')
        ref_1 = Reference(claim_1)
        claim_2 = pywikibot.Claim(self.repo, 'P123')
        claim_2.setTarget('2')
        ref_2 = Reference(claim_2)
        itis_1 = Statement('foo')
        itis_2 = Statement('bar').add_reference(ref_1)

        self.preview_item.ref = ref_2
        self.preview_item.protoclaims = {'P123': [itis_1, itis_2]}
        expected = ("{| class='wikitable'\n"
                    "|-\n"
                    "! Property\n"
                    "! Value\n"
                    "! Qualifiers\n"
                    "! References\n"
                    '|-\n'
                    '| wd_template_1 \n'
                    '| formatted_itis_1 \n'
                    '|  \n'
                    '| italics_default reference \n'
                    '|-\n'
                    '| wd_template_1 \n'
                    '| formatted_itis_2 \n'
                    '|  \n'
                    '| \nformatted_reference_1 \n'
                    "|}")
        self.assertEqual(self.preview_item.format_protoclaims(), expected)
        self.mock_wd_template.assert_called_once_with('P123')
        self.mock_format_itis.assert_has_calls(
            [mock.call(itis_1), mock.call(itis_2)])
        self.mock_format_qual.assert_not_called()
        self.mock_format_ref.assert_called_once_with(ref_1)
 def test_statement_add_bad_reference_error(self):
     s = Statement('foo')
     with self.assertRaises(pwbError) as cm:
         s.add_reference('foo')
     self.assertEqual(
         str(cm.exception), 'add_reference was called with something other '
         'than a Reference object: foo')
 def test_format_protoclaims_multple_different_prop(self):
     itis_1 = Statement('foo')
     itis_2 = Statement('bar')
     protoclaims = {'P123': itis_1, 'P321': itis_2}
     self.preview_item.protoclaims = OrderedDict(
         sorted(protoclaims.items(), key=lambda t: int(t[0][1:])))
     expected = ("{| class='wikitable'\n"
                 "|-\n"
                 "! Property\n"
                 "! Value\n"
                 "! Qualifiers\n"
                 '|-\n'
                 '| wd_template_1 \n'
                 '| formatted_itis_1 \n'
                 '|  \n'
                 '|-\n'
                 '| wd_template_2 \n'
                 '| formatted_itis_2 \n'
                 '|  \n'
                 "|}")
     self.assertEqual(self.preview_item.format_protoclaims(), expected)
     self.mock_wd_template.assert_has_calls(
         [mock.call('P123'), mock.call('P321')], any_order=True)
     self.mock_format_itis.assert_has_calls(
         [mock.call(itis_1), mock.call(itis_2)], any_order=True)
     self.mock_format_qual.assert_not_called()
     self.mock_format_ref.assert_not_called()
Esempio n. 4
0
 def test_add_new_claim_embedded_ref_used(self):
     statement = Statement(self.value)
     statement.add_reference(self.mock_ref_2)
     self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, None)
     self.mock_add_reference.assert_called_once()
     self.assertEqual(self.mock_add_reference.call_args[0][2],
                      self.mock_ref_2)
 def test_statement_add_second_reference_error(self):
     s = Statement('foo').add_reference(self.ref)
     with self.assertRaises(pwbError) as cm:
         s.add_reference(self.ref)
     self.assertEqual(
         str(cm.exception),
         'add_reference was called when the statement already had '
         'a reference assigned to it.')
 def test_statement_add_second_reference_error(self):
     s = Statement('foo').add_reference(self.ref)
     with self.assertRaises(pwbError) as cm:
         s.add_reference(self.ref)
     self.assertEqual(
         str(cm.exception),
         'add_reference was called when the statement already had '
         'a reference assigned to it.')
 def test_statement_add_bad_reference_error(self):
     s = Statement('foo')
     with self.assertRaises(pwbError) as cm:
         s.add_reference('foo')
     self.assertEqual(
         str(cm.exception),
         'add_reference was called with something other '
         'than a Reference object: foo')
    def test_add_new_claim_new_property_with_quals(self):
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_called_once()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
    def test_statement_inequality(self):
        s = Statement('novalue')
        s_special = Statement('novalue', special=True)
        s_force = Statement('novalue')
        s_force.force = True

        self.assertNotEquals(s, s_special)
        self.assertNotEquals(s, s_force)
        self.assertNotEquals(s_force, s_special)
Esempio n. 10
0
    def test_add_new_claim_new_property_with_quals(self):
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_called_once()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
    def test_statement_inequality(self):
        s = Statement('novalue')
        s_special = Statement('novalue', special=True)
        s_force = Statement('novalue')
        s_force.force = True

        self.assertNotEquals(s, s_special)
        self.assertNotEquals(s, s_force)
        self.assertNotEquals(s_force, s_special)
 def test_statement_init_special(self):
     self.assertTrue(Statement('somevalue', special=True).special)
     self.assertTrue(Statement('novalue', special=True).special)
     with self.assertRaises(pwbError) as cm:
         Statement('foo', special=True)
     self.assertEqual(
         str(cm.exception),
         'You tried to create a special statement with a non-allowed '
         'snakvalue: foo')
 def test_add_new_claim_provided_ref_overrides_embedded_ref(self):
     statement = Statement(self.value)
     statement.add_reference(self.mock_ref_2)
     self.wd_stuff.add_new_claim(
         self.prop, statement, self.wd_page, self.mock_ref_1)
     self.mock_add_reference.assert_called_once()
     self.assertEqual(
         self.mock_add_reference.call_args[0][2],
         self.mock_ref_1)
    def test_statement_qualifier(self):
        s = Statement('foo')
        s.add_qualifier(self.q_1)
        self.assertEquals(s.quals, [self.q_1])
        self.assertEquals(s._quals, set([self.q_1]))
        self.assertEquals(s, s)

        s.add_qualifier(self.q_2)
        self.assertEquals(s._quals, set([self.q_1, self.q_2]))
        self.assertEquals(s, s)
    def test_add_new_claim_old_property_old_value_with_different_quals(self):
        self.prop = 'P174'
        self.value = 'A string entry with a qualifier'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_called_once()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
Esempio n. 16
0
    def test_add_new_claim_old_property_old_value_with_different_quals(self):
        self.prop = 'P174'
        self.value = 'A string entry with a qualifier'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_called_once()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
    def test_statement_equality(self):
        s = Statement('foo')
        s_same = Statement('foo')
        s_different = Statement('bar')
        self.assertEqual(s, s)
        self.assertEqual(s, s_same)
        self.assertNotEquals(s, s_different)

        # Comparison with other classes always gives false, weird but expected
        self.assertFalse(s == 'foo')
        self.assertFalse(s != 'foo')
 def test_statement_equality_qualifier_order(self):
     s_1 = Statement('foo')
     s_2 = Statement('foo')
     s_3 = Statement('foo')
     s_1.add_qualifier(self.q_1).add_qualifier(self.q_2)
     s_2.add_qualifier(self.q_2).add_qualifier(self.q_1)
     s_3.add_qualifier(self.q_1)
     self.assertEquals(s_1, s_2)
     self.assertNotEquals(s_1, s_3)
    def test_add_new_claim_old_property_old_value_with_same_quals(self):
        self.prop = 'P174'
        self.value = 'A string entry with many qualifiers'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        expected_claim = 'Q27399$b48a2630-4fbb-932d-4f01-eefcf1e73f59'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_not_called()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
    def test_add_new_claim_old_property_old_value_without_quals(self):
        self.prop = 'P174'
        self.value = 'A string'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        expected_claim = 'Q27399$3f62d521-4efe-e8de-8f2d-0d8a10e024cf'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_not_called()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
    def test_add_new_claim_edit_correct_qualified_claim(self):
        self.prop = 'P664'
        self.value = 'Duplicate_string'
        statement = Statement(self.value)
        statement.add_qualifier(
            Qualifier('P174', 'qualifier'))
        expected_claim = 'Q27399$a9b83de1-49d7-d033-939d-f430a232ffd0'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_not_called()
        self.mock_add_claim.mock_add_qualifier()
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
Esempio n. 22
0
    def test_add_new_claim_old_property_old_value_without_quals(self):
        self.prop = 'P174'
        self.value = 'A string'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        expected_claim = 'Q27399$3f62d521-4efe-e8de-8f2d-0d8a10e024cf'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_not_called()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
Esempio n. 23
0
    def test_add_new_claim_edit_correct_qualified_claim_with_ref(self):
        self.prop = 'P664'
        self.value = 'Duplicate_string_with_ref'
        statement = Statement(self.value)
        statement.add_qualifier(Qualifier('P174', 'qualifier'))
        expected_claim = 'Q27399$e63f47a3-45ea-e2fc-1363-8f6062205084'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_not_called()
        self.mock_add_claim.mock_add_qualifier()
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
Esempio n. 24
0
    def test_add_new_claim_old_property_old_value_with_same_quals(self):
        self.prop = 'P174'
        self.value = 'A string entry with many qualifiers'
        statement = Statement(self.value)
        statement.add_qualifier(self.qual_1).add_qualifier(self.qual_2)
        expected_claim = 'Q27399$b48a2630-4fbb-932d-4f01-eefcf1e73f59'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_not_called()
        self.assertEqual(self.mock_add_qualifier.call_count, 2)
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
Esempio n. 25
0
    def test_add_new_claim_edit_correct_qualified_claim(self):
        self.prop = 'P664'
        self.value = 'Duplicate_string'
        statement = Statement(self.value)
        statement.add_qualifier(Qualifier('P174', 'qualifier'))
        expected_claim = 'Q27399$a9b83de1-49d7-d033-939d-f430a232ffd0'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_not_called()
        self.mock_add_claim.mock_add_qualifier()
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
    def test_add_new_claim_edit_correct_qualified_claim_with_ref(self):
        self.prop = 'P664'
        self.value = 'Duplicate_string_with_ref'
        statement = Statement(self.value)
        statement.add_qualifier(
            Qualifier('P174', 'qualifier'))
        expected_claim = 'Q27399$e63f47a3-45ea-e2fc-1363-8f6062205084'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page, self.ref)

        self.mock_add_claim.assert_not_called()
        self.mock_add_claim.mock_add_qualifier()
        self.mock_add_reference.assert_called_once()
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
 def test_format_itis_statement_item(self):
     item = pywikibot.ItemPage(self.repo, 'Q123')
     itis = Statement(item)
     expected = 'wd_template_1'
     self.assertEqual(PreviewItem.format_itis(itis), expected)
     self.mock_wd_template.assert_called_once_with(item)
     self.mock_format_timestring.assert_not_called()
 def test_statement_init(self):
     s = Statement('foo')
     self.assertFalse(s.force)
     self.assertFalse(s.special)
     self.assertEqual(s.quals, [])
     self.assertEqual(s.itis, 'foo')
     self.assertEqual(s.ref, None)
Esempio n. 29
0
 def test_add_new_claim_raise_error_on_bad_ref(self):
     statement = Statement(self.value)
     with self.assertRaises(pywikibot.Error) as e:
         self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                     'Not a ref')
     self.assertEqual(
         str(e.exception), 'The provided reference was not a '
         'Reference object. Crashing')
Esempio n. 30
0
    def test_add_new_claim_new_property(self):
        statement = Statement(self.value)
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_called_once()
        self.mock_add_qualifier.assert_not_called()
        self.mock_add_reference.assert_called_once()
    def test_statement_none_qualifier(self):
        s = Statement('foo')
        s.add_qualifier(None)
        self.assertEqual(s.quals, [])

        s.add_qualifier(None, force=True)
        s.force = False
Esempio n. 32
0
    def test_add_new_claim_call_special_has_claim(self):
        value = 'somevalue'
        statement = Statement(value, special=True)
        function = 'wikidatastuff.wikidata_stuff.WikidataStuff.has_special_claim'

        with mock.patch(function, autospec=True) as mock_has_special_claim:
            self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                        self.ref)
            mock_has_special_claim.assert_called_once_with(
                self.wd_stuff, self.prop, value, self.wd_page)
 def test_statement_repr(self):
     s = Statement('foo')
     self.assertEqual(
         repr(s),
         'WD.Statement('
         'itis:foo, quals:[], ref:None, special:False, force:False)')
     s.add_qualifier(self.q_1)
     self.assertEqual(
         repr(s),
         'WD.Statement('
         'itis:foo, quals:[WD.Qualifier(P123, foo)], ref:None, '
         'special:False, force:False)')
     s.add_reference(self.ref)
     self.assertEqual(
         repr(s),
         'WD.Statement('
         'itis:foo, quals:[WD.Qualifier(P123, foo)], '
         'ref:WD.Reference(test: [WD.Claim(P55: foo)], no_test: []), '
         'special:False, force:False)')
Esempio n. 34
0
 def test_add_new_claim_warning_on_duplicate_matching_claim(self):
     self.prop = 'P84'
     self.value = pywikibot.ItemPage(self.repo, 'Q505')
     statement = Statement(self.value)
     self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                 self.ref)
     self.mock_warning.assert_called_once_with(
         'Problem adding P84 claim to [[wikidata:test:-1]]: '
         'Multiple identical claims')
     self.mock_add_claim.assert_not_called()
     self.mock_add_qualifier.assert_not_called()
     self.mock_add_reference.assert_not_called()
    def test_statement_none_qualifier(self):
        s = Statement('foo')
        s.add_qualifier(None)
        self.assertEquals(s.quals, [])

        s.add_qualifier(None, force=True)
        s.force = False
 def test_format_protoclaims_multple_same_prop(self):
     itis_1 = Statement('foo')
     itis_2 = Statement('bar')
     self.preview_item.protoclaims = {'P123': [itis_1, itis_2]}
     expected = ("{| class='wikitable'\n"
                 "|-\n"
                 "! Property\n"
                 "! Value\n"
                 "! Qualifiers\n"
                 '|-\n'
                 '| wd_template_1 \n'
                 '| formatted_itis_1 \n'
                 '|  \n'
                 '|-\n'
                 '| wd_template_1 \n'
                 '| formatted_itis_2 \n'
                 '|  \n'
                 "|}")
     self.assertEqual(self.preview_item.format_protoclaims(), expected)
     self.mock_wd_template.assert_called_once_with('P123')
     self.mock_format_itis.assert_has_calls(
         [mock.call(itis_1), mock.call(itis_2)])
     self.mock_format_qual.assert_not_called()
     self.mock_format_ref.assert_not_called()
    def test_statement_qualifier(self):
        s = Statement('foo')
        s.add_qualifier(self.q_1)
        self.assertEqual(s.quals, [self.q_1])
        self.assertEqual(s._quals, set([self.q_1]))
        self.assertEqual(s, s)

        s.add_qualifier(self.q_2)
        self.assertEqual(s._quals, set([self.q_1, self.q_2]))
        self.assertEqual(s, s)
Esempio n. 38
0
    def test_add_new_claim_old_property_old_value(self):
        self.prop = 'P174'
        self.value = 'A string'
        statement = Statement(self.value)
        expected_claim = 'Q27399$3f62d521-4efe-e8de-8f2d-0d8a10e024cf'
        self.wd_stuff.add_new_claim(self.prop, statement, self.wd_page,
                                    self.ref)

        self.mock_add_claim.assert_not_called()
        self.mock_add_qualifier.assert_not_called()
        self.mock_add_reference.assert_called_once()

        # ensure the right claim was sourced
        self.assertEqual(
            self.mock_add_reference.call_args[0][1].toJSON()['id'],
            expected_claim)
 def test_format_protoclaims_single(self):
     itis = Statement('dummy')
     self.preview_item.protoclaims = {'P123': itis}
     expected = ("{| class='wikitable'\n"
                 "|-\n"
                 "! Property\n"
                 "! Value\n"
                 "! Qualifiers\n"
                 '|-\n'
                 '| wd_template_1 \n'
                 '| formatted_itis_1 \n'
                 '|  \n'
                 "|}")
     self.assertEqual(self.preview_item.format_protoclaims(), expected)
     self.mock_wd_template.assert_called_once_with('P123')
     self.mock_format_itis.assert_called_once_with(itis)
     self.mock_format_qual.assert_not_called()
     self.mock_format_ref.assert_not_called()
 def test_statement_repr(self):
     s = Statement('foo')
     self.assertEqual(
         repr(s), 'WD.Statement('
         'itis:foo, quals:[], ref:None, special:False, force:False)')
     s.add_qualifier(self.q_1)
     self.assertEqual(
         repr(s), 'WD.Statement('
         'itis:foo, quals:[WD.Qualifier(P123, foo)], ref:None, '
         'special:False, force:False)')
     s.add_reference(self.ref)
     self.assertEqual(
         repr(s), 'WD.Statement('
         'itis:foo, quals:[WD.Qualifier(P123, foo)], '
         'ref:WD.Reference(test: [WD.Claim(P55: foo)], no_test: []), '
         'special:False, force:False)')
 def test_format_protoclaims_single_with_multiple_qual(self):
     itis = Statement('dummy')
     qual_1 = Qualifier('P321', 'qual_dummy')
     qual_2 = Qualifier('P213', 'qual_dummy')
     itis._quals.add(qual_1)
     itis._quals.add(qual_2)
     self.preview_item.protoclaims = {'P123': itis}
     expected = ("{| class='wikitable'\n"
                 "|-\n"
                 "! Property\n"
                 "! Value\n"
                 "! Qualifiers\n"
                 '|-\n'
                 '| wd_template_1 \n'
                 '| formatted_itis_1 \n'
                 '| * formatted_qual_1 \n'
                 '* formatted_qual_2 \n'
                 "|}")
     self.assertEqual(self.preview_item.format_protoclaims(), expected)
     self.mock_wd_template.assert_called_once_with('P123')
     self.mock_format_itis.assert_called_once_with(itis)
     self.mock_format_qual.assert_has_calls(
         [mock.call(qual_1), mock.call(qual_2)], any_order=True)
     self.mock_format_ref.assert_not_called()
 def test_statement_qualifier_chaining(self):
     s = Statement('foo')
     s.add_qualifier(self.q_1).add_qualifier(self.q_2)
     self.assertEquals(s._quals, set([self.q_1, self.q_2]))
 def test_statement_add_reference(self):
     s = Statement('foo')
     s.add_reference(self.ref)
     self.assertEquals(s.ref, self.ref)
 def test_statement_qualifier_duplicates(self):
     s = Statement('foo')
     s.add_qualifier(self.q_1)
     s.add_qualifier(self.q_1)
     self.assertEquals(s.quals, [self.q_1])
 def test_statement_equality_qualifier_order(self):
     s_1 = Statement('foo')
     s_2 = Statement('foo')
     s_3 = Statement('foo')
     s_1.add_qualifier(self.q_1).add_qualifier(self.q_2)
     s_2.add_qualifier(self.q_2).add_qualifier(self.q_1)
     s_3.add_qualifier(self.q_1)
     self.assertEqual(s_1, s_2)
     self.assertNotEquals(s_1, s_3)
 def test_format_itis_statement_detect_special(self):
     itis = Statement('novalue', special=True)
     expected = 'wd_template_1'
     self.assertEqual(PreviewItem.format_itis(itis), expected)
     self.mock_wd_template.assert_called_once_with('novalue', special=True)
     self.mock_format_timestring.assert_not_called()
 def test_format_itis_statement_other(self):
     itis = Statement('dummy')
     expected = 'dummy'
     self.assertEqual(PreviewItem.format_itis(itis), expected)
     self.mock_wd_template.assert_not_called()
     self.mock_format_timestring.assert_not_called()