Skip to content

Commit

Permalink
Add some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
brantburnett committed Aug 9, 2024
1 parent 0dd8f30 commit 3fa6e0d
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 0 deletions.
52 changes: 52 additions & 0 deletions Src/Couchbase.Linq.IntegrationTests/QueryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1436,6 +1436,58 @@ public void DateTimeOffset_DateTrunc()
}
}

[Test]
public void DateTime_Date()
{
var context = new BucketContext(TestSetup.Bucket);

var beers = from beer in context.Query<Beer>()
where beer.Type == "beer"
select new {beer.Name, Updated = beer.Updated.Date};

foreach (var b in beers.Take(1))
{
Console.WriteLine("Beer {0} is in {1:d}", b.Name, b.Updated);
}
}

[Test]
public async Task DateTime_Date_UnixMillis()
{
var context = new BucketContext(TestSetup.Bucket);

var versionProvider = TestSetup.Cluster.ClusterServices.GetRequiredService<IClusterVersionProvider>();
var clusterVersion = await versionProvider.GetVersionAsync() ?? FeatureVersions.DefaultVersion;
if (clusterVersion.Version == new Version(5, 5, 0))
{
Assert.Ignore("Skipping temporarily due to bug in 5.5 Beta https://issues.couchbase.com/browse/MB-29357");
}

var beers = from beer in context.Query<Beer>()
where beer.Type == "beer" && N1QlFunctions.IsValued(beer.UpdatedUnixMillis)
select new { beer.Name, Updated = beer.UpdatedUnixMillis.Value.Date };

foreach (var b in beers.Take(1))
{
Console.WriteLine("Beer {0} is in {1:d}", b.Name, b.Updated);
}
}

[Test]
public void DateTimeOffset_Date()
{
var context = new BucketContext(TestSetup.Bucket);

var beers = from beer in context.Query<Beer>()
where beer.Type == "beer"
select new {beer.Name, Updated = beer.UpdatedOffset.Date};

foreach (var b in beers.Take(1))
{
Console.WriteLine("Beer {0} is in {1:d}", b.Name, b.Updated);
}
}

private async Task PrepareBeerDocuments()
{
var query = @"UPDATE `beer-sample` SET updatedUnixMillis = STR_TO_MILLIS(updated)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Couchbase.Linq.QueryGeneration;
using Couchbase.Linq.QueryGeneration.MethodCallTranslators;
using Moq;
using NUnit.Framework;
using System.Reflection;
using Couchbase.Core.IO.Serializers;

namespace Couchbase.Linq.UnitTests.QueryGeneration.MethodCallTranslators
{
class DateMethodCallTranslatorTests
{
#region Translate

[Test]
public void Translate_DateTime_Date_RendersCorrectly()
{
// Arrange

var queryGenerationContext = new N1QlQueryGenerationContext
{
Serializer = new DefaultSerializer()
};

var visitor = new Mock<N1QlExpressionTreeVisitor>(queryGenerationContext)
{
CallBase = true
};

var dateTime = new DateTime(2024, 01, 02, 3, 45, 10, DateTimeKind.Utc);

var method = typeof(DateTime).GetProperty("Date").GetGetMethod();
var expression = Expression.Call(Expression.Constant(dateTime), method);

var transformer = new DateMethodCallTranslator();

// Act

transformer.Translate(expression, visitor.Object);
var result = visitor.Object.GetN1QlExpression();

// Assert

Assert.AreEqual("DATE_TRUNC_STR(\"2024-01-02T03:45:10Z\",\"day\")", result);
}

[Test]
public void Translate_DateTimeOffset_Date_RendersCorrectly()
{
// Arrange

var queryGenerationContext = new N1QlQueryGenerationContext
{
Serializer = new DefaultSerializer()
};

var visitor = new Mock<N1QlExpressionTreeVisitor>(queryGenerationContext)
{
CallBase = true
};

var dateTime = new DateTimeOffset(2024, 01, 02, 3, 45, 10, TimeSpan.Zero);

var method = typeof(DateTimeOffset).GetProperty("Date").GetGetMethod();
var expression = Expression.Call(Expression.Constant(dateTime), method);

var transformer = new DateMethodCallTranslator();

// Act

transformer.Translate(expression, visitor.Object);
var result = visitor.Object.GetN1QlExpression();

// Assert

Assert.AreEqual("DATE_TRUNC_STR(\"2024-01-02T03:45:10+00:00\",\"day\")", result);
}

#endregion
}
}

0 comments on commit 3fa6e0d

Please sign in to comment.