public void GetCalculatedFieldMetadata_Error_FieldHasNoCalculation() { long fieldId; Field field; EntityType type; Mock <IEntityRepository> mockRepository; Mock <IExpressionCompiler> mockCompiler; Mock <IExpression> mockExpression; CalculatedFieldMetadataProvider provider; // Mock calculated field field = new StringField().As <Field>(); type = new EntityType(); field.FieldIsOnType = type; fieldId = field.Id; // Mock repository (loading field data) mockRepository = new Mock <IEntityRepository>(MockBehavior.Strict); mockRepository .Setup(r => r.Get <Field>(It.Is <IEnumerable <long> >(fields => fields.Count() == 1 && fields.First() == fieldId), It.IsAny <string>())) .Returns(new Field[] { field }); // Mock compiler (compiling the calculation) mockExpression = new Mock <IExpression>(); mockCompiler = new Mock <IExpressionCompiler>(MockBehavior.Strict); // Get provider provider = new CalculatedFieldMetadataProvider(mockCompiler.Object, mockRepository.Object); // Run the test Assert.Throws <ArgumentException>(() => provider.GetCalculatedFieldMetadata(new[] { fieldId }, CalculatedFieldSettings.Default)); }
public void GetCalculatedFieldMetadata_ParseException() { long fieldId; Field field; string calculation; EntityType type; Mock <IEntityRepository> mockRepository; Mock <IExpressionCompiler> mockCompiler; Mock <IExpression> mockExpression; CalculatedFieldMetadataProvider provider; IReadOnlyCollection <CalculatedFieldMetadata> actualResult; CalculatedFieldMetadata metadata; ParseException exception = new ParseException("Test error"); // Mock calculated field calculation = "Name + 'Hello'"; field = new StringField().As <Field>(); type = new EntityType(); field.FieldIsOnType = type; field.FieldCalculation = calculation; fieldId = field.Id; // Mock repository (loading field data) mockRepository = new Mock <IEntityRepository>(MockBehavior.Strict); mockRepository .Setup(r => r.Get <Field>(It.Is <IEnumerable <long> >(fields => fields.Count() == 1 && fields.First() == fieldId), It.IsAny <string>())) .Returns(new Field[] { field }); // Mock compiler (compiling the calculation) mockExpression = new Mock <IExpression>(); mockCompiler = new Mock <IExpressionCompiler>(MockBehavior.Strict); mockCompiler .Setup(c => c.Compile(calculation, It.IsAny <BuilderSettings>())) .Returns(() => { throw exception; }); // Get provider provider = new CalculatedFieldMetadataProvider(mockCompiler.Object, mockRepository.Object); // Run the test actualResult = provider.GetCalculatedFieldMetadata(new[] { fieldId }, CalculatedFieldSettings.Default); // Verify Assert.That(actualResult, Is.Not.Null); Assert.That(actualResult.Count, Is.EqualTo(1)); metadata = actualResult.First(); Assert.That(metadata, Is.Not.Null); Assert.That(metadata.CalculatedFieldId, Is.EqualTo(fieldId)); Assert.That(metadata.Expression, Is.Null); Assert.That(metadata.Exception, Is.EqualTo(exception)); Assert.That(metadata.Calculation, Is.EqualTo(calculation)); mockRepository.VerifyAll(); mockCompiler.VerifyAll(); }
public void GetCalculatedFieldMetadata_Error_NotAField() { Mock <IExpressionCompiler> mockCompiler; CalculatedFieldMetadataProvider provider; // Mock compiler (compiling the calculation) mockCompiler = new Mock <IExpressionCompiler>(MockBehavior.Strict); // Get provider provider = new CalculatedFieldMetadataProvider(mockCompiler.Object, Factory.EntityRepository); // Run the test Assert.Throws <ArgumentException>(() => provider.GetCalculatedFieldMetadata(new long[] { 1 }, CalculatedFieldSettings.Default)); }
public void CreateBuilderSettingsForField(string fieldAlias, DataType expectedType) { Field field = Entity.Create(fieldAlias).As <Field>(); EntityType type = new EntityType(); field.FieldIsOnType = type; BuilderSettings settings = CalculatedFieldMetadataProvider.CreateBuilderSettingsForField(field, CalculatedFieldSettings.Default); Assert.That(settings, Is.Not.Null); Assert.That(settings.ScriptHost, Is.EqualTo(ScriptHostType.Any)); Assert.That(settings.RootContextType.EntityTypeId, Is.EqualTo(type.Id)); Assert.That(settings.ExpectedResultType.DisallowList, Is.True); Assert.That(settings.ExpectedResultType.Type, Is.EqualTo(expectedType)); }
public void GetCalculatedFieldMetadata_Error_NullFieldList() { Mock <IEntityRepository> mockRepository; Mock <IExpressionCompiler> mockCompiler; CalculatedFieldMetadataProvider provider; // Mock repository (loading field data) mockRepository = new Mock <IEntityRepository>(MockBehavior.Strict); // Mock compiler (compiling the calculation) mockCompiler = new Mock <IExpressionCompiler>(MockBehavior.Strict); // Get provider provider = new CalculatedFieldMetadataProvider(mockCompiler.Object, mockRepository.Object); // Run the test Assert.Throws <ArgumentNullException>(() => provider.GetCalculatedFieldMetadata(null, CalculatedFieldSettings.Default)); // Verify mockRepository.VerifyAll(); mockCompiler.VerifyAll(); }