jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/401959 )

Change subject: Diff support for forms
......................................................................


Diff support for forms

Bug: T182424
Depends-On: Ia4bebd82b013eaddca6cb9b988caf7328e260a1a
Change-Id: I50eb04857ba820faea56b484daaaca6d44a7822a
---
M WikibaseLexeme.entitytypes.php
M i18n/en.json
M i18n/qqq.json
M src/DataModel/Services/Diff/ChangeFormDiffOp.php
A src/Diff/FormDiffView.php
M src/Diff/LexemeDiffVisualizer.php
A tests/phpunit/mediawiki/Diff/FormDiffViewTest.php
M tests/phpunit/mediawiki/Diff/LexemeDiffVisualizerTest.php
8 files changed, 441 insertions(+), 8 deletions(-)

Approvals:
  WMDE-leszek: Looks good to me, approved
  Lucas Werkmeister (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/WikibaseLexeme.entitytypes.php b/WikibaseLexeme.entitytypes.php
index 8567e80..7b5ce7f 100644
--- a/WikibaseLexeme.entitytypes.php
+++ b/WikibaseLexeme.entitytypes.php
@@ -194,7 +194,9 @@
 
                        return new LexemeDiffVisualizer(
                                $messageLocalizer,
-                               $basicEntityDiffVisualizer
+                               $basicEntityDiffVisualizer,
+                               $claimDiffer,
+                               $claimDiffView
                        );
                }
        ],
diff --git a/i18n/en.json b/i18n/en.json
index f90a514..fe0e54d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -53,5 +53,7 @@
        "wikibaselexeme-diffview-lexical-category": "lexical category",
        "wikibaselexeme-diffview-language": "language",
        "wikibaselexeme-diffview-form": "form",
+       "wikibaselexeme-diffview-representation": "representation",
+       "wikibaselexeme-diffview-grammatical-feature": "grammatical feature",
        "content-model-wikibase-lexeme": "Wikibase lexeme"
 }
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 003fa5e..27e31a0 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -58,5 +58,7 @@
        "wikibaselexeme-diffview-lexical-category": "Title of lexical category 
in diff page",
        "wikibaselexeme-diffview-language": "Title of language in diff 
page\n{{Identical|Language}}",
        "wikibaselexeme-diffview-form": "Title of form in diff page",
+       "wikibaselexeme-diffview-representation": "Title of representation in 
diff page",
+       "wikibaselexeme-diffview-grammatical-feature": "Title of grammatical 
feature in diff page",
        "content-model-wikibase-lexeme": "The name for Wikibase lexeme content 
model, used when describing what type of content a page contains."
 }
diff --git a/src/DataModel/Services/Diff/ChangeFormDiffOp.php 
b/src/DataModel/Services/Diff/ChangeFormDiffOp.php
index b86bd84..87dc709 100644
--- a/src/DataModel/Services/Diff/ChangeFormDiffOp.php
+++ b/src/DataModel/Services/Diff/ChangeFormDiffOp.php
@@ -15,7 +15,6 @@
         * @var FormId
         */
        private $formId;
-
        /**
         * @var Diff
         */
diff --git a/src/Diff/FormDiffView.php b/src/Diff/FormDiffView.php
new file mode 100644
index 0000000..1d82223
--- /dev/null
+++ b/src/Diff/FormDiffView.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace Wikibase\Lexeme\Diff;
+
+use Diff\DiffOp\Diff\Diff;
+use Diff\DiffOp\DiffOp;
+use Diff\DiffOp\DiffOpAdd;
+use Diff\DiffOp\DiffOpChange;
+use Diff\DiffOp\DiffOpRemove;
+use MessageLocalizer;
+use MWException;
+use Wikibase\Lexeme\DataModel\Services\Diff\ChangeFormDiffOp;
+use Wikibase\Repo\Diff\BasicDiffView;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
+
+/**
+ * Class for generating views of DiffOp objects of forms.
+ *
+ * @license GPL-2.0+
+ */
+class FormDiffView extends BasicDiffView {
+
+       /**
+        * @var ClaimDiffer|null
+        */
+       private $claimDiffer;
+
+       /**
+        * @var ClaimDifferenceVisualizer|null
+        */
+       private $claimDiffVisualizer;
+
+       /**
+        * @var MessageLocalizer
+        */
+       private $messageLocalizer;
+
+       /**
+        * @param string[] $path
+        * @param Diff $diff
+        * @param ClaimDiffer $claimDiffer
+        * @param ClaimDifferenceVisualizer $claimDiffVisualizer
+        * @param MessageLocalizer $messageLocalizer
+        */
+       public function __construct(
+               array $path,
+               Diff $diff,
+               ClaimDiffer $claimDiffer,
+               ClaimDifferenceVisualizer $claimDiffVisualizer,
+               MessageLocalizer $messageLocalizer
+       ) {
+               parent::__construct( $path, $diff );
+
+               $this->claimDiffer = $claimDiffer;
+               $this->claimDiffVisualizer = $claimDiffVisualizer;
+               $this->messageLocalizer = $messageLocalizer;
+       }
+
+       /**
+        * @param string[] $path
+        * @param DiffOp $op
+        *
+        * @return string
+        * @throws MWException
+        */
+       protected function generateOpHtml( array $path, DiffOp $op ) {
+               $html = '';
+               if ( $op->isAtomic() ) {
+                       return parent::generateOpHtml( $path, $op );
+               }
+               foreach ( $op as $key => $subOp ) {
+                       if ( !$subOp instanceof ChangeFormDiffOp ) {
+                               $html .= $this->generateOpHtml( array_merge( 
$path, [ $key ] ), $subOp );
+                       } else {
+                               $html .= $this->generateFormOpHtml( $path, 
$subOp, $key );
+                       }
+               }
+               return $html;
+       }
+
+       private function generateFormOpHtml( $path, ChangeFormDiffOp $op, $key 
) {
+               $html = '';
+               foreach ( $op->getStatementsDiffOps() as $claimDiffOp ) {
+                       $html .= $this->getClaimDiffHtml(
+                               $claimDiffOp,
+                               array_merge( $path, [ $key ] )
+                       );
+               }
+
+               $html .= parent::generateOpHtml(
+                       array_merge(
+                               $path,
+                               [ $key, $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-representation' )->text() ]
+                       ),
+                       $op->getRepresentationDiffOps()
+               );
+
+               $html .= parent::generateOpHtml(
+                       array_merge(
+                               $path,
+                               [ $key, $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-grammatical-feature' )->text() ]
+                       ),
+                       $op->getGrammaticalFeaturesDiffOps()
+               );
+
+               return $html;
+       }
+
+       /**
+        * @param DiffOp $claimDiffOp
+        *
+        * @return string HTML
+        * @throws MWException
+        */
+       protected function getClaimDiffHtml( DiffOp $claimDiffOp, array $path ) 
{
+               if ( $claimDiffOp instanceof DiffOpChange ) {
+                       $claimDifference = $this->claimDiffer->diffClaims(
+                               $claimDiffOp->getOldValue(),
+                               $claimDiffOp->getNewValue()
+                       );
+                       return $this->claimDiffVisualizer->visualizeClaimChange(
+                               $claimDifference,
+                               $claimDiffOp->getNewValue(),
+                               $path
+                       );
+               }
+
+               if ( $claimDiffOp instanceof DiffOpAdd ) {
+                       return $this->claimDiffVisualizer->visualizeNewClaim( 
$claimDiffOp->getNewValue(), $path );
+               } elseif ( $claimDiffOp instanceof DiffOpRemove ) {
+                       return 
$this->claimDiffVisualizer->visualizeRemovedClaim(
+                               $claimDiffOp->getOldValue(),
+                               $path
+                       );
+               } else {
+                       throw new MWException( 'Encountered an unexpected diff 
operation type for a claim' );
+               }
+       }
+
+}
diff --git a/src/Diff/LexemeDiffVisualizer.php 
b/src/Diff/LexemeDiffVisualizer.php
index 78f0e7d..a8210f2 100644
--- a/src/Diff/LexemeDiffVisualizer.php
+++ b/src/Diff/LexemeDiffVisualizer.php
@@ -8,6 +8,8 @@
 use Wikibase\Repo\Content\EntityContentDiff;
 use Wikibase\Repo\Diff\BasicDiffView;
 use Wikibase\Repo\Diff\BasicEntityDiffVisualizer;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
 use Wikibase\Repo\Diff\EntityDiffVisualizer;
 
 /**
@@ -28,12 +30,26 @@
         */
        private $basicEntityDiffVisualizer;
 
+       /**
+        * @var ClaimDiffer|null
+        */
+       private $claimDiffer;
+
+       /**
+        * @var ClaimDifferenceVisualizer|null
+        */
+       private $claimDiffVisualizer;
+
        public function __construct(
                MessageLocalizer $messageLocalizer,
-               EntityDiffVisualizer $basicEntityDiffVisualizer
+               EntityDiffVisualizer $basicEntityDiffVisualizer,
+               ClaimDiffer $claimDiffer,
+               ClaimDifferenceVisualizer $claimDiffView
        ) {
                $this->messageLocalizer = $messageLocalizer;
                $this->basicEntityDiffVisualizer = $basicEntityDiffVisualizer;
+               $this->claimDiffer = $claimDiffer;
+               $this->claimDiffVisualizer = $claimDiffView;
        }
 
        /**
@@ -61,7 +77,7 @@
         * @return string
         */
        private function visualizeEntityDiff( EntityDiff $diff ) {
-               return ( new BasicDiffView(
+               $basicDiff = ( new BasicDiffView(
                        [],
                        new Diff(
                                [
@@ -70,13 +86,25 @@
                                        $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-lexical-category' )
                                                ->text() => 
$diff->getLexicalCategoryDiff(),
                                        $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-language' )->text() =>
-                                               $diff->getLanguageDiff(),
-                                       $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-form' )->text() =>
-                                               $diff->getFormsDiff(),
+                                               $diff->getLanguageDiff()
                                ],
                                true
                        )
                ) )->getHtml();
+               $formDiff = ( new FormDiffView(
+                       [],
+                       new Diff(
+                               [
+                                       $this->messageLocalizer->msg( 
'wikibaselexeme-diffview-form' )->text() =>
+                                               $diff->getFormsDiff(),
+                               ],
+                               true
+                       ),
+                       $this->claimDiffer,
+                       $this->claimDiffVisualizer,
+                       $this->messageLocalizer
+               ) )->getHtml();
+               return $basicDiff . $formDiff;
        }
 
 }
diff --git a/tests/phpunit/mediawiki/Diff/FormDiffViewTest.php 
b/tests/phpunit/mediawiki/Diff/FormDiffViewTest.php
new file mode 100644
index 0000000..e4e3634
--- /dev/null
+++ b/tests/phpunit/mediawiki/Diff/FormDiffViewTest.php
@@ -0,0 +1,238 @@
+<?php
+
+namespace Wikibase\Lexeme\Tests\Diff;
+
+use Diff\Comparer\ComparableComparer;
+use Diff\DiffOp\Diff\Diff;
+use Diff\OrderedListDiffer;
+use MessageLocalizer;
+use RawMessage;
+use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\Services\EntityId\EntityIdFormatter;
+use Wikibase\DataModel\Snak\PropertySomeValueSnak;
+use Wikibase\DataModel\Statement\Statement;
+use Wikibase\Lexeme\DataModel\Services\Diff\ChangeFormDiffOp;
+use Wikibase\Lexeme\DataModel\Services\Diff\FormDiffer;
+use Wikibase\Lexeme\Diff\FormDiffView;
+use Wikibase\Lexeme\Tests\DataModel\NewForm;
+use Wikibase\Lib\SnakFormatter;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
+use Wikibase\Repo\Diff\DifferencesSnakVisualizer;
+
+/**
+ * @covers Wikibase\Lexeme\Diff\FormDiffView
+ *
+ * @license GPL-2.0+
+ */
+class FormDiffViewTest extends \PHPUnit_Framework_TestCase {
+
+       /**
+        * @return ClaimDiffer
+        */
+       private function getMockClaimDiffer() {
+               return new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) );
+       }
+
+       /**
+        * @param string $returnValue
+        * @param string $format
+        *
+        * @return SnakFormatter
+        */
+       public function newSnakFormatter(
+               $returnValue = '<i>SNAK</i>',
+               $format = SnakFormatter::FORMAT_HTML
+       ) {
+               $instance = $this->getMock( SnakFormatter::class );
+               $instance->expects( $this->any() )
+                       ->method( 'getFormat' )
+                       ->will( $this->returnValue( $format ) );
+               $instance->expects( $this->any() )
+                       ->method( 'canFormatSnak' )
+                       ->will( $this->returnValue( true ) );
+               $instance->expects( $this->any() )
+                       ->method( 'formatSnak' )
+                       ->will( $this->returnValue( $returnValue ) );
+               return $instance;
+       }
+
+       /**
+        * @return EntityIdFormatter
+        */
+       public function newEntityIdLabelFormatter() {
+               $instance = $this->getMock( EntityIdFormatter::class );
+
+               $instance->expects( $this->any() )
+                       ->method( 'formatEntityId' )
+                       ->will( $this->returnValue( '<a>PID</a>' ) );
+
+               return $instance;
+       }
+
+       /**
+        * @return ClaimDifferenceVisualizer
+        */
+       private function getMockClaimDiffVisualizer() {
+               return new ClaimDifferenceVisualizer(
+                       new DifferencesSnakVisualizer(
+                               $this->newEntityIdLabelFormatter(),
+                               $this->newSnakFormatter( '<i>DETAILED SNAK</i>' 
),
+                               $this->newSnakFormatter(),
+                               'qqx'
+                       ),
+                       'qqx'
+               );
+       }
+
+       /**
+        * @return MessageLocalizer
+        */
+       private function getMockMessageLocalizer() {
+               $mock = $this->getMock( MessageLocalizer::class );
+
+               $mock->method( 'msg' )
+                       ->will( $this->returnCallback( function ( $key ) {
+                               return new RawMessage( "($key)" );
+                       } ) );
+
+               return $mock;
+       }
+
+       /**
+        * @return FormDiffView
+        */
+       private function getDiffView( ChangeFormDiffOp $diff ) {
+               return new FormDiffView(
+                       [],
+                       new Diff(
+                               [ 'form' => new Diff( [ 
$diff->getFormId()->getSerialization() => $diff ], true ) ],
+                               true
+                       ),
+                       $this->getMockClaimDiffer(),
+                       $this->getMockClaimDiffVisualizer(),
+                       $this->getMockMessageLocalizer()
+               );
+       }
+
+       public function testDiffChangedRepresentations() {
+               $differ = new FormDiffer();
+               $form1 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'cat' )
+                       ->build();
+               $form2 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'goat' )
+                       ->build();
+               $diff = $differ->diffEntities( $form1, $form2 );
+
+               $formDiffViewHeader = 'form / L1-F1 / 
(wikibaselexeme-diffview-representation) / en';
+               $expected = '<tr><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader .
+                       '</td><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader . '</td></tr>' .
+                       '<tr><td class="diff-marker">-</td><td 
class="diff-deletedline"><div>' .
+                       '<del class="diffchange 
diffchange-inline">cat</del></div></td><td class="diff-marker">' .
+                       '+</td><td class="diff-addedline"><div><ins 
class="diffchange diffchange-inline">' .
+                       'goat</ins></div></td></tr>';
+               $this->assertSame( $expected, $this->getDiffView( $diff 
)->getHtml() );
+       }
+
+       public function testDiffAddedRepresentations() {
+               $differ = new FormDiffer();
+               $form1 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->build();
+               $form2 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andRepresentation( 'fr', 'fr-value' )
+                       ->build();
+
+               $diff = $differ->diffEntities( $form1, $form2 );
+
+               $formDiffViewHeader = 'form / L1-F1 / 
(wikibaselexeme-diffview-representation) / fr';
+               $expected = '<tr><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader .
+                       '</td><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader . '</td></tr>' .
+                       '<tr><td colspan="2">&nbsp;</td><td 
class="diff-marker">+</td><td class="diff-addedline">' .
+                       '<div><ins class="diffchange 
diffchange-inline">fr-value</ins></div></td></tr>';
+               $this->assertSame( $expected, $this->getDiffView( $diff 
)->getHtml() );
+       }
+
+       public function testDiffAddedGrammaticalFeatures() {
+               $differ = new FormDiffer();
+               $form1 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andGrammaticalFeature( 'Q1' )
+                       ->build();
+               $form2 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andGrammaticalFeature( 'Q1' )
+                       ->andGrammaticalFeature( 'Q2' )
+                       ->build();
+               $diff = $differ->diffEntities( $form1, $form2 );
+
+               $formDiffViewHeader = 'form / L1-F1 / 
(wikibaselexeme-diffview-grammatical-feature) / 0';
+               $expected = '<tr><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader .
+                       '</td><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader . '</td>' .
+                       '</tr><tr><td colspan="2">&nbsp;</td><td 
class="diff-marker">+</td>' .
+                       '<td class="diff-addedline"><div><ins class="diffchange 
diffchange-inline">Q2</ins>'.
+                       '</div></td></tr>';
+               $this->assertSame( $expected, $this->getDiffView( $diff 
)->getHtml() );
+       }
+
+       public function testDiffChangedStatements() {
+               $differ = new FormDiffer();
+               $form1 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andStatement( $this->someStatement( 'P1', 'guid1' ) )
+                       ->build();
+               $form2 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andStatement( $this->someStatement( 'P1', 'guid1' ) )
+                       ->andStatement( $this->someStatement( 'P2', 'guid2' ) )
+                       ->build();
+
+               $diff = $differ->diffEntities( $form1, $form2 );
+
+               $expected = '<tr><td colspan="2" class="diff-lineno"></td><td 
colspan="2" class="diff-lineno">' .
+                       'form / L1-F1 / (wikibase-entity-property) / 
<a>PID</a></td></tr><tr>' .
+                       '<td colspan="2">&nbsp;</td><td 
class="diff-marker">+</td><td class="diff-addedline">' .
+                       '<div><ins class="diffchange 
diffchange-inline"><span><i>DETAILED SNAK</i></span></ins>' .
+                       '</div></td></tr><tr><td colspan="2" 
class="diff-lineno"></td><td colspan="2" ' .
+                       'class="diff-lineno">form / L1-F1 / 
(wikibase-entity-property) / <a>PID</a>' .
+                       '(colon-separator)<i>SNAK</i> / 
(wikibase-diffview-rank)</td></tr><tr><td colspan="2">' .
+                       '&nbsp;</td><td class="diff-marker">+</td><td 
class="diff-addedline"><div>' .
+                       '<ins class="diffchange 
diffchange-inline"><span>(wikibase-diffview-rank-normal)</span>' .
+                       '</ins></div></td></tr>';
+               $this->assertSame( $expected, $this->getDiffView( $diff 
)->getHtml() );
+       }
+
+       public function testPatchRemovedGrammaticalFeature() {
+               $differ = new FormDiffer();
+               $form1 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->andGrammaticalFeature( 'Q1' )
+                       ->build();
+               $form2 = NewForm::havingId( 'F1' )
+                       ->andRepresentation( 'en', 'en-value' )
+                       ->build();
+
+               $diff = $differ->diffEntities( $form1, $form2 );
+
+               $formDiffViewHeader = 'form / L1-F1 / 
(wikibaselexeme-diffview-grammatical-feature) / 0';
+               $expected = '<tr><td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader . '</td>' .
+                       '<td colspan="2" class="diff-lineno">' . 
$formDiffViewHeader .
+                       '</td></tr><tr><td class="diff-marker">-</td><td 
class="diff-deletedline"><div>' .
+                       '<del class="diffchange 
diffchange-inline">Q1</del></div></td></tr>';
+               $this->assertSame( $expected, $this->getDiffView( $diff 
)->getHtml() );
+       }
+
+       /**
+        * @return mixed
+        */
+       private function someStatement( $propertyId, $guid ) {
+               $statement = new Statement(
+                       new PropertySomeValueSnak( new PropertyId( $propertyId 
) )
+               );
+               $statement->setGuid( $guid );
+               return $statement;
+       }
+
+}
diff --git a/tests/phpunit/mediawiki/Diff/LexemeDiffVisualizerTest.php 
b/tests/phpunit/mediawiki/Diff/LexemeDiffVisualizerTest.php
index 05ab888..69729c8 100644
--- a/tests/phpunit/mediawiki/Diff/LexemeDiffVisualizerTest.php
+++ b/tests/phpunit/mediawiki/Diff/LexemeDiffVisualizerTest.php
@@ -13,6 +13,8 @@
 use Site;
 use Wikibase\DataModel\Services\Diff\EntityDiff;
 use Wikibase\DataModel\Services\EntityId\EntityIdFormatter;
+use Wikibase\Lexeme\DataModel\FormId;
+use Wikibase\Lexeme\DataModel\Services\Diff\ChangeFormDiffOp;
 use Wikibase\Lexeme\DataModel\Services\Diff\LexemeDiff;
 use Wikibase\Lexeme\Diff\LexemeDiffVisualizer;
 use Wikibase\Repo\Content\EntityContentDiff;
@@ -39,6 +41,13 @@
        }
 
        public function diffProvider() {
+               $formDiff = new ChangeFormDiffOp(
+                       new FormId( 'L1-F1' ),
+                       new Diff( [
+                               'representations' => new Diff( [ 'en' => new 
DiffOpChange( 'old', 'new' ) ], true ),
+                               'grammaticalFeatures' => new DiffOpChange( 
'Q5', 'Q6' )
+                       ], true )
+               );
                $lexemeDiff = new EntityContentDiff(
                        new LexemeDiff( [
                                'lemmas' => new Diff( [
@@ -52,11 +61,15 @@
                                'language' => new Diff( [
                                        'id' => new DiffOpChange( 'Q3', 'Q4' ),
                                ], true ),
+                               'forms' => new Diff( [
+                                       'L1-F1' => $formDiff,
+                               ], true ),
                        ] ),
                        new Diff(),
                        'lexeme'
                );
 
+               $expectedForm = '(wikibaselexeme-diffview-form) / L1-F1 / 
(wikibaselexeme-diffview-';
                $lexemeTags = [
                        'has <td>lemma / en</td>' => 
'>(wikibaselexeme-diffview-lemma) / en</td>',
                        'has <ins>O_o</ins>' => '>O_o</ins>',
@@ -65,6 +78,12 @@
                        'has <td>language / id</td>' => 
'>(wikibaselexeme-diffview-language) / id</td>',
                        'has <del>Q3</del>' => '>Q3</del>',
                        'has <ins>Q4</ins>' => '>Q4</ins>',
+                       'has form representation' => $expectedForm . 
'representation) / en<',
+                       'has <del>old</del>' => '>old</del>',
+                       'has <ins>new</ins>' => '>new</ins>',
+                       'has form grammatical-feature' => $expectedForm . 
'grammatical-feature)',
+                       'has <del>Q5</del>' => '>Q5</del>',
+                       'has <ins>Q6</ins>' => '>Q6</ins>',
                ];
 
                $redirectDiff = new EntityContentDiff(
@@ -135,7 +154,9 @@
 
                return new LexemeDiffVisualizer(
                        $this->getMockMessageLocalizer(),
-                       $baiscVisualizer
+                       $baiscVisualizer,
+                       $this->getMockClaimDiffer(),
+                       $this->getMockClaimDiffVisualizer()
                );
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/401959
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I50eb04857ba820faea56b484daaaca6d44a7822a
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to