Dominic.sauer has submitted this change and it was merged.

Change subject: Refactor DumpMetaInformation as  pure value class, using 
DumpMetaInformationStore and DumpMetaInformationLookup
......................................................................


Refactor DumpMetaInformation as  pure value class, using 
DumpMetaInformationStore and DumpMetaInformationLookup

Change-Id: I8de0e2ed3a8460bccff374480caa3a5ae936594d
---
M includes/CrossCheck/Comparer/DataValueComparer.php
M includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
M includes/CrossCheck/CrossChecker.php
M includes/CrossCheck/ReferenceHandler.php
M includes/CrossCheck/Result/CrossCheckResult.php
D includes/DumpMetaInformation.php
A includes/DumpMetaInformation/DumpMetaInformation.php
A includes/DumpMetaInformation/DumpMetaInformationLookup.php
A includes/DumpMetaInformation/DumpMetaInformationStore.php
M includes/Serializer/DumpMetaInformationSerializer.php
M includes/UpdateTable/Importer.php
M specials/SpecialExternalDbs.php
M tests/phpunit/Api/CrossCheckTest.php
M tests/phpunit/CheckForCrossCheckViolationsJobTest.php
D tests/phpunit/CrossCheck/Comparer/DataValueComparerBaseTest.php
A tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
M tests/phpunit/CrossCheck/CrossCheckerTest.php
M tests/phpunit/CrossCheck/ReferenceHandlerTest.php
M tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
A tests/phpunit/DumpMetaInformation/DumpMetaInformationLookupTest.php
A tests/phpunit/DumpMetaInformation/DumpMetaInformationStoreTest.php
A tests/phpunit/DumpMetaInformation/DumpMetaInformationTest.php
D tests/phpunit/DumpMetaInformationTest.php
M tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
M tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
M tests/phpunit/Serializer/SerializerFactoryTest.php
M tests/phpunit/Specials/SpecialCrossCheckTest.php
M tests/phpunit/Specials/SpecialExternalDbsTest.php
M tests/phpunit/UpdateTable/UpdateTableTest.php
29 files changed, 1,051 insertions(+), 723 deletions(-)

Approvals:
  Dominic.sauer: Verified; Looks good to me, approved



diff --git a/includes/CrossCheck/Comparer/DataValueComparer.php 
b/includes/CrossCheck/Comparer/DataValueComparer.php
index 3860000..7448745 100644
--- a/includes/CrossCheck/Comparer/DataValueComparer.php
+++ b/includes/CrossCheck/Comparer/DataValueComparer.php
@@ -4,7 +4,7 @@
 
 use DataValues\DataValue;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 
 
 /**
diff --git a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php 
b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
old mode 100644
new mode 100755
index 508f601..0accd91
--- a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
+++ b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
@@ -6,7 +6,7 @@
 use DataValues\MultilingualTextValue;
 use Doctrine\Instantiator\Exception\InvalidArgumentException;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 
 
 /**
diff --git a/includes/CrossCheck/CrossChecker.php 
b/includes/CrossCheck/CrossChecker.php
index 3c1619d..aa54b09 100644
--- a/includes/CrossCheck/CrossChecker.php
+++ b/includes/CrossCheck/CrossChecker.php
@@ -21,7 +21,8 @@
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
 
 
 /**
@@ -33,10 +34,10 @@
  */
 class CrossChecker {
 
-    /**
-     * @var LoadBalancer
-     */
-    private $loadBalancer;
+       /**
+        * @var LoadBalancer
+        */
+       private $loadBalancer;
 
        /**
         * @var DatabaseBase
@@ -53,9 +54,9 @@
      */
     private $entity;
 
-    /**
-     * @param Entity $entity
-     */
+       /**
+        * @param Entity $entity
+        */
        public function __construct( Entity $entity ) {
         $this->entity = $entity;
 
@@ -72,11 +73,11 @@
         * @return CrossCheckResultList
         * @throws InvalidArgumentException
         */
-       public function crossCheckEntity( $propertyIds = array () ) {
+       public function crossCheckEntity( $propertyIds = array() ) {
                $statements = new StatementList();
                if ( $propertyIds ) {
                        if ( $propertyIds instanceof PropertyId ) {
-                               $propertyIds = array ( $propertyIds );
+                               $propertyIds = array( $propertyIds );
                        }
                        if ( is_array( $propertyIds ) || $propertyIds 
instanceof \Traversable ) {
                                foreach ( $propertyIds as $propertyId ) {
@@ -119,25 +120,25 @@
                        }
                }
 
-        $resultList = new CrossCheckResultList();
-        if( $statements->count() > 0 ) {
-            $this->establishDbConnection();
-            $applicableDumpIds = $this->getApplicableDumpIds();
+               $resultList = new CrossCheckResultList();
+               if ( $statements->count() > 0 ) {
+                       $this->establishDbConnection();
+                       $applicableDumpIds = $this->getApplicableDumpIds();
 
-            foreach ( $applicableDumpIds as $identifierPropertyId => $dumpIds 
) {
-                $identifierPropertyId = new PropertyId( $identifierPropertyId 
);
+                       foreach ( $applicableDumpIds as $identifierPropertyId 
=> $dumpIds ) {
+                               $identifierPropertyId = new PropertyId( 
$identifierPropertyId );
 
-                $resultList->merge(
-                    $this->crossCheckStatementsWithIdentifier(
-                        $statements,
-                        $identifierPropertyId,
-                        $dumpIds
-                    )
-                );
-            }
+                               $resultList->merge(
+                                       
$this->crossCheckStatementsWithIdentifier(
+                                               $statements,
+                                               $identifierPropertyId,
+                                               $dumpIds
+                                       )
+                               );
+                       }
 
-            $this->reuseDbConnection();
-        }
+                       $this->reuseDbConnection();
+               }
 
                return $resultList;
        }
@@ -158,7 +159,8 @@
 
                $resultList = new CrossCheckResultList();
                foreach ( $externalData as $dumpId => $externalDataPerDump ) {
-                       $dumpMetaInformation = DumpMetaInformation::get( 
$this->db, $dumpId );
+                       $dumpMetaInformationLookup = new 
DumpMetaInformationLookup();
+                       $dumpMetaInformation = 
$dumpMetaInformationLookup->findDumpMetaInformationWithId( $dumpId );
 
                        foreach ( $externalDataPerDump as $externalId => 
$externalDataPerId ) {
                                foreach ( $externalDataPerId as $propertyId => 
$externalValues ) {
@@ -227,7 +229,7 @@
         * @return array
         */
        private function getApplicableDumpIds() {
-               $applicableDumps = array ();
+               $applicableDumps = array();
 
                $propertyIds = $this->entity->getStatements()->getPropertyIds();
                if ( $propertyIds ) {
@@ -238,7 +240,7 @@
                        );
 
                        foreach ( $result as $row ) {
-                               $applicableDumps[ $row->identifier_pid ][ ] = 
$row->dump_id;
+                               $applicableDumps[ $row->identifier_pid ][] = 
$row->dump_id;
                        }
                }
 
@@ -253,13 +255,13 @@
         * @return array
         */
        private function getExternalIds( PropertyId $identifierPropertyId ) {
-               $externalIds = array ();
+               $externalIds = array();
                $identifierStatements = 
$this->entity->getStatements()->getWithPropertyId( $identifierPropertyId );
 
                foreach ( $identifierStatements as $identifierStatement ) {
                        $mainSnak = $identifierStatement->getMainSnak();
                        if ( $mainSnak instanceof PropertyValueSnak ) {
-                               $externalIds[ ] = 
$mainSnak->getDataValue()->getValue();
+                               $externalIds[] = 
$mainSnak->getDataValue()->getValue();
                        }
                }
 
@@ -271,30 +273,30 @@
         *
         * @param array $dumpIds
         * @param array $externalIds
-     * @param StatementList $statements
+        * @param StatementList $statements
         *
         * @return array
         */
        private function getExternalData( array $dumpIds, array $externalIds, 
StatementList $statements ) {
-               $externalData = array ();
+               $externalData = array();
                if ( $dumpIds && $externalIds ) {
                        $result = $this->db->select(
                                DUMP_DATA_TABLE,
-                               array (
+                               array(
                                        'dump_id',
                                        'external_id',
                                        'pid',
                                        'external_value'
                                ),
-                               array (
+                               array(
                                        $this->buildSqlInCondition( 'dump_id', 
$dumpIds ),
                                        $this->buildSqlInCondition( 
'external_id', $externalIds ),
-                    $this->buildSqlInCondition( 'pid', 
$statements->getPropertyIds() )
+                                       $this->buildSqlInCondition( 'pid', 
$statements->getPropertyIds() )
                                )
                        );
 
                        foreach ( $result as $row ) {
-                               $externalData[ $row->dump_id ][ 
$row->external_id ][ $row->pid ][ ] = $row->external_value;
+                               $externalData[ $row->dump_id ][ 
$row->external_id ][ $row->pid ][] = $row->external_value;
                        }
                }
 
@@ -303,7 +305,7 @@
 
        /**
         * Creates SQL condition for WHERE clauses using the IN operator.
-     * If $values is empty, true will be returned.
+        * If $values is empty, true will be returned.
         *
         * @param string $columnName
         * @param array $values
@@ -311,41 +313,40 @@
         * @return string
         */
        private static function buildSqlInCondition( $columnName, array $values 
) {
-        if( count($values) > 0 ) {
-            $values = array_map(
-                function ( $value ) {
-                    return sprintf( '"%s"', $value );
-                },
-                $values
-            );
+               if ( count( $values ) > 0 ) {
+                       $values = array_map(
+                               function ( $value ) {
+                                       return sprintf( '"%s"', $value );
+                               },
+                               $values
+                       );
 
-            return sprintf( '%s in (%s)', $columnName, implode( ',', $values ) 
);
-        }
-        else {
-            return 'true';
-        }
+                       return sprintf( '%s in (%s)', $columnName, implode( 
',', $values ) );
+               } else {
+                       return 'true';
+               }
        }
 
-    /**
-     * Establishes a database connection using the load balancer
-     *
-     * @throws MWException
-     */
-    protected function establishDbConnection() {
-        if( !$this->loadBalancer ) {
-            $this->loadBalancer = wfGetLB();
-        }
+       /**
+        * Establishes a database connection using the load balancer
+        *
+        * @throws MWException
+        */
+       protected function establishDbConnection() {
+               if ( !$this->loadBalancer ) {
+                       $this->loadBalancer = wfGetLB();
+               }
 
-        wfWaitForSlaves();
-        $this->db = $this->loadBalancer->getConnection( DB_SLAVE );
-    }
+               wfWaitForSlaves();
+               $this->db = $this->loadBalancer->getConnection( DB_SLAVE );
+       }
 
-    /**
-     * Mark database connection as being available for reuse
-     *
-     * @throws MWException
-     */
-    protected function reuseDbConnection( ) {
-        $this->loadBalancer->reuseConnection( $this->db );
-    }
+       /**
+        * Mark database connection as being available for reuse
+        *
+        * @throws MWException
+        */
+       protected function reuseDbConnection() {
+               $this->loadBalancer->reuseConnection( $this->db );
+       }
 }
\ No newline at end of file
diff --git a/includes/CrossCheck/ReferenceHandler.php 
b/includes/CrossCheck/ReferenceHandler.php
old mode 100644
new mode 100755
index c4e0b34..d865a24
--- a/includes/CrossCheck/ReferenceHandler.php
+++ b/includes/CrossCheck/ReferenceHandler.php
@@ -11,7 +11,7 @@
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 
 
 /**
diff --git a/includes/CrossCheck/Result/CrossCheckResult.php 
b/includes/CrossCheck/Result/CrossCheckResult.php
old mode 100644
new mode 100755
index 781c5e9..64a9d7f
--- a/includes/CrossCheck/Result/CrossCheckResult.php
+++ b/includes/CrossCheck/Result/CrossCheckResult.php
@@ -5,7 +5,7 @@
 use Doctrine\Instantiator\Exception\InvalidArgumentException;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\Repo\WikibaseRepo;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 use WikidataQuality\Result\CheckResult;
 
 
diff --git a/includes/DumpMetaInformation.php b/includes/DumpMetaInformation.php
deleted file mode 100644
index 25c57d8..0000000
--- a/includes/DumpMetaInformation.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-
-namespace WikidataQuality\ExternalValidation;
-
-use DatabaseBase;
-use DateTime;
-use DateTimeZone;
-use Doctrine\Instantiator\Exception\InvalidArgumentException;
-use Doctrine\Instantiator\Exception\UnexpectedValueException;
-use Wikibase\DataModel\Entity\ItemId;
-
-
-/**
- * Class DumpMetaInformation
- *
- * @package WikidataQuality\ExternalValidation\CrossCheck
- * @author BP2014N1
- * @license GNU GPL v2+
- */
-class DumpMetaInformation {
-
-       /**
-        * Id of the dump
-        *
-        * @var string
-        */
-       private $dumpId;
-
-       /**
-        * Id of the item that represents the data source of the dump
-        *
-        * @var ItemId
-        */
-       private $sourceItemId;
-
-       /**
-        * Date of import
-        *
-        * @var DateTime
-        */
-       private $importDate;
-
-       /**
-        * Language of data in the dump
-        *
-        * @var string
-        */
-       private $language;
-
-       /**
-        * Source url of the downloaded dump
-        *
-        * @var string
-        */
-       private $sourceUrl;
-
-       /**
-        * Size of the imported dump
-        *
-        * @var int
-        */
-       private $size;
-
-       /**
-        * Id of the item that represents the license of the database
-        *
-        * @var ItemId
-        */
-       private $licenseItemId;
-
-       /**
-        * @param string $dumpId
-        * @param ItemId $sourceItemId
-        * @param DateTime $importDate
-        * @param string $language
-        * @param string $sourceUrl
-        * @param int $size
-        * @param ItemId $licenseItemId
-        */
-       public function __construct( $dumpId, ItemId $sourceItemId, DateTime 
$importDate, $language, $sourceUrl, $size, ItemId $licenseItemId ) {
-               if ( !is_string( $dumpId ) ) {
-                       throw new InvalidArgumentException( '$dumpId must be 
string.' );
-               }
-               if ( !is_string( $language ) ) {
-                       throw new InvalidArgumentException( '$language must be 
string.' );
-               }
-               if ( !is_string( $sourceUrl ) ) {
-                       throw new InvalidArgumentException( '$sourceUrl must be 
string.' );
-               }
-               if ( !is_int( $size ) ) {
-                       throw new InvalidArgumentException( '$size must be 
integer.' );
-               }
-
-               $this->dumpId = $dumpId;
-               $this->sourceItemId = $sourceItemId;
-               $this->importDate = $importDate;
-               $this->language = $language;
-               $this->sourceUrl = $sourceUrl;
-               $this->size = $size;
-               $this->licenseItemId = $licenseItemId;
-       }
-
-       /**
-        * @return string
-        */
-       public function getDumpId() {
-               return $this->dumpId;
-       }
-
-       /**
-        * @return ItemId
-        */
-       public function getSourceItemId() {
-               return $this->sourceItemId;
-       }
-
-       /**
-        * @return DateTime
-        */
-       public function getImportDate() {
-               return $this->importDate;
-       }
-
-       /**
-        * @return string
-        */
-       public function getLanguage() {
-               return $this->language;
-       }
-
-       /**
-        * @return string
-        */
-       public function getSourceUrl() {
-               return $this->sourceUrl;
-       }
-
-       /**
-        * @return int
-        */
-       public function getSize() {
-               return $this->size;
-       }
-
-       /**
-        * @return ItemId
-        */
-       public function getLicenseItemId() {
-               return $this->licenseItemId;
-       }
-
-       /**
-        * Saves dump meta information to database
-        *
-        * @param DataBase $db
-        */
-       public function save( DatabaseBase $db ) {
-               $accumulator = array (
-                       'dump_id' => $this->getDumpId(),
-                       'source_qid' => 
$this->getSourceItemId()->getSerialization(),
-                       'import_date' => $this->getImportDate()->format( 
'YmdHis' ),
-                       'language' => $this->getLanguage(),
-                       'source_url' => $this->getSourceUrl(),
-                       'size' => $this->getSize(),
-                       'license_qid' => 
$this->getLicenseItemId()->getSerialization()
-               );
-
-               $dumpId = $this->getDumpId();
-               $existing = $db->selectRow(
-                       DUMP_META_TABLE,
-                       array ( 'dump_id' ),
-                       array ( "dump_id='$dumpId'" )
-               );
-
-               if ( $existing ) {
-                       $result = $db->update(
-                               DUMP_META_TABLE,
-                               $accumulator,
-                               array ( "dump_id='$dumpId'" )
-                       );
-               } else {
-                       $result = $db->insert(
-                               DUMP_META_TABLE,
-                               $accumulator
-                       );
-               }
-
-               return $result;
-       }
-
-       /**
-        * Gets DumpMetaInformation for specific dump ids from database
-        *
-        * @param DatabaseBase $db
-        * @param string|array $dumpIds
-        *
-        * @return array|DumpMetaInformation
-        */
-       public static function get( DatabaseBase $db, $dumpIds = null ) {
-               if ( $dumpIds ) {
-                       if ( is_string( $dumpIds ) ) {
-                               $dumpIds = array ( $dumpIds );
-                       } elseif ( !is_array( $dumpIds ) ) {
-                               throw new InvalidArgumentException( '$dumpIds 
must be array of strings or string.' );
-                       } else {
-                               foreach ( $dumpIds as $dumpId ) {
-                                       if ( !is_string( $dumpId ) ) {
-                                               throw new 
InvalidArgumentException( '$dumpIds must be array of strings.' );
-                                       }
-                               }
-                       }
-               }
-
-               $conditions = array ();
-               if ( $dumpIds ) {
-                       $formatter = function ( $dumpId ) {
-                               return sprintf( '"%s"', $dumpId );
-                       };
-                       $dumpIds = array_map( $formatter, $dumpIds );
-                       $conditions[ ] = sprintf( 'dump_id IN (%s)', implode( 
',', $dumpIds ) );
-               }
-
-               $result = $db->select(
-                       DUMP_META_TABLE,
-                       array ( 'dump_id', 'source_qid', 'import_date', 
'language', 'source_url', 'size', 'license_qid' ),
-                       $conditions
-               );
-
-               $dumpMetaInformation = array ();
-               foreach ( $result as $row ) {
-                       $dumpId = $row->dump_id;
-                       $sourceItemId = new ItemId( $row->source_qid );
-                       $importDate = DateTime::createFromFormat( 'YmdHis', 
$row->import_date, new DateTimeZone( 'UTC' ) );
-                       if ( !$importDate ) {
-                               throw new UnexpectedValueException( 'Cannot 
convert import_date from violations table to YmdHis format.' );
-                       }
-                       $language = $row->language;
-                       $sourceUrl = $row->source_url;
-                       $size = (int)$row->size;
-                       $licenseItemId = new ItemId( $row->license_qid );
-
-                       $dumpMetaInformation[ $dumpId ] = new 
DumpMetaInformation( $dumpId, $sourceItemId, $importDate, $language, 
$sourceUrl, $size, $licenseItemId );
-               }
-
-               if ( $dumpMetaInformation ) {
-                       if ( $dumpIds && count( $dumpIds ) === 1 ) {
-                               $dumpMetaInformation = array_values( 
$dumpMetaInformation );
-                               return $dumpMetaInformation[ 0 ];
-                       } else {
-                               return $dumpMetaInformation;
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformation.php 
b/includes/DumpMetaInformation/DumpMetaInformation.php
new file mode 100755
index 0000000..83db058
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformation.php
@@ -0,0 +1,149 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+use DateTime;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Wikibase\DataModel\Entity\ItemId;
+
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformation {
+
+       /**
+        * Id of the dump
+        *
+        * @var string
+        */
+       private $dumpId;
+
+       /**
+        * Id of the item that represents the data source of the dump
+        *
+        * @var ItemId
+        */
+       private $sourceItemId;
+
+       /**
+        * Date of import
+        *
+        * @var DateTime
+        */
+       private $importDate;
+
+       /**
+        * Language of data in the dump
+        *
+        * @var string
+        */
+       private $language;
+
+       /**
+        * Source url of the downloaded dump
+        *
+        * @var string
+        */
+       private $sourceUrl;
+
+       /**
+        * Size of the imported dump
+        *
+        * @var int
+        */
+       private $size;
+
+       /**
+        * Id of the item that represents the license of the database
+        *
+        * @var ItemId
+        */
+       private $licenseItemId;
+
+       /**
+        * @param string $dumpId
+        * @param ItemId $sourceItemId
+        * @param DateTime $importDate
+        * @param string $language
+        * @param string $sourceUrl
+        * @param int $size
+        * @param ItemId $licenseItemId
+     *
+     * @throws InvalidArgumentException
+        */
+       public function __construct( $dumpId, ItemId $sourceItemId, DateTime 
$importDate, $language, $sourceUrl, $size, ItemId $licenseItemId ) {
+               if ( !is_string( $dumpId ) ) {
+                       throw new InvalidArgumentException( '$dumpId must be 
string.' );
+               }
+               if ( !is_string( $language ) ) {
+                       throw new InvalidArgumentException( '$language must be 
string.' );
+               }
+               if ( !is_string( $sourceUrl ) ) {
+                       throw new InvalidArgumentException( '$sourceUrl must be 
string.' );
+               }
+               if ( !is_int( $size ) ) {
+                       throw new InvalidArgumentException( '$size must be 
integer.' );
+               }
+
+               $this->dumpId = $dumpId;
+               $this->sourceItemId = $sourceItemId;
+               $this->importDate = $importDate;
+               $this->language = $language;
+               $this->sourceUrl = $sourceUrl;
+               $this->size = $size;
+               $this->licenseItemId = $licenseItemId;
+       }
+
+       /**
+        * @return string
+        */
+       public function getDumpId() {
+               return $this->dumpId;
+       }
+
+       /**
+        * @return ItemId
+        */
+       public function getSourceItemId() {
+               return $this->sourceItemId;
+       }
+
+       /**
+        * @return DateTime
+        */
+       public function getImportDate() {
+               return $this->importDate;
+       }
+
+       /**
+        * @return string
+        */
+       public function getLanguage() {
+               return $this->language;
+       }
+
+       /**
+        * @return string
+        */
+       public function getSourceUrl() {
+               return $this->sourceUrl;
+       }
+
+       /**
+        * @return int
+        */
+       public function getSize() {
+               return $this->size;
+       }
+
+       /**
+        * @return ItemId
+        */
+       public function getLicenseItemId() {
+               return $this->licenseItemId;
+       }
+}
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformationLookup.php 
b/includes/DumpMetaInformation/DumpMetaInformationLookup.php
new file mode 100755
index 0000000..3c57499
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformationLookup.php
@@ -0,0 +1,151 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+use DateTime;
+use DateTimeZone;
+use ResultWrapper;
+use Wikibase\DataModel\Entity\ItemId;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use DatabaseBase;
+
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationLookup {
+
+       /**
+        * Gets DumpMetaInformation for specific dump id from database
+        *
+        * @param $dumpId
+        *
+        * @throws InvalidArgumentException
+        *
+        * @return DumpMetaInformation
+        */
+       public function findDumpMetaInformationWithId( $dumpId ) {
+               if ( !is_string( $dumpId ) ) {
+                       throw new InvalidArgumentException( '$dumpId must be 
string.' );
+               }
+
+               $condition = "dump_id ='$dumpId'";
+               $dumpMetaInformation = $this->getDumpMetaInformationFromDB( 
$condition );
+               if ( $dumpMetaInformation ) {
+                       $dumpMetaInformation = $dumpMetaInformation[ $dumpId ];
+               }
+               return $dumpMetaInformation;
+       }
+
+       /**
+        * Gets DumpMetaInformation for specific dump ids from database
+        * Returns array in the form 'dumpId' => DumpMetaInformation
+        *
+        * @param array $dumpIds
+        *
+        * @throws InvalidArgumentException
+        *
+        * @return array
+        */
+       public function findDumpMetaInformationWithIds( array $dumpIds ) {
+               foreach ( $dumpIds as $dumpId ) {
+                       if ( !is_string( $dumpId ) ) {
+                               throw new InvalidArgumentException( '$dumpIds 
must contain strings.' );
+                       }
+               }
+
+               $conditions = $this->setConditions( $dumpIds );
+               $dumpMetaInformation = $this->getDumpMetaInformationFromDB( 
$conditions );
+               return $dumpMetaInformation;
+       }
+
+       /**
+        * Gets all DumpMetaInformation from database
+        * Returns array in the form 'dumpId' => DumpMetaInformation
+        *
+        * @return array
+        */
+       public function findAllDumpMetaInformation() {
+               $dumpMetaInformation = $this->getDumpMetaInformationFromDB();
+               return $dumpMetaInformation;
+       }
+
+       /**
+        * @param array $dumpIds
+        *
+        * @return array
+        */
+       private function setConditions( array $dumpIds ) {
+               $conditions = array();
+               $formatter = function ( $dumpIds ) {
+                       return sprintf( '"%s"', $dumpIds );
+               };
+
+               $dumpIds = array_map( $formatter, $dumpIds );
+               $conditions[] = sprintf( 'dump_id IN (%s)', implode( ',', 
$dumpIds ) );
+
+               return $conditions;
+       }
+
+       /**
+        * @param string $condition
+        *
+        * @return array
+        */
+       private function getDumpMetaInformationFromDB( $condition = '' ) {
+               $db = $this->getDBConnection();
+
+               $result = $db->select(
+                       DUMP_META_TABLE,
+                       '*',
+                       $condition
+               );
+
+               return $this->buildDumpMetaInformationFromResult( $result );
+       }
+
+       /**
+        * @param ResultWrapper $result
+        *
+        * @throws UnexpectedValueException
+        *
+        * @return null|array
+        */
+       private function buildDumpMetaInformationFromResult( ResultWrapper 
$result ) {
+               if ( $result->numRows() === 0 ) {
+                       return null;
+               }
+               $dumpMetaInformation = array();
+               foreach ( $result as $row ) {
+                       $dumpId = $row->dump_id;
+                       $sourceItemId = new ItemId( $row->source_qid );
+                       $importDate = DateTime::createFromFormat( 'YmdHis', 
$row->import_date, new DateTimeZone( 'UTC' ) );
+                       if ( !$importDate ) {
+                               throw new UnexpectedValueException( 'Cannot 
convert import_date from violations table to YmdHis format.' );
+                       }
+                       $language = $row->language;
+                       $sourceUrl = $row->source_url;
+                       $size = (int)$row->size;
+                       $licenseItemId = new ItemId( $row->license_qid );
+
+                       $dumpMetaInformation[ $dumpId ] = new 
DumpMetaInformation( $dumpId, $sourceItemId, $importDate, $language, 
$sourceUrl, $size, $licenseItemId );
+               }
+               return $dumpMetaInformation;
+       }
+
+       /**
+        * @throws \DBError
+        * @throws \MWException
+        *
+        * @return DatabaseBase
+        */
+       private function getDBConnection() {
+               wfWaitForSlaves();
+               $loadBalancer = wfGetLB();
+               $db = $loadBalancer->getConnection( DB_MASTER );
+               return $db;
+       }
+} 
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformationStore.php 
b/includes/DumpMetaInformation/DumpMetaInformationStore.php
new file mode 100755
index 0000000..2a6a5d2
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformationStore.php
@@ -0,0 +1,77 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationStore {
+
+    /**
+     * Saves dump meta information to database
+     *
+     * @param DumpMetaInformation $dumpMetaInformation
+     *
+     * @return boolean
+     */
+    public function saveDumpMetaInformation( DumpMetaInformation 
$dumpMetaInformation ) {
+
+        $accumulator = $this->getDumpInformationArray( $dumpMetaInformation );
+
+        $db = $this->getDBConnection();
+
+        $dumpId = $dumpMetaInformation->getDumpId();
+        $existing = $db->selectRow(
+            DUMP_META_TABLE,
+            array ( 'dump_id' ),
+            array ( "dump_id='$dumpId'" )
+        );
+
+        if ( $existing ) {
+            $result = $db->update(
+                DUMP_META_TABLE,
+                $accumulator,
+                array ( "dump_id='$dumpId'" )
+            );
+        } else {
+            $result = $db->insert(
+                DUMP_META_TABLE,
+                $accumulator
+            );
+        }
+
+        return $result;
+    }
+
+    /**
+     * @param DumpMetaInformation $dumpMetaInformation
+     *
+     * @return array
+     */
+    private function getDumpInformationArray( DumpMetaInformation 
$dumpMetaInformation ) {
+        return array (
+            'dump_id' => $dumpMetaInformation->getDumpId(),
+            'source_qid' => 
$dumpMetaInformation->getSourceItemId()->getSerialization(),
+            'import_date' => $dumpMetaInformation->getImportDate()->format( 
'YmdHis' ),
+            'language' => $dumpMetaInformation->getLanguage(),
+            'source_url' => $dumpMetaInformation->getSourceUrl(),
+            'size' => $dumpMetaInformation->getSize(),
+            'license_qid' => 
$dumpMetaInformation->getLicenseItemId()->getSerialization()
+        );
+    }
+
+    /**
+     * @throws \DBError
+     * @throws \MWException
+     *
+     * @return \DatabaseBase
+     */
+    private function getDBConnection() {
+        wfWaitForSlaves();
+        $loadBalancer = wfGetLB();
+        $db = $loadBalancer->getConnection( DB_MASTER );
+        return $db;
+    }
+} 
\ No newline at end of file
diff --git a/includes/Serializer/DumpMetaInformationSerializer.php 
b/includes/Serializer/DumpMetaInformationSerializer.php
old mode 100644
new mode 100755
index b263ed3..02ffa60
--- a/includes/Serializer/DumpMetaInformationSerializer.php
+++ b/includes/Serializer/DumpMetaInformationSerializer.php
@@ -6,7 +6,7 @@
 use Serializers\DispatchableSerializer;
 use Serializers\Exceptions\UnsupportedObjectException;
 use Serializers\Serializer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 
 
 /**
diff --git a/includes/UpdateTable/Importer.php 
b/includes/UpdateTable/Importer.php
old mode 100644
new mode 100755
index 60d0e39..ce04bbb
--- a/includes/UpdateTable/Importer.php
+++ b/includes/UpdateTable/Importer.php
@@ -9,7 +9,8 @@
 use MWException;
 use PharData;
 use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
 
 
 /**
@@ -201,11 +202,9 @@
     /**
      * Inserts meta information stored in csv file into database
      *
-     * @param DatabaseBase $db
-     *
      * @return array
      */
-    protected function insertMetaInformation( DatabaseBase $db ) {
+    protected function insertMetaInformation() {
         if ( !$this->importContext->isQuiet() ) {
             print "Insert new dump meta information\n";
         }
@@ -224,7 +223,8 @@
                 intval( $data[ 5 ] ),
                 new ItemId( $data[ 6 ] )
             );
-            $metaInformation->save( $db );
+            $dumpMetaInformationStore = new DumpMetaInformationStore();
+            $dumpMetaInformationStore->saveDumpMetaInformation( 
$metaInformation );
 
             $dumpIds[ ] = $metaInformation->getDumpId();
 
diff --git a/specials/SpecialExternalDbs.php b/specials/SpecialExternalDbs.php
old mode 100644
new mode 100755
index 6897fcf..ca88735
--- a/specials/SpecialExternalDbs.php
+++ b/specials/SpecialExternalDbs.php
@@ -8,7 +8,7 @@
 use Language;
 use Linker;
 use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
 use WikidataQuality\Html\HtmlTable;
 use WikidataQuality\Html\HtmlTableCell;
 use WikidataQuality\Specials\SpecialWikidataQualityPage;
@@ -49,10 +49,9 @@
                        . Html::closeElement( 'h3' )
                );
 
-               wfWaitForSlaves();
-               $loadBalancer = wfGetLB();
-               $db = $loadBalancer->getConnection( DB_SLAVE );
-               $dumps = DumpMetaInformation::get( $db );
+
+        $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+        $dumps = $dumpMetaInformationLookup->findAllDumpMetaInformation();
 
                if ( $dumps ) {
                        $groupedDumpMetaInformation = array ();
diff --git a/tests/phpunit/Api/CrossCheckTest.php 
b/tests/phpunit/Api/CrossCheckTest.php
index 6356b98..63e448c 100755
--- a/tests/phpunit/Api/CrossCheckTest.php
+++ b/tests/phpunit/Api/CrossCheckTest.php
@@ -18,7 +18,7 @@
  * @group API
  * @group medium
  *
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
  * @uses   
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
diff --git a/tests/phpunit/CheckForCrossCheckViolationsJobTest.php 
b/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
old mode 100644
new mode 100755
index 7642d8b..2eda54c
--- a/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
+++ b/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
@@ -17,7 +17,7 @@
 use DataValues\StringValue;
 use Wikibase\Repo\WikibaseRepo;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 use WikidataQuality\ExternalValidation\CheckForCrossCheckViolationsJob;
 
 
@@ -30,7 +30,7 @@
  * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
  * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
  * @uses 
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
  * @uses WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
  *
  * @author BP2014N1
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerBaseTest.php 
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerBaseTest.php
deleted file mode 100644
index ea12f77..0000000
--- a/tests/phpunit/CrossCheck/Comparer/DataValueComparerBaseTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-namespace WikidataQuality\ExternalValidation\Tests\CrossCheck\Comparer;
-
-use DataValues\DataValue;
-use WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer;
-
-/**
- * @author BP2014N1
- * @license GNU GPL v2+
- */
-abstract class DataValueComparerBaseTest extends \MediaWikiTestCase {
-
-    /**
-     * @return DataValueComparer
-     */
-    protected abstract function buildComparer();
-
-
-    public function testImplementsDataValueComparerInterface() {
-        $this->assertInstanceOf( 
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer', 
$this->buildComparer() );
-    }
-
-
-    /**
-     * @dataProvider comparableProvider
-     */
-    public function testIsComparerForReturnsTrue( DataValue $dataValue ) {
-        $comparer = $this->buildComparer();
-        $this->assertTrue( $comparer->isComparerFor( $dataValue->getType() ) );
-    }
-
-    public abstract function comparableProvider();
-
-
-    /**
-     * @dataProvider nonComparableProvider
-     */
-    public function testIsComparerForReturnsFalse( DataValue $dataValue ) {
-        $comparer = $this->buildComparer();
-        $this->assertFalse( $comparer->isComparerFor( $dataValue->getType() ) 
);
-    }
-
-    public abstract function nonComparableProvider();
-
-
-    /**
-     * @dataProvider nonComparableProvider
-     */
-    public function testComparerThrowsInvalidArgumentException( DataValue 
$dataValue ) {
-        $this->setExpectedException( 'InvalidArgumentException' );
-        $this->buildComparer()->compare( $dataValue, array(), 
$this->getDumpMetaInformationMock() );
-    }
-
-
-    /**
-     * @dataProvider comparisonProvider
-     */
-    public function testComparison( $expectedResult, $localValue, 
$externalValues, $dumpMetaInformation = null ) {
-        if ( !$dumpMetaInformation ) {
-            $dumpMetaInformation = $this->getDumpMetaInformationMock();
-        }
-
-        $actualResult = $this->buildComparer()->compare( $localValue, 
$externalValues, $dumpMetaInformation );
-
-        $this->assertEquals( $expectedResult, $actualResult );
-    }
-
-    public abstract function comparisonProvider();
-
-
-    protected function getDumpMetaInformationMock( $language = 'en' ) {
-        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
-            ->disableOriginalConstructor()
-            ->setMethods( array( 'getLanguage' ) )
-            ->getMock();
-
-        $mock->expects( $this->any() )
-            ->method( 'getLanguage' )
-            ->willReturn( $language );
-
-        return $mock;
-    }
-}
\ No newline at end of file
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php 
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
new file mode 100644
index 0000000..4f11cff
--- /dev/null
+++ b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\Tests\CrossCheck\Comparer;
+
+
+/**
+ * @group WikidataQuality
+ * @group WikidataQuality\ExternalValidation
+ *
+ * @uses   WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
+ * @uses   
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
+ *
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+abstract class DataValueComparerTestBase extends \MediaWikiTestCase {
+    /**
+     * @dataProvider executeDataProvider
+     */
+    public function testExecute( $dumpMetaInformation, $localValue, 
$externalValues, $expectedDataMismatch, $expectedExternalValues ) {
+        $comparer = $this->createComparer( $dumpMetaInformation, $localValue, 
$externalValues );
+        $result = $comparer->execute();
+
+        if ( $result ) {
+            $this->assertEquals( $localValue, $result->getLocalValue() );
+            $this->assertEquals( $expectedExternalValues, 
$result->getExternalValues() );
+            $this->assertEquals( $expectedDataMismatch, 
$result->hasDataMismatchOccurred() );
+        } else {
+            $this->assertNull( $expectedDataMismatch );
+            $this->assertNull( $expectedExternalValues );
+        }
+    }
+
+    /*
+     * Test cases for testExecute
+     * @return array
+     */
+    public abstract function executeDataProvider();
+
+    /*
+     * Returns new instance of the comparer being tested with given arguments.
+     *
+     * @return DataValueComparer
+     */
+    protected abstract function createComparer( $dumpMetaInformation, 
$localValue, $externalValues );
+
+
+    /**
+     * Returns DumpMetaInformation mock with given language
+     *
+     * @param $language
+     * @return \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected function getDumpMetaInformationMock( $language ) {
+        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
+            ->setMethods( array( 'getLanguage' ) )
+            ->disableOriginalConstructor()
+            ->getMock();
+        $mock->expects( $this->any() )
+            ->method( 'getLanguage' )
+            ->willReturn( $language );
+
+        return $mock;
+    }
+}
diff --git a/tests/phpunit/CrossCheck/CrossCheckerTest.php 
b/tests/phpunit/CrossCheck/CrossCheckerTest.php
index a4f8577..1f951d4 100755
--- a/tests/phpunit/CrossCheck/CrossCheckerTest.php
+++ b/tests/phpunit/CrossCheck/CrossCheckerTest.php
@@ -2,7 +2,6 @@
 
 namespace WikidataQuality\ExternalValidation\Tests\CrossCheck;
 
-use DataValues\MonolingualTextValue;
 use DataValues\StringValue;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
@@ -25,7 +24,7 @@
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
  * @uses   
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
  *
  * @author BP2014N1
diff --git a/tests/phpunit/CrossCheck/ReferenceHandlerTest.php 
b/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
old mode 100644
new mode 100755
index 6baa0c8..18de5b3
--- a/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
+++ b/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
@@ -120,7 +120,7 @@
     }
 
     private function getDumpMetaInformationMock( ItemId $sourceItemId ) {
-        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
             ->disableOriginalConstructor()
             ->getMock();
         $mock->expects( $this->any() )
diff --git a/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php 
b/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
old mode 100644
new mode 100755
index a9699af..e4f2d5e
--- a/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
+++ b/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
@@ -134,7 +134,7 @@
 
     private function getDumpMetaInformationMock()
     {
-        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+        $mock = $this->getMockBuilder( 
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
             ->disableOriginalConstructor()
             ->getMock();
 
diff --git 
a/tests/phpunit/DumpMetaInformation/DumpMetaInformationLookupTest.php 
b/tests/phpunit/DumpMetaInformation/DumpMetaInformationLookupTest.php
new file mode 100755
index 0000000..78c0067
--- /dev/null
+++ b/tests/phpunit/DumpMetaInformation/DumpMetaInformationLookupTest.php
@@ -0,0 +1,212 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\Tests\DumpMetaInformation;
+
+use DateTime;
+use Wikibase\DataModel\Entity\ItemId;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
+
+
+/**
+ * @covers 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup
+ *
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ *
+ * @group Database
+ * @group medium
+ *
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationLookupTest extends \MediaWikiTestCase {
+
+       /**
+        * @var array
+        */
+       private $dumpMetaInformation = array();
+
+       public function __construct( $name = null, $data = array(), $dataName = 
null ) {
+               parent::__construct( $name, $data, $dataName );
+
+               // Create example dump meta information
+               $this->dumpMetaInformation['foo'] = new DumpMetaInformation(
+                       'foo',
+                       new ItemId( 'Q1' ),
+                       new DateTime( '2015-01-01 00:00:00' ),
+                       'en',
+                       'http://www.foo.bar',
+                       42,
+                       new ItemId( 'Q6938433' )
+               );
+               $this->dumpMetaInformation['bar'] = new DumpMetaInformation(
+                       'bar',
+                       new ItemId( 'Q2' ),
+                       new DateTime( '2020-01-01 12:12:12' ),
+                       'de',
+                       'http://www.fu.bar',
+                       4242,
+                       new ItemId( 'Q6938433' )
+               );
+       }
+
+       public function setUp() {
+               parent::setUp();
+
+               // Specify database table used by this test
+               $this->tablesUsed[] = DUMP_META_TABLE;
+       }
+
+       /**
+        * Adds temporary test data to database
+        *
+        * @throws \DBUnexpectedError
+        */
+       public function addDBData() {
+               // Truncate tables
+               $this->db->delete(
+                       DUMP_META_TABLE,
+                       '*'
+               );
+
+               // Insert example dump meta information
+               foreach ( $this->dumpMetaInformation as $dumpMetaInformation ) {
+                       $this->db->insert(
+                               DUMP_META_TABLE,
+                               array(
+                                       'dump_id' => 
$dumpMetaInformation->getDumpId(),
+                                       'source_qid' => 
$dumpMetaInformation->getSourceItemId()->getSerialization(),
+                                       'import_date' => 
$dumpMetaInformation->getImportDate()->format( 'YmdHis' ),
+                                       'language' => 
$dumpMetaInformation->getLanguage(),
+                                       'source_url' => 
$dumpMetaInformation->getSourceUrl(),
+                                       'size' => 
$dumpMetaInformation->getSize(),
+                                       'license_qid' => 
$dumpMetaInformation->getLicenseItemId()
+                               )
+                       );
+               }
+       }
+
+       /**
+        * @dataProvider findDumpMetaInformationWithIdDataProvider
+        */
+       public function testFindDumpMetaInformationWithId( $dumpId, 
$expectedDumpMetaInformation, $expectedException ) {
+               $this->setExpectedException( $expectedException );
+
+               $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+               $dumpMetaInformation = 
$dumpMetaInformationLookup->findDumpMetaInformationWithId( $dumpId );
+
+               $this->assertEquals( $expectedDumpMetaInformation, 
$dumpMetaInformation );
+       }
+
+       /**
+        * @return array
+        */
+       public function findDumpMetaInformationWithIdDataProvider() {
+               return array(
+                       // Single id
+                       array(
+                               'foo',
+                               $this->dumpMetaInformation['foo'],
+                               null
+                       ),
+                       // Non-existent id
+                       array(
+                               'foobar',
+                               null,
+                               null
+                       ),
+                       // Invalid ids
+                       array(
+                               42,
+                               null,
+                               'InvalidArgumentException'
+                       ),
+                       array(
+                               array( 42 ),
+                               null,
+                               'InvalidArgumentException'
+                       ),
+                       array(
+                               null,
+                               null,
+                               'InvalidArgumentException'
+                       )
+               );
+       }
+
+       /**
+        * @dataProvider findDumpMetaInformationWithIdsDataProvider
+        */
+       public function testFindDumpMetaInformationWithIds( $dumpIds, 
$expectedDumpMetaInformation, $expectedException ) {
+               $this->setExpectedException( $expectedException );
+
+               $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+               $dumpMetaInformation = 
$dumpMetaInformationLookup->findDumpMetaInformationWithIds( $dumpIds );
+
+               $this->assertEquals( $expectedDumpMetaInformation, 
$dumpMetaInformation );
+       }
+
+       /**
+        * @return array
+        */
+       public function findDumpMetaInformationWithIdsDataProvider() {
+               return array(
+                       // Multiple ids
+                       array(
+                               array(
+                                       'foo',
+                                       'bar'
+                               ),
+                               array(
+                                       'foo' => 
$this->dumpMetaInformation['foo'],
+                                       'bar' => 
$this->dumpMetaInformation['bar']
+                               ),
+                               null
+                       ),
+                       // Non-existent id
+                       array(
+                               array( 'foobar' ),
+                               null,
+                               null
+                       ),
+                       // Invalid ids
+                       array(
+                               array( 42 ),
+                               null,
+                               'InvalidArgumentException'
+                       )
+               );
+       }
+
+       public function testFindAllDumpMetaInformation() {
+
+               $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+               $dumpMetaInformation = 
$dumpMetaInformationLookup->findAllDumpMetaInformation();
+               $expectedDumpMetaInformation = array(
+                       'foo' => $this->dumpMetaInformation['foo'],
+                       'bar' => $this->dumpMetaInformation['bar']
+               );
+
+               $this->assertEquals( $expectedDumpMetaInformation, 
$dumpMetaInformation );
+       }
+
+       public function testInvalidDateFormat() {
+               $this->db->insert(
+                       DUMP_META_TABLE,
+                       array(
+                               'dump_id' => 'foobar',
+                               'source_qid' => 'Q1',
+                               'import_date' => '2015-01-01 00:00:00',
+                               'language' => 'en',
+                               'source_url' => 'http://www.foo.baz',
+                               'size' => 42,
+                               'license_qid' => 'Q6938433'
+                       ));
+
+               $this->setExpectedException( 'UnexpectedValueException' );
+
+               $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+               $dumpMetaInformationLookup->findDumpMetaInformationWithId( 
'foobar' );
+       }
+}
+ 
\ No newline at end of file
diff --git a/tests/phpunit/DumpMetaInformation/DumpMetaInformationStoreTest.php 
b/tests/phpunit/DumpMetaInformation/DumpMetaInformationStoreTest.php
new file mode 100755
index 0000000..5640799
--- /dev/null
+++ b/tests/phpunit/DumpMetaInformation/DumpMetaInformationStoreTest.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\Tests\DumpMetaInformation;
+
+use DateTime;
+use Wikibase\DataModel\Entity\ItemId;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
+
+/**
+ * @covers 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
+ *
+ * @uses 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup
+ *
+ * @group Database
+ * @group medium
+ *
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationStoreTest extends \MediaWikiTestCase {
+
+    /**
+     * @var array
+     */
+    private $dumpMetaInformation = array();
+
+    public function __construct( $name = null, $data = array(), $dataName = 
null ) {
+        parent::__construct( $name, $data, $dataName );
+
+        // Create example dump meta information
+        $this->dumpMetaInformation = new DumpMetaInformation(
+            'foo',
+            new ItemId( 'Q1' ),
+            new DateTime( '2015-01-01 00:00:00' ),
+            'en',
+            'http://www.foo.bar',
+            42,
+            new ItemId( 'Q6938433' )
+        );
+    }
+
+    public function setUp() {
+        parent::setUp();
+
+        // Specify database table used by this test
+        $this->tablesUsed[ ] = DUMP_META_TABLE;
+    }
+
+    /**
+     * Adds temporary test data to database
+     *
+     * @throws \DBUnexpectedError
+     */
+    public function addDBData() {
+        // Truncate tables
+        $this->db->delete(
+            DUMP_META_TABLE,
+            '*'
+        );
+
+        // Insert example dump meta information
+        $this->db->insert(
+            DUMP_META_TABLE,
+            array(
+                'dump_id' => $this->dumpMetaInformation->getDumpId(),
+                'source_qid' => 
$this->dumpMetaInformation->getSourceItemId()->getSerialization(),
+                'import_date' => 
$this->dumpMetaInformation->getImportDate()->format( 'YmdHis' ),
+                'language' => $this->dumpMetaInformation->getLanguage(),
+                'source_url' => $this->dumpMetaInformation->getSourceUrl(),
+                'size' => $this->dumpMetaInformation->getSize(),
+                'license_qid' => $this->dumpMetaInformation->getLicenseItemId()
+            )
+        );
+    }
+
+    /**
+     * @dataProvider saveDumpMetaInformationDataProvider
+     */
+    public function testSaveDumpMetaInformation( $dumpId, $sourceItemId, 
$importDate, $language, $sourceUrl, $size, $license ) {
+
+        $dumpMetaInformation = new DumpMetaInformation( $dumpId, 
$sourceItemId, $importDate, $language, $sourceUrl, $size, $license );
+
+        $dumpMetaInformationStore = new DumpMetaInformationStore();
+        $dumpMetaInformationStore->saveDumpMetaInformation( 
$dumpMetaInformation );
+
+        $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+        $metaInformationFromDatabase = 
$dumpMetaInformationLookup->findDumpMetaInformationWithId( $dumpId );
+
+        $this->assertEquals( $dumpMetaInformation, 
$metaInformationFromDatabase );
+    }
+
+    /**
+     * Test cases for testSaveDumpMetaInformation
+     */
+    public function saveDumpMetaInformationDataProvider() {
+
+        return array(
+            // Update existing one
+            array(
+                $this->dumpMetaInformation->getDumpId(),
+                $this->dumpMetaInformation->getSourceItemId(),
+                $this->dumpMetaInformation->getImportDate(),
+                'de',
+                $this->dumpMetaInformation->getSourceUrl(),
+                $this->dumpMetaInformation->getSize(),
+                $this->dumpMetaInformation->getLicenseItemId()
+            ),
+            // Insert new one
+            array(
+                'fubar',
+                new ItemId( 'Q3' ),
+                new DateTime( '2015-01-01 00:00:00' ),
+                'en',
+                'http://www.fubar.com',
+                42,
+                new ItemId( 'Q6938433' )
+            )
+        );
+    }
+}
+ 
\ No newline at end of file
diff --git a/tests/phpunit/DumpMetaInformation/DumpMetaInformationTest.php 
b/tests/phpunit/DumpMetaInformation/DumpMetaInformationTest.php
new file mode 100755
index 0000000..fc361cf
--- /dev/null
+++ b/tests/phpunit/DumpMetaInformation/DumpMetaInformationTest.php
@@ -0,0 +1,158 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\Tests\DumpMetaInformation;
+
+use DateTime;
+use Wikibase\DataModel\Entity\Item;
+use Wikibase\DataModel\Entity\ItemId;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+
+/**
+ * @covers 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ *
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationTest extends \MediaWikiTestCase {
+
+    /**
+     * @var DumpMetaInformation
+     */
+    private $dumpMetaInformation;
+
+    public function __construct( $name = null, $data = array(), $dataName = 
null ) {
+        parent::__construct( $name, $data, $dataName );
+
+        // Create example dump meta information
+        $this->dumpMetaInformation = new DumpMetaInformation(
+            'foo',
+            new ItemId( 'Q1' ),
+            new DateTime( '2015-01-01 00:00:00' ),
+            'en',
+            'http://www.foo.bar',
+            42,
+            new ItemId( 'Q6938433' )
+        );
+    }
+
+    /**
+     * @dataProvider constructDataProvider
+     */
+    public function testConstruct( $dumpId, $sourceItemId, $importDate, 
$language, $sourceUrl, $size, $licenseItemId, $expectedException = null ) {
+        if( $expectedException ) {
+            $this->setExpectedException( $expectedException );
+        }
+
+        $metaInformation = new DumpMetaInformation( $dumpId, $sourceItemId, 
$importDate, $language, $sourceUrl, $size, $licenseItemId );
+
+        $this->assertEquals( $sourceItemId, 
$metaInformation->getSourceItemId() );
+        $this->assertEquals( $importDate, $metaInformation->getImportDate() );
+        $this->assertEquals( $language, $metaInformation->getLanguage() );
+        $this->assertEquals( $sourceUrl, $metaInformation->getSourceUrl() );
+        $this->assertEquals( $size, $metaInformation->getSize() );
+        $this->assertEquals( $licenseItemId, 
$metaInformation->getLicenseItemId() );
+    }
+
+    /**
+     * Test cases for testConstruct
+     *
+     * @return array
+     */
+    public function constructDataProvider() {
+        $dumpId = 'foobar';
+        $sourceItemId = new ItemId( 'Q123' );
+        $importDate = new DateTime( '30-11-2015' );
+        $language = 'de';
+        $sourceUrl = 'http://randomurl.tld';
+        $size = 42;
+        $licenseItemId = new ItemId( 'Q6938433' );
+
+        return array(
+            array(
+                $dumpId,
+                $sourceItemId,
+                $importDate,
+                $language,
+                $sourceUrl,
+                $size,
+                $licenseItemId
+            ),
+            array(
+                42,
+                $sourceItemId,
+                $importDate,
+                $language,
+                $sourceUrl,
+                $size,
+                $licenseItemId,
+                'InvalidArgumentException'
+            ),
+            array(
+                $dumpId,
+                $sourceItemId,
+                $importDate,
+                42,
+                $sourceUrl,
+                $size,
+                $licenseItemId,
+                'InvalidArgumentException'
+            ),
+            array(
+                $dumpId,
+                $sourceItemId,
+                $importDate,
+                $language,
+                42,
+                $size,
+                $licenseItemId,
+                'InvalidArgumentException'
+            ),
+            array(
+                $dumpId,
+                $sourceItemId,
+                $importDate,
+                $language,
+                $sourceUrl,
+                '42',
+                $licenseItemId,
+                'InvalidArgumentException'
+            )
+        );
+    }
+
+    public function testGetDumpId() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getDumpId(), 'foo' );
+    }
+
+    public function testGetSourceItemId() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getSourceItemId(), 
new ItemId( 'Q1' ) );
+    }
+
+    public function testGetImportDate() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getImportDate(), new 
DateTime( '2015-01-01 00:00:00' ) );
+    }
+
+    public function testGetLanguage() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getLanguage(), 'en' );
+    }
+
+    public function testGetSourceUrl() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getSourceUrl(), 
'http://www.foo.bar' );
+    }
+
+    public function testGetSize() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getSize(), 42 );
+    }
+
+    public function testGetLicenseItemId() {
+
+        $this->assertEquals( $this->dumpMetaInformation->getLicenseItemId(), 
new ItemId( 'Q6938433' ) );
+    }
+}
+ 
\ No newline at end of file
diff --git a/tests/phpunit/DumpMetaInformationTest.php 
b/tests/phpunit/DumpMetaInformationTest.php
deleted file mode 100644
index 45f9d1b..0000000
--- a/tests/phpunit/DumpMetaInformationTest.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-
-namespace WikidataQuality\ExternalValidation\Tests\DumpMetaInformation;
-
-use DateTime;
-use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
-
-/**
- * @covers WikidataQuality\ExternalValidation\DumpMetaInformation
- *
- * @group Database
- * @group medium
- *
- * @author BP2014N1
- * @license GNU GPL v2+
- */
-class DumpMetaInformationTest extends \MediaWikiTestCase {
-    /**
-     * @var array
-     */
-    private $dumpMetaInformation = array();
-
-
-    public function __construct( $name = null, $data = array(), $dataName = 
null ) {
-        parent::__construct( $name, $data, $dataName );
-
-        // Create example dump meta information
-        $this->dumpMetaInformation[ 'foo' ] = new DumpMetaInformation(
-            'foo',
-            new ItemId( 'Q1' ),
-            new DateTime( '2015-01-01 00:00:00' ),
-            'en',
-            'http://www.foo.bar',
-            42,
-            new ItemId( 'Q6938433' )
-        );
-        $this->dumpMetaInformation[ 'bar' ] = new DumpMetaInformation(
-            'bar',
-            new ItemId( 'Q2' ),
-            new DateTime( '2020-01-01 12:12:12' ),
-            'de',
-            'http://www.fu.bar',
-            4242,
-            new ItemId( 'Q6938433' )
-        );
-    }
-
-
-    public function setUp() {
-        parent::setUp();
-
-        // Specify database table used by this test
-        $this->tablesUsed[ ] = DUMP_META_TABLE;
-    }
-
-    /**
-     * Adds temporary test data to database
-     * @throws \DBUnexpectedError
-     */
-    public function addDBData() {
-        // Truncate tables
-        $this->db->delete(
-            DUMP_META_TABLE,
-            '*'
-        );
-
-        // Insert example dump meta information
-        foreach ( $this->dumpMetaInformation as $dumpMetaInformation ) {
-            $this->db->insert(
-                DUMP_META_TABLE,
-                array(
-                    'dump_id' => $dumpMetaInformation->getDumpId(),
-                    'source_qid' => 
$dumpMetaInformation->getSourceItemId()->getSerialization(),
-                    'import_date' => 
$dumpMetaInformation->getImportDate()->format( 'YmdHis' ),
-                    'language' => $dumpMetaInformation->getLanguage(),
-                    'source_url' => $dumpMetaInformation->getSourceUrl(),
-                    'size' => $dumpMetaInformation->getSize(),
-                    'license_qid' => $dumpMetaInformation->getLicenseItemId()
-                )
-            );
-        }
-    }
-
-
-    /**
-     * @dataProvider constructDataProvider
-     */
-    public function testConstruct( $dumpId, $sourceItemId, $importDate, 
$language, $sourceUrl, $size, $licenseItemId, $expectedException = null ) {
-        if( $expectedException ) {
-            $this->setExpectedException( $expectedException );
-        }
-
-        $metaInformation = new DumpMetaInformation( $dumpId, $sourceItemId, 
$importDate, $language, $sourceUrl, $size, $licenseItemId );
-
-        $this->assertEquals( $sourceItemId, 
$metaInformation->getSourceItemId() );
-        $this->assertEquals( $importDate, $metaInformation->getImportDate() );
-        $this->assertEquals( $language, $metaInformation->getLanguage() );
-        $this->assertEquals( $sourceUrl, $metaInformation->getSourceUrl() );
-        $this->assertEquals( $size, $metaInformation->getSize() );
-        $this->assertEquals( $licenseItemId, 
$metaInformation->getLicenseItemId() );
-    }
-
-    /**
-     * Test cases for testConstruct
-     * @return array
-     */
-    public function constructDataProvider() {
-        $dumpId = 'foobar';
-        $sourceItemId = new ItemId( 'Q123' );
-        $importDate = new DateTime( '30-11-2015' );
-        $language = 'de';
-        $sourceUrl = 'http://randomurl.tld';
-        $size = 42;
-        $licenseItemId = new ItemId( 'Q6938433' );
-
-        return array(
-            array(
-                $dumpId,
-                $sourceItemId,
-                $importDate,
-                $language,
-                $sourceUrl,
-                $size,
-                $licenseItemId
-            ),
-            array(
-                42,
-                $sourceItemId,
-                $importDate,
-                $language,
-                $sourceUrl,
-                $size,
-                $licenseItemId,
-                'InvalidArgumentException'
-            ),
-            array(
-                $dumpId,
-                $sourceItemId,
-                $importDate,
-                42,
-                $sourceUrl,
-                $size,
-                $licenseItemId,
-                'InvalidArgumentException'
-            ),
-            array(
-                $dumpId,
-                $sourceItemId,
-                $importDate,
-                $language,
-                42,
-                $size,
-                $licenseItemId,
-                'InvalidArgumentException'
-            ),
-            array(
-                $dumpId,
-                $sourceItemId,
-                $importDate,
-                $language,
-                $sourceUrl,
-                '42',
-                $licenseItemId,
-                'InvalidArgumentException'
-            )
-        );
-    }
-
-
-    /**
-     * @dataProvider getDumpMetaInformationDataProvider
-     */
-    public function testGetDumpMetaInformation( $dumpIds, 
$expectedDumpMetaInformation, $expectedException ) {
-        $this->setExpectedException( $expectedException );
-
-        $this->assertEquals( $expectedDumpMetaInformation, 
DumpMetaInformation::get( $this->db, $dumpIds ) );
-    }
-
-    /**
-     * @return array
-     */
-    public function getDumpMetaInformationDataProvider() {
-        return array(
-            // Single id
-            array(
-                'foo',
-                $this->dumpMetaInformation[ 'foo' ],
-                null
-            ),
-            // Multiple ids
-            array(
-                array(
-                    'foo',
-                    'bar'
-                ),
-                array(
-                    'foo' => $this->dumpMetaInformation[ 'foo' ],
-                    'bar' => $this->dumpMetaInformation[ 'bar' ]
-                ),
-                null
-            ),
-            // No specific ids
-            array(
-                null,
-                array(
-                    'foo' => $this->dumpMetaInformation[ 'foo' ],
-                    'bar' => $this->dumpMetaInformation[ 'bar' ]
-                ),
-                null
-            ),
-            // Non-existent id
-            array(
-                'foobar',
-                null,
-                null
-            ),
-            // Invalid ids
-            array(
-                42,
-                null,
-                'InvalidArgumentException'
-            ),
-            array(
-                array( 42 ),
-                null,
-                'InvalidArgumentException'
-            )
-        );
-    }
-
-
-    /**
-     * @dataProvider saveDumpMetaInformationDataProvider
-     */
-    public function testSaveDumpMetaInformation( $dumpId, $sourceItemId, 
$importDate, $language, $sourceUrl, $size, $license ) {
-
-        $dumpMetaInformation = new DumpMetaInformation( $dumpId, 
$sourceItemId, $importDate, $language, $sourceUrl, $size, $license );
-        $dumpMetaInformation->save( $this->db );
-
-        $metaInformationFromDatabase = DumpMetaInformation::get( $this->db, 
$dumpId );
-
-        $this->assertEquals( $dumpMetaInformation, 
$metaInformationFromDatabase );
-    }
-
-
-    /**
-     * Test cases for testSaveDumpMetaInformation
-     */
-    public function saveDumpMetaInformationDataProvider() {
-
-        return array(
-            // Update existing one
-            array(
-                'foo',
-                new ItemId( 'Q1' ),
-                new DateTime( '2015-01-01 00:00:00' ),
-                'de',
-                'http://www.foo.bar',
-                42,
-                new ItemId( 'Q6938433' )
-            ),
-            // Insert new one
-            array(
-                'fubar',
-                new ItemId( 'Q3' ),
-                new DateTime( '2015-01-01 00:00:00' ),
-                'en',
-                'http://www.fubar.com',
-                42,
-                new ItemId( 'Q6938433' )
-            )
-        );
-    }
-}
- 
\ No newline at end of file
diff --git a/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php 
b/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
old mode 100644
new mode 100755
index 8b04eb7..692ff41
--- a/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
+++ b/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
@@ -32,7 +32,7 @@
                 new CrossCheckResult(
                     new PropertyId( 'P42' ),
                     'Q42$26ca5e18-90fb-4c5c-bb22-ed8a70f1948f',
-                    $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\DumpMetaInformation' ),
+                    $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' ),
                     $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult' ),
                     $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult' )
                 )
@@ -64,7 +64,7 @@
                 new CrossCheckResult(
                     new PropertyId( 'P42' ),
                     'Q42$26ca5e18-90fb-4c5c-bb22-ed8a70f1948f',
-                    $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\DumpMetaInformation' ),
+                    $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' ),
                     $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult' ),
                     $this->getMockWithoutConstructor( 
'WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult' )
                 )
diff --git a/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php 
b/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
old mode 100644
new mode 100755
index 0486873..aa69170
--- a/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
+++ b/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
@@ -4,13 +4,13 @@
 
 
 use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 use 
WikidataQuality\ExternalValidation\Serializer\DumpMetaInformationSerializer;
 
 /**
  * @covers 
WikidataQuality\ExternalValidation\Serializer\DumpMetaInformationSerializer
  *
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
  *
  * @author BP2014N1
  * @license GNU GPL v2+
diff --git a/tests/phpunit/Serializer/SerializerFactoryTest.php 
b/tests/phpunit/Serializer/SerializerFactoryTest.php
old mode 100644
new mode 100755
index fbff98f..5a8c6ce
--- a/tests/phpunit/Serializer/SerializerFactoryTest.php
+++ b/tests/phpunit/Serializer/SerializerFactoryTest.php
@@ -18,7 +18,7 @@
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList;
 use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
 use WikidataQuality\ExternalValidation\Serializer\SerializerFactory;
 
 /**
@@ -28,7 +28,7 @@
  * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
  * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
  * @uses 
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
  * @uses WikidataQuality\ExternalValidation\Serializer\IndexedTagsSerializer
  * @uses WikidataQuality\ExternalValidation\Serializer\CompareResultSerializer
  * @uses 
WikidataQuality\ExternalValidation\Serializer\ReferenceResultSerializer
diff --git a/tests/phpunit/Specials/SpecialCrossCheckTest.php 
b/tests/phpunit/Specials/SpecialCrossCheckTest.php
index 9573fc7..9b12a19 100755
--- a/tests/phpunit/Specials/SpecialCrossCheckTest.php
+++ b/tests/phpunit/Specials/SpecialCrossCheckTest.php
@@ -14,7 +14,8 @@
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Repo\WikibaseRepo;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
 use Wikibase\DataModel\Entity\EntityId;
 
 /**
@@ -23,7 +24,8 @@
  * @group Database
  * @group medium
  *
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
  * @uses   WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
  * @uses   
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
@@ -156,7 +158,8 @@
             42,
             new ItemId( 'Q6938433' )
         );
-        $dumpMetaInformation->save( $this->db );
+        $dumpMetaInformationStore = new DumpMetaInformationStore();
+        $dumpMetaInformationStore->saveDumpMetaInformation( 
$dumpMetaInformation );
 
         // Insert identifier property
         $this->db->insert(
diff --git a/tests/phpunit/Specials/SpecialExternalDbsTest.php 
b/tests/phpunit/Specials/SpecialExternalDbsTest.php
old mode 100644
new mode 100755
index cb36811..6ac9c86
--- a/tests/phpunit/Specials/SpecialExternalDbsTest.php
+++ b/tests/phpunit/Specials/SpecialExternalDbsTest.php
@@ -4,7 +4,8 @@
 
 use Wikibase\Test\SpecialPageTestBase;
 use WikidataQuality\ExternalValidation\Specials\SpecialExternalDbs;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
 use Wikibase\DataModel\Entity\ItemId;
 
 /**
@@ -13,7 +14,8 @@
  * @group Database
  * @group medium
  *
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
  * @uses   WikidataQuality\Html\HtmlTable
  * @uses   WikidataQuality\Html\HtmlTableHeader
  * @uses   WikidataQuality\Html\HtmlTableCell
@@ -62,8 +64,8 @@
             42,
             new ItemId( 'Q6938433' )
         );
-
-        $dumpMetaInformation->save( $this->db );
+        $dumpMetaInformationStore = new DumpMetaInformationStore();
+        $dumpMetaInformationStore->saveDumpMetaInformation( 
$dumpMetaInformation );
     }
 
     /**
diff --git a/tests/phpunit/UpdateTable/UpdateTableTest.php 
b/tests/phpunit/UpdateTable/UpdateTableTest.php
old mode 100644
new mode 100755
index e06bf84..a8a6daa
--- a/tests/phpunit/UpdateTable/UpdateTableTest.php
+++ b/tests/phpunit/UpdateTable/UpdateTableTest.php
@@ -5,7 +5,8 @@
 
 use DateTime;
 use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use 
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
 use WikidataQuality\ExternalValidation\Maintenance\UpdateTable;
 
 
@@ -14,7 +15,8 @@
  * @covers WikidataQuality\ExternalValidation\UpdateTable\ImportContext
  * @covers WikidataQuality\ExternalValidation\Maintenance\UpdateTable
  *
- * @uses   WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses   
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
  *
  * @group Database
  * @group medium
@@ -57,7 +59,8 @@
         );
 
         // Insert external test data
-        $dumpMetaInformation->save( $this->db );
+        $dumpMetaInformationStore = new DumpMetaInformationStore();
+        $dumpMetaInformationStore->saveDumpMetaInformation( 
$dumpMetaInformation );
 
         // Insert identifier properties
         $this->db->insert(

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8de0e2ed3a8460bccff374480caa3a5ae936594d
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/WikidataQualityExternalValidation
Gerrit-Branch: v1
Gerrit-Owner: Dominic.sauer <[email protected]>
Gerrit-Reviewer: Dominic.sauer <[email protected]>
Gerrit-Reviewer: Tamslo <[email protected]>

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

Reply via email to