public IStorageProviderCommand <IEnumerable <ObjectLookupResult <object> >, IRdbmsProviderCommandExecutionContext> CreateForMultiTimestampLookup( IEnumerable <ObjectID> objectIDs) { ArgumentUtility.CheckNotNull("objectIDs", objectIDs); return(_lookupCommandFactory.CreateForMultiTimestampLookup(objectIDs)); }
public void CreateForMultiTimestampLookup() { var expectedSelectedColumns1 = new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition1.ObjectIDProperty), StoragePropertyDefinitionTestHelper.GetClassIDColumnDefinition(_tableDefinition1.ObjectIDProperty), StoragePropertyDefinitionTestHelper.GetSingleColumn(_tableDefinition1.TimestampProperty) }; var expectedComparedColumns1 = new ColumnValueTable( new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition1.ObjectIDProperty) }, new[] { new ColumnValueTable.Row(new[] { _objectID1.Value }), new ColumnValueTable.Row(new[] { _objectID2.Value }), }); _dbCommandBuilderFactoryStrictMock .Expect( mock => mock.CreateForSelect( Arg.Is(_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns1), Arg <ColumnValueTable> .Matches(t => ColumnValueTableTestHelper.AreEqual(expectedComparedColumns1, t)), Arg <IEnumerable <OrderedColumn> > .List.Equal(new OrderedColumn[0]))) .Return(_dbCommandBuilder1Stub); var expectedSelectedColumns2 = new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition2.ObjectIDProperty), StoragePropertyDefinitionTestHelper.GetClassIDColumnDefinition(_tableDefinition2.ObjectIDProperty), StoragePropertyDefinitionTestHelper.GetSingleColumn(_tableDefinition2.TimestampProperty) }; var expectedComparedColumns2 = new[] { new ColumnValue(StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition2.ObjectIDProperty), _objectID3.Value) }; _dbCommandBuilderFactoryStrictMock .Expect( mock => mock.CreateForSelect( Arg.Is(_tableDefinition2), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns2), Arg <IEnumerable <ColumnValue> > .List.Equal(expectedComparedColumns2), Arg <IEnumerable <OrderedColumn> > .List.Equal(new OrderedColumn[0]))) .Return(_dbCommandBuilder2Stub); _dbCommandBuilderFactoryStrictMock.Replay(); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateTimestampReader( Arg.Is(_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns1))) .Return(_timestampReader1Stub); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateTimestampReader( Arg.Is(_tableDefinition2), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns2))) .Return(_timestampReader2Stub); _objectReaderFactoryStrictMock.Replay(); var result = _factory.CreateForMultiTimestampLookup(new[] { _objectID1, _objectID2, _objectID3 }); _objectReaderFactoryStrictMock.VerifyAllExpectations(); _dbCommandBuilderFactoryStrictMock.VerifyAllExpectations(); var innerCommand = CheckDelegateBasedCommandAndReturnInnerCommand <IEnumerable <Tuple <ObjectID, object> >, IEnumerable <ObjectLookupResult <object> > > (result); Assert.That(innerCommand, Is.TypeOf(typeof(MultiObjectLoadCommand <Tuple <ObjectID, object> >))); var commandBuildersAndReaders = ((MultiObjectLoadCommand <Tuple <ObjectID, object> >)innerCommand).DbCommandBuildersAndReaders; Assert.That(commandBuildersAndReaders.Length, Is.EqualTo(2)); Assert.That(commandBuildersAndReaders[0].Item1, Is.SameAs(_dbCommandBuilder1Stub)); Assert.That(commandBuildersAndReaders[0].Item2, Is.SameAs(_timestampReader1Stub)); Assert.That(commandBuildersAndReaders[1].Item1, Is.SameAs(_dbCommandBuilder2Stub)); Assert.That(commandBuildersAndReaders[1].Item2, Is.SameAs(_timestampReader2Stub)); }