Skip to content

Commit

Permalink
removed hardcoded values in tests for #1121 and small indendation tou…
Browse files Browse the repository at this point in the history
…chups
  • Loading branch information
Mpdreamz committed Dec 10, 2014
1 parent 2f1ce86 commit 004f910
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 83 deletions.
14 changes: 7 additions & 7 deletions src/Nest/DSL/Aggregations/FiltersAggregationDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@ namespace Nest
[JsonConverter(typeof(FiltersAggregatorConverter))]
public interface IFiltersAggregator : IBucketAggregator
{
[JsonProperty("filters")]
IEnumerable<IFilterContainer> Filters { get; set; }
[JsonProperty("filters")]
IEnumerable<IFilterContainer> Filters { get; set; }
}

public class FiltersAggregator : BucketAggregator, IFiltersAggregator
{
public IEnumerable<IFilterContainer> Filters { get; set; }
public IEnumerable<IFilterContainer> Filters { get; set; }
}

public class FiltersAggregationDescriptor<T> : BucketAggregationBaseDescriptor<FiltersAggregationDescriptor<T>, T> , IFiltersAggregator
public class FiltersAggregationDescriptor<T> : BucketAggregationBaseDescriptor<FiltersAggregationDescriptor<T>, T>, IFiltersAggregator
where T : class
{
IEnumerable<IFilterContainer> IFiltersAggregator.Filters { get; set; }
IEnumerable<IFilterContainer> IFiltersAggregator.Filters { get; set; }

public FiltersAggregationDescriptor<T> Filters(params Func<FilterDescriptor<T>, FilterContainer>[] filterDescriptors)
public FiltersAggregationDescriptor<T> Filters(params Func<FilterDescriptor<T>, FilterContainer>[] filterDescriptors)
{
((IFiltersAggregator)this).Filters = filterDescriptors.Select(f => f.Invoke(new FilterDescriptor<T>())).ToList();
((IFiltersAggregator)this).Filters = filterDescriptors.Select(f => f.Invoke(new FilterDescriptor<T>())).ToList();
return this;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,38 +15,38 @@ public override bool CanConvert(Type objectType)
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var f = value as IFiltersAggregator;
if (f == null || f.Filters == null) return;
var f = value as IFiltersAggregator;
if (f == null || f.Filters == null) return;

writer.WriteStartObject();
writer.WritePropertyName("filters");
writer.WriteStartObject();
writer.WritePropertyName("filters");

if (!f.Filters.Any(filter => String.IsNullOrEmpty(filter.FilterName)))
{
writer.WriteStartObject();
foreach (var filter in f.Filters)
{
writer.WritePropertyName(filter.FilterName);
serializer.Serialize(writer, filter);
}
writer.WriteEndObject();
}
else
{
serializer.Serialize(writer, f.Filters);
}
if (!f.Filters.Any(filter => String.IsNullOrEmpty(filter.FilterName)))
{
writer.WriteStartObject();
foreach (var filter in f.Filters)
{
writer.WritePropertyName(filter.FilterName);
serializer.Serialize(writer, filter);
}
writer.WriteEndObject();
}
else
{
serializer.Serialize(writer, f.Filters);
}

writer.WriteEndObject();
writer.WriteEndObject();
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
//todo implement
//todo implement
if (reader.TokenType != JsonToken.StartObject) return null;
reader.Read();
if (reader.TokenType != JsonToken.PropertyName) return null;
var prop = reader.Value;
if ((string) reader.Value != "filter") return null;
if ((string)reader.Value != "filter") return null;
reader.Read();
var agg = new FilterAggregator();
serializer.Populate(reader, agg);
Expand All @@ -55,4 +55,3 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
}

}

Original file line number Diff line number Diff line change
@@ -1,68 +1,73 @@
using FluentAssertions;
using Nest.Tests.MockData;
using Nest.Tests.MockData.Domain;
using NUnit.Framework;

namespace Nest.Tests.Integration.Aggregations
{
[TestFixture]
public class FiltersAggregationTests : IntegrationTests
{
[Test]
public void NamedFilters()
{
var results = this.Client.Search<ElasticsearchProject>(s => s
.Size(0)
.Aggregations(a => a
.Filters("filtersAggregation",
t =>
t.Filters(x => x.Name("first").Term(p => p.Name, "pyelasticsearch"),
x => x.Name("second").Term(p => p.Country, "Sweden"))
.Aggregations(n => n.Average("avg", d => d.Field(x => x.Id)))
)
)
);
[TestFixture]
public class FiltersAggregationTests : IntegrationTests
{
private readonly string _indexedName = NestTestData.Data[3].Name;
private readonly string _indexedCountry = NestTestData.Data[2].Country;
[Test]
public void NamedFilters()
{

results.IsValid.Should().BeTrue();
var filtersBuckets = results.Aggs.Filters("filtersAggregation");
filtersBuckets.Should().NotBeNull();
filtersBuckets.Aggregations.Should().NotBeNull();
var results = this.Client.Search<ElasticsearchProject>(s => s
.Size(0)
.Aggregations(a => a
.Filters("filtersAggregation", t => t
.Filters(
x => x.Name("first").Term(p => p.Name.Suffix("sort"), _indexedName),
x => x.Name("second").Term(p => p.Country, _indexedCountry)
)
.Aggregations(n => n.Average("avg", d => d.Field(x => x.Id)))
)
)
);

var firstBucket = filtersBuckets.Aggregations.Global("first");
firstBucket.Should().NotBeNull();
var firstCount = firstBucket.DocCount;
firstCount.ShouldBeEquivalentTo(1);
results.IsValid.Should().BeTrue();
var filtersBuckets = results.Aggs.Filters("filtersAggregation");
filtersBuckets.Should().NotBeNull();
filtersBuckets.Aggregations.Should().NotBeNull();

var secondBucket = filtersBuckets.Aggregations.Global("second");
secondBucket.Should().NotBeNull();
var secondCount = secondBucket.DocCount;
secondCount.ShouldBeEquivalentTo(2);
}
var firstBucket = filtersBuckets.Aggregations.Global("first");
firstBucket.Should().NotBeNull();
firstBucket.DocCount.Should().BeGreaterOrEqualTo(1);

[Test]
public void AnonymousFilters()
{
var results = this.Client.Search<ElasticsearchProject>(s => s
.Size(0)
.Aggregations(a => a
.Filters("filtersAggregation",
t =>
t.Filters(x => x.Term(p => p.Name, "pyelasticsearch"), x => x.Term(p => p.Country, "Sweden"))
.Aggregations(n => n.Average("avg", d => d.Field(x => x.Id)))
)
)
);
var secondBucket = filtersBuckets.Aggregations.Global("second");
secondBucket.Should().NotBeNull();
var secondCount = secondBucket.DocCount;
secondCount.Should().BeGreaterOrEqualTo(1);
}

results.IsValid.Should().BeTrue();
var filtersBuckets = results.Aggs.Filters("filtersAggregation");
filtersBuckets.Should().NotBeNull();
filtersBuckets.Items.Should().NotBeNull();
[Test]
public void AnonymousFilters()
{
var results = this.Client.Search<ElasticsearchProject>(s => s
.Size(0)
.Aggregations(a => a
.Filters("filtersAggregation", t => t
.Filters(
x => x.Term(p => p.Name.Suffix("sort"), _indexedName),
x => x.Term(p => p.Country, _indexedCountry)
)
.Aggregations(n => n.Average("avg", d => d.Field(x => x.Id)))
)
)
);

var buckets = filtersBuckets.Items;
buckets.Should().NotBeNull()
.And.HaveCount(2)
.And.Contain(a => (a as SingleBucket).DocCount == 1)
.And.Contain(a => (a as SingleBucket).DocCount == 2);
results.IsValid.Should().BeTrue();
var filtersBuckets = results.Aggs.Filters("filtersAggregation");
filtersBuckets.Should().NotBeNull();
filtersBuckets.Items.Should().NotBeNull();

}
}
var buckets = filtersBuckets.Items;
buckets.Should().NotBeNull()
.And.HaveCount(2)
.And.OnlyContain(a => (a as SingleBucket).DocCount >= 1);

}
}
}

0 comments on commit 004f910

Please sign in to comment.