public void SetUp() { _storageProviderID = "DefaultStorageProvider"; _storageProviderDefinition = new UnitTestStorageProviderStubDefinition(_storageProviderID); _infrastructureStoragePropertyDefinitionProviderMock = MockRepository.GenerateStrictMock <IInfrastructureStoragePropertyDefinitionProvider>(); _storagePropertyDefinitionResolverMock = MockRepository.GenerateStrictMock <IStoragePropertyDefinitionResolver>(); _storageNameProviderMock = MockRepository.GenerateStrictMock <IStorageNameProvider>(); _foreignKeyConstraintDefinitionFactoryMock = MockRepository.GenerateStrictMock <IForeignKeyConstraintDefinitionFactory>(); _factory = new RdbmsStorageEntityDefinitionFactory( _infrastructureStoragePropertyDefinitionProviderMock, _foreignKeyConstraintDefinitionFactoryMock, _storagePropertyDefinitionResolverMock, _storageNameProviderMock, _storageProviderDefinition); _testModel = new RdbmsPersistenceModelLoaderTestHelper(); _fakeObjectIDStorageProperty = ObjectIDStoragePropertyDefinitionObjectMother.ObjectIDProperty; _fakeStorageProperty1 = SimpleStoragePropertyDefinitionObjectMother.CreateStorageProperty("Test1"); _fakeTimestampStorageProperty = SimpleStoragePropertyDefinitionObjectMother.TimestampProperty; _fakeForeignKeyConstraint = new ForeignKeyConstraintDefinition( "FakeForeignKeyConstraint", new EntityNameDefinition(null, "Test"), new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_fakeObjectIDStorageProperty) }, new[] { _fakeStorageProperty1.ColumnDefinition }); }
public void CreateTableDefinition() { _storagePropertyDefinitionResolverMock .Expect(mock => mock.GetStoragePropertiesForHierarchy(_testModel.TableClassDefinition1)) .Return(new[] { _fakeStorageProperty1 }); _storagePropertyDefinitionResolverMock.Replay(); _foreignKeyConstraintDefinitionFactoryMock .Expect(mock => mock.CreateForeignKeyConstraints(_testModel.TableClassDefinition1)) .Return(new[] { _fakeForeignKeyConstraint }); _foreignKeyConstraintDefinitionFactoryMock.Replay(); _storageNameProviderMock .Expect(mock => mock.GetTableName(_testModel.TableClassDefinition1)) .Return(new EntityNameDefinition(null, "FakeTableName")); _storageNameProviderMock .Expect(mock => mock.GetViewName(_testModel.TableClassDefinition1)) .Return(new EntityNameDefinition(null, "FakeViewName")); _storageNameProviderMock .Expect(mock => mock.GetPrimaryKeyConstraintName(_testModel.TableClassDefinition1)) .Return("FakePrimaryKeyName"); _storageNameProviderMock.Replay(); MockStandardProperties(); _infrastructureStoragePropertyDefinitionProviderMock.Replay(); var result = _factory.CreateTableDefinition(_testModel.TableClassDefinition1); _storagePropertyDefinitionResolverMock.VerifyAllExpectations(); _foreignKeyConstraintDefinitionFactoryMock.VerifyAllExpectations(); _infrastructureStoragePropertyDefinitionProviderMock.VerifyAllExpectations(); _storageNameProviderMock.VerifyAllExpectations(); CheckTableDefinition( result, _storageProviderID, "FakeTableName", "FakeViewName", new IRdbmsStoragePropertyDefinition[] { _fakeObjectIDStorageProperty, _fakeTimestampStorageProperty, _fakeStorageProperty1 }, new ITableConstraintDefinition[] { new PrimaryKeyConstraintDefinition( "FakePrimaryKeyName", true, new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_fakeObjectIDStorageProperty) }), _fakeForeignKeyConstraint }, new IIndexDefinition[0], new EntityNameDefinition[0]); }
private QueryParameterWithType[] GetExpectedParametersForQueryStub() { return(new[] { new QueryParameterWithType( new QueryParameter(_queryParameter1.Name, DomainObjectIDs.Order1.Value, _queryParameter1.ParameterType), StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_property1).StorageTypeInfo), new QueryParameterWithType(_queryParameter2, _property2.ColumnDefinition.StorageTypeInfo), new QueryParameterWithType( new QueryParameter(_queryParameter3.Name, DomainObjectIDs.Official1.ToString(), _queryParameter3.ParameterType), StoragePropertyDefinitionTestHelper.GetSingleColumn(_property3.SerializedIDProperty).StorageTypeInfo) }); }
private void CheckSimplePropertyDefinition( IRdbmsStoragePropertyDefinition result, Type expectedPropertyType, string expectedColumnName, StorageTypeInformation expectedStorageTypeInformation) { Assert.That(result, Is.TypeOf(typeof(SimpleStoragePropertyDefinition))); Assert.That(result.PropertyType, Is.SameAs(expectedPropertyType)); var column = StoragePropertyDefinitionTestHelper.GetSingleColumn(result); Assert.That(column.Name, Is.EqualTo(expectedColumnName)); Assert.That(column.IsPartOfPrimaryKey, Is.False); Assert.That(column.StorageTypeInfo, Is.SameAs(expectedStorageTypeInformation)); }
private bool CheckComparedColumns( IEnumerable <ColumnValue> columnValues, DataContainer dataContainer, TableDefinition tableDefinition) { var comparedColumnValues = columnValues.ToArray(); Assert.That(comparedColumnValues[0].Column, Is.SameAs(StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(tableDefinition.ObjectIDProperty))); Assert.That(comparedColumnValues[0].Value, Is.SameAs(dataContainer.ID.Value)); if (dataContainer.ClassDefinition.GetPropertyDefinitions().All(propertyDefinition => !propertyDefinition.IsObjectID)) { Assert.That(comparedColumnValues[1].Column, Is.SameAs(StoragePropertyDefinitionTestHelper.GetSingleColumn(tableDefinition.TimestampProperty))); Assert.That(comparedColumnValues[1].Value, Is.SameAs(dataContainer.Timestamp)); } return(true); }
public void CreateForScalarQuery() { _dataStoragePropertyDefinitionFactoryStrictMock .Expect(mock => mock.CreateStoragePropertyDefinition(DomainObjectIDs.Order1)) .Return(_property1); _dataStoragePropertyDefinitionFactoryStrictMock .Expect(mock => mock.CreateStoragePropertyDefinition(DomainObjectIDs.Order3.Value)) .Return(_property2); _dataStoragePropertyDefinitionFactoryStrictMock .Expect(mock => mock.CreateStoragePropertyDefinition(DomainObjectIDs.Official1)) .Return(_property3); _dataStoragePropertyDefinitionFactoryStrictMock.Replay(); var commandBuilderStub = MockRepository.GenerateStub <IDbCommandBuilder> (); var expectedParametersWithType = new[] { new QueryParameterWithType( new QueryParameter(_queryParameter1.Name, DomainObjectIDs.Order1.Value, _queryParameter1.ParameterType), StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_property1).StorageTypeInfo), new QueryParameterWithType(_queryParameter2, _property2.ColumnDefinition.StorageTypeInfo), new QueryParameterWithType( new QueryParameter(_queryParameter3.Name, DomainObjectIDs.Official1.ToString(), _queryParameter3.ParameterType), StoragePropertyDefinitionTestHelper.GetSingleColumn(_property3.SerializedIDProperty).StorageTypeInfo) }; _dbCommandBuilderFactoryStrictMock .Expect( stub => stub.CreateForQuery(Arg.Is("statement"), Arg <IEnumerable <QueryParameterWithType> > .List.Equal(expectedParametersWithType))) .Return(commandBuilderStub); _dbCommandBuilderFactoryStrictMock.Replay(); var result = _factory.CreateForScalarQuery(_queryStub); _dataStoragePropertyDefinitionFactoryStrictMock.VerifyAllExpectations(); _dbCommandBuilderFactoryStrictMock.VerifyAllExpectations(); Assert.That(result, Is.TypeOf(typeof(ScalarValueLoadCommand))); var command = ((ScalarValueLoadCommand)result); Assert.That(command.DbCommandBuilder, Is.SameAs(commandBuilderStub)); }
public void GetObjectIDStoragePropertyDefinition() { var result = _infrastructureStoragePropertyDefinitionProvider.GetObjectIDStoragePropertyDefinition(); Assert.That(result.ValueProperty, Is.TypeOf <SimpleStoragePropertyDefinition> ()); Assert.That(result.ValueProperty.PropertyType, Is.SameAs(typeof(object))); var idColumn = StoragePropertyDefinitionTestHelper.GetSingleColumn(result.ValueProperty); Assert.That(idColumn.Name, Is.EqualTo("ID")); Assert.That(idColumn.IsPartOfPrimaryKey, Is.True); Assert.That(idColumn.StorageTypeInfo, Is.SameAs(_idStorageTypeInformation)); Assert.That(result.ClassIDProperty, Is.TypeOf <SimpleStoragePropertyDefinition> ()); Assert.That(result.ClassIDProperty.PropertyType, Is.SameAs(typeof(string))); var classIDColumn = StoragePropertyDefinitionTestHelper.GetSingleColumn(result.ClassIDProperty); Assert.That(classIDColumn.Name, Is.EqualTo("ClassID")); Assert.That(classIDColumn.StorageTypeInfo, Is.SameAs(_classIDStorageTypeInformation)); Assert.That(classIDColumn.IsPartOfPrimaryKey, Is.False); }
public void CreateForSingleIDLookup() { var expectedSelectedColumns = _tableDefinition1.GetAllColumns().ToArray(); var expectedComparedColumns = new[] { new ColumnValue(StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition1.ObjectIDProperty), _objectID1.Value) }; _dbCommandBuilderFactoryStrictMock .Stub( stub => stub.CreateForSelect( Arg.Is(_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns), Arg <IEnumerable <ColumnValue> > .List.Equal(expectedComparedColumns), Arg <IEnumerable <OrderedColumn> > .List.Equal(new OrderedColumn[0]))) .Return(_dbCommandBuilder1Stub); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateDataContainerReader( Arg.Is((IRdbmsStorageEntityDefinition)_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns))) .Return(_dataContainerReader1Stub); _objectReaderFactoryStrictMock.Replay(); var result = _factory.CreateForSingleIDLookup(_objectID1); _objectReaderFactoryStrictMock.VerifyAllExpectations(); Assert.That(result, Is.TypeOf <SingleDataContainerAssociateWithIDCommand <IRdbmsProviderCommandExecutionContext> >()); var associateCommand = (SingleDataContainerAssociateWithIDCommand <IRdbmsProviderCommandExecutionContext>)result; Assert.That(associateCommand.ExpectedObjectID, Is.EqualTo(_objectID1)); Assert.That(associateCommand.InnerCommand, Is.TypeOf(typeof(SingleObjectLoadCommand <DataContainer>))); var loadCommand = ((SingleObjectLoadCommand <DataContainer>)associateCommand.InnerCommand); Assert.That(loadCommand.DbCommandBuilder, Is.SameAs(_dbCommandBuilder1Stub)); Assert.That(loadCommand.ObjectReader, Is.SameAs(_dataContainerReader1Stub)); }
public void CreateForSortedMultiIDLookup_SingleIDLookup() { var expectedSelectedColumns = _tableDefinition1.GetAllColumns(); var expectedComparedColumns = new[] { new ColumnValue(StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition1.ObjectIDProperty), _objectID1.Value) }; _dbCommandBuilderFactoryStrictMock .Stub( stub => stub.CreateForSelect( Arg.Is(_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns), Arg <IEnumerable <ColumnValue> > .List.Equal(expectedComparedColumns), Arg <IEnumerable <OrderedColumn> > .List.Equal(new OrderedColumn[0]))) .Return(_dbCommandBuilder1Stub); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateDataContainerReader( Arg.Is((IRdbmsStorageEntityDefinition)_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns))) .Return(_dataContainerReader1Stub); _objectReaderFactoryStrictMock.Replay(); var result = _factory.CreateForSortedMultiIDLookup(new[] { _objectID1 }); _objectReaderFactoryStrictMock.VerifyAllExpectations(); Assert.That(result, Is.TypeOf(typeof(MultiDataContainerAssociateWithIDsCommand))); Assert.That(((MultiDataContainerAssociateWithIDsCommand)result).Command, Is.TypeOf(typeof(MultiObjectLoadCommand <DataContainer>))); var dbCommandBuilderTuples = ((MultiObjectLoadCommand <DataContainer>)((MultiDataContainerAssociateWithIDsCommand)result).Command).DbCommandBuildersAndReaders; Assert.That(dbCommandBuilderTuples.Length, Is.EqualTo(1)); Assert.That(dbCommandBuilderTuples[0].Item1, Is.SameAs(_dbCommandBuilder1Stub)); Assert.That(dbCommandBuilderTuples[0].Item2, Is.SameAs(_dataContainerReader1Stub)); }
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)); }
public void CreateForSortedMultiIDLookup_TableDefinition_MultipleIDLookup_AndMultipleTables() { var expectedSelectedColumns1 = _tableDefinition1.GetAllColumns(); var expectedComparedColumns1 = new ColumnValueTable( new[] { StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition1.ObjectIDProperty) }, new[] { new ColumnValueTable.Row(new[] { _objectID1.Value }), new ColumnValueTable.Row(new[] { _objectID2.Value }), }); _dbCommandBuilderFactoryStrictMock .Expect( stub => stub.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 = _tableDefinition2.GetAllColumns(); var expectedComparedColumns2 = new[] { new ColumnValue(StoragePropertyDefinitionTestHelper.GetIDColumnDefinition(_tableDefinition2.ObjectIDProperty), _objectID3.Value) }; _dbCommandBuilderFactoryStrictMock .Expect( stub => stub.CreateForSelect( Arg.Is(_tableDefinition2), Arg <IEnumerable <ColumnDefinition> > .List.Equal(_tableDefinition2.GetAllColumns()), Arg <IEnumerable <ColumnValue> > .List.Equal(expectedComparedColumns2), Arg <IEnumerable <OrderedColumn> > .List.Equal(new OrderedColumn[0]))) .Return(_dbCommandBuilder2Stub); _dbCommandBuilderFactoryStrictMock.Replay(); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateDataContainerReader( Arg.Is((IRdbmsStorageEntityDefinition)_tableDefinition1), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns1))) .Return(_dataContainerReader1Stub); _objectReaderFactoryStrictMock .Expect( mock => mock.CreateDataContainerReader( Arg.Is((IRdbmsStorageEntityDefinition)_tableDefinition2), Arg <IEnumerable <ColumnDefinition> > .List.Equal(expectedSelectedColumns2))) .Return(_dataContainerReader2Stub); _objectReaderFactoryStrictMock.Replay(); var result = _factory.CreateForSortedMultiIDLookup(new[] { _objectID1, _objectID2, _objectID3 }); _objectReaderFactoryStrictMock.VerifyAllExpectations(); _dbCommandBuilderFactoryStrictMock.VerifyAllExpectations(); Assert.That(result, Is.TypeOf(typeof(MultiDataContainerAssociateWithIDsCommand))); Assert.That(((MultiDataContainerAssociateWithIDsCommand)result).Command, Is.TypeOf(typeof(MultiObjectLoadCommand <DataContainer>))); var dbCommandBuilderTuples = ((MultiObjectLoadCommand <DataContainer>)((MultiDataContainerAssociateWithIDsCommand)result).Command).DbCommandBuildersAndReaders; Assert.That(dbCommandBuilderTuples.Length, Is.EqualTo(2)); // Convert to Dictionary because the order of tuples is not defined var dbCommandBuilderDictionary = dbCommandBuilderTuples.ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2); Assert.That(dbCommandBuilderDictionary.ContainsKey(_dbCommandBuilder1Stub), Is.True); Assert.That(dbCommandBuilderDictionary[_dbCommandBuilder1Stub], Is.SameAs(_dataContainerReader1Stub)); Assert.That(dbCommandBuilderDictionary.ContainsKey(_dbCommandBuilder2Stub), Is.True); Assert.That(dbCommandBuilderDictionary[_dbCommandBuilder2Stub], Is.SameAs(_dataContainerReader2Stub)); }