UnitTests/LibraryTest.cs
using System;
using System.Linq;
using System.Threading.Tasks;
using Mongo.Rest;
using Sandbox;
[TestClass]
public partial class LibraryTests
{
[TestInitialize]
public void Initialize()
{
var scene = new Scene();
Configure( scene );
}
[TestCleanup]
public void Cleanup()
{
var scene = new Scene();
Configure( scene );
DeleteAllRecords( scene ).GetAwaiter().GetResult();
}
[TestMethod]
public void CreateUserTest()
{
var scene = new Scene();
Configure( scene );
CreateUser( scene ).GetAwaiter().GetResult();
}
[TestMethod]
public void CreateMultipleUsersTest()
{
var scene = new Scene();
Configure( scene );
CreateMultipleUsers( scene ).GetAwaiter().GetResult();
}
[TestMethod]
public void DeleteUserTest()
{
var scene = new Scene();
Configure( scene );
var user = CreateUser( scene ).GetAwaiter().GetResult();
DeleteUser( scene, user ).GetAwaiter().GetResult();
}
[TestMethod]
public void UpdateUserTest()
{
var scene = new Scene();
Configure( scene );
var user = CreateUser( scene ).GetAwaiter().GetResult();
UpdateUser( scene, user ).GetAwaiter().GetResult();
}
[TestMethod]
public void GetUserTest()
{
var scene = new Scene();
Configure( scene );
var user = CreateUser( scene ).GetAwaiter().GetResult();
GetUser( scene, user ).GetAwaiter().GetResult();
}
[TestMethod]
public void CountUsersTest()
{
var scene = new Scene();
Configure( scene );
CreateMultipleUsers( scene ).GetAwaiter().GetResult();
CountAllUsers( scene, 3 ).GetAwaiter().GetResult();
}
[TestMethod]
public void CountUserTest()
{
var scene = new Scene();
Configure( scene );
CreateUser( scene ).GetAwaiter().GetResult();
CountUser( scene, 1 ).GetAwaiter().GetResult();
}
[TestMethod]
public void GetUsersTest()
{
var scene = new Scene();
Configure( scene );
CreateMultipleUsers( scene ).GetAwaiter().GetResult();
GetAllUsers( scene ).GetAwaiter().GetResult();
}
[TestMethod]
public void ExistsUserTest()
{
var scene = new Scene();
Configure( scene );
var user = CreateUser( scene ).GetAwaiter().GetResult();
ExistsUser( scene, user ).GetAwaiter().GetResult();
}
private static async Task<User> CreateUser( Scene scene )
{
var users = new UserRepository( scene );
var user = new User { Identifier = Guid.NewGuid().ToString(), Name = "John Doe", Age = Random.Shared.Next( 1, 100 ) };
var inserted = await users.InsertAsync( user );
Assert.AreEqual( inserted, true );
return user;
}
private static async Task CreateMultipleUsers( Scene scene )
{
var users = new UserRepository( scene );
var user1 = new User { Identifier = Guid.NewGuid().ToString(), Name = "John Doe", Age = Random.Shared.Next( 1, 100 ) };
var user2 = new User
{
Identifier = Guid.NewGuid().ToString(), Name = "Marry Jane", Age = Random.Shared.Next( 1, 100 )
};
var user3 = new User { Identifier = Guid.NewGuid().ToString(), Name = "Lola Doe", Age = Random.Shared.Next( 1, 100 ) };
var inserted = await users.InsertAsync( user1, user2, user3 );
Assert.AreEqual( inserted, true );
}
private static async Task DeleteAllRecords( Scene scene )
{
var users = new UserRepository( scene );
await users.DeleteAsync();
}
private static async Task DeleteUser( Scene scene, User user )
{
var users = new UserRepository( scene );
var deleted = await users.DeleteAsync( x => x.Name = user.Name );
Assert.AreEqual( deleted, true );
}
private static async Task UpdateUser( Scene scene, User user )
{
var users = new UserRepository( scene );
var updated = await users.UpdateAsync( x => x.Name = user.Name, x => x.Age = Random.Shared.Next( 1, 100 ) );
Assert.AreEqual( updated, true );
}
private static async Task GetUser( Scene scene, User user )
{
var repo = new UserRepository( scene );
var users = (await repo.GetAsync( x => x.Name = user.Name )).ToList();
Assert.AreEqual( users.Count, 1 );
var other = users.FirstOrDefault();
Assert.IsNotNull( other );
}
private static async Task GetAllUsers( Scene scene )
{
var users = new UserRepository( scene );
var usersList = await users.GetAsync( limit: 3 );
Assert.AreEqual( usersList.Count(), 3 );
}
private static async Task ExistsUser( Scene scene, User user )
{
var users = new UserRepository( scene );
var exists = await users.ExistsAsync( x => x.Name = user.Name );
Assert.AreEqual( exists, true );
}
private static async Task CountAllUsers( Scene scene, int count )
{
var users = new UserRepository( scene );
var total = await users.CountAsync();
Assert.AreEqual( total, count );
}
private static async Task CountUser( Scene scene, int count )
{
var users = new UserRepository( scene );
var total = await users.CountAsync( x => x.Name = "John Doe" );
Assert.AreEqual( total, count );
}
private static void Configure( Scene scene )
{
var system = scene.GetSystem<MongoRestSystem>();
system.Initialize();
system.Configure( options =>
{
options.Url = "https://localhost:443";
options.Database = "Orizon";
} );
}
}