public ScriptGenerator( Func <RdbmsProviderDefinition, IScriptBuilder> scriptBuilderFactory, IRdbmsStorageEntityDefinitionProvider entityDefinitionProvider, IScriptToStringConverter scriptToStringConverter) { ArgumentUtility.CheckNotNull("scriptBuilderFactory", scriptBuilderFactory); ArgumentUtility.CheckNotNull("entityDefinitionProvider", entityDefinitionProvider); ArgumentUtility.CheckNotNull("scriptToStringConverter", scriptToStringConverter); _scriptBuilderFactory = scriptBuilderFactory; _entityDefinitionProvider = entityDefinitionProvider; _scriptToStringConverter = scriptToStringConverter; }
public override void SetUp() { base.SetUp(); _classDefinitionForFirstStorageProvider1 = ClassDefinitionObjectMother.CreateClassDefinitionWithMixins(typeof(Order)); _classDefinitionForFirstStorageProvider2 = ClassDefinitionObjectMother.CreateClassDefinitionWithMixins(typeof(OrderItem)); _classDefinitionForSecondStorageProvider = ClassDefinitionObjectMother.CreateClassDefinitionWithMixins(typeof(Order)); _classDefinitionForThirdStorageProvider = ClassDefinitionObjectMother.CreateClassDefinitionWithMixins(typeof(Customer)); _firstProviderStorageEntityDefinitionStub = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); _firstProviderStorageEntityDefinitionStub.Stub(stub => stub.StorageProviderDefinition).Return(SchemaGenerationFirstStorageProviderDefinition); _secondProviderStorageEntityDefinitionStub = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); _secondProviderStorageEntityDefinitionStub.Stub(stub => stub.StorageProviderDefinition).Return( SchemaGenerationSecondStorageProviderDefinition); _thirdProviderStorageEntityDefinitionStub = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); _thirdProviderStorageEntityDefinitionStub.Stub(stub => stub.StorageProviderDefinition).Return( new NoRdbmsUnitTestStorageProviderStubDefinition("Test")); _classDefinitionForFirstStorageProvider1.SetStorageEntity(_firstProviderStorageEntityDefinitionStub); _classDefinitionForFirstStorageProvider2.SetStorageEntity(_firstProviderStorageEntityDefinitionStub); _classDefinitionForSecondStorageProvider.SetStorageEntity(_secondProviderStorageEntityDefinitionStub); _classDefinitionForThirdStorageProvider.SetStorageEntity(_thirdProviderStorageEntityDefinitionStub); _fakeScriptResult1 = new ScriptPair("CreateScript1", "DropScript1"); _fakeScriptResult2 = new ScriptPair("CreateScript2", "DropScript2"); _fakeScriptResult3 = new ScriptPair("CreateScript3", "DropScript3"); _entityDefininitionProviderMock = MockRepository.GenerateStrictMock <IRdbmsStorageEntityDefinitionProvider>(); _scriptBuilderForFirstStorageProviderMock = MockRepository.GenerateStrictMock <IScriptBuilder>(); _scriptBuilderForSecondStorageProviderMock = MockRepository.GenerateStrictMock <IScriptBuilder>(); _scriptBuilderForThirdStorageProviderMock = MockRepository.GenerateStrictMock <IScriptBuilder>(); _scriptToStringConverterStub = MockRepository.GenerateStub <IScriptToStringConverter>(); _scriptToStringConverterStub.Stub(stub => stub.Convert(_scriptBuilderForFirstStorageProviderMock)).Return(_fakeScriptResult1); _scriptToStringConverterStub.Stub(stub => stub.Convert(_scriptBuilderForSecondStorageProviderMock)).Return(_fakeScriptResult2); _scriptToStringConverterStub.Stub(stub => stub.Convert(_scriptBuilderForThirdStorageProviderMock)).Return(_fakeScriptResult3); _scriptGenerator = new ScriptGenerator( pd => { switch (pd.Name) { case "SchemaGenerationFirstStorageProvider": return(_scriptBuilderForFirstStorageProviderMock); case "SchemaGenerationSecondStorageProvider": return(_scriptBuilderForSecondStorageProviderMock); case "SchemaGenerationThirdStorageProvider": return(_scriptBuilderForThirdStorageProviderMock); } throw new InvalidOperationException("Invalid storage provider!"); }, _entityDefininitionProviderMock, _scriptToStringConverterStub); _fakeEntityDefinition1 = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); _fakeEntityDefinition2 = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); _fakeEntityDefinition3 = MockRepository.GenerateStub <IRdbmsStorageEntityDefinition>(); }