TestResource

using System; using csUnit; using TestFramework.ApplicationAPI;  namespace
Tests.resource  { 	/// <summary>
	/// Shows use of [ExpectedException].
	/// </summary>

	public class TestResource : ResourceFixture
	{
		[Test]
		public void testResource() 
		{
			Pool parent = new Pool();
			parent.name = "FatherPool";
			parent = (Pool) save(parent, null);

			Resource resource = new Resource();
			resource.fullName = "Nouveau resource";
			ResourceScope scope = new ResourceScope();
			scope.parent = new PoolScope();
			resource.parent = parent;
			resource.userName = "Stub User " + DateTime.Now.Ticks;
		
			resource = (Resource) save(resource, scope);

			Assert.NotNull(resource.ID);
		}

		public void testResetToNullDate() 
		{
			// Creates a parent pool.
			Pool parent = new Pool();
			parent.name = "RootPool " + DateTime.Now.Ticks;
			parent = (Pool) save(parent, null);

			// Initializes a resource with a future discontinueDate.
			Resource resource = new Resource();
			resource.fullName = "Steve McDuff";
			resource.parent = parent;
			resource.userName = "User " + DateTime.Now.Ticks;
			resource.effectiveStartDate = DateTime.Today;
			resource.discontinueDate = DateTime.Today + TimeSpan.FromDays(30.0);

			// Initializes the scope.
			ResourceScope scope = new ResourceScope();
			scope.parent = new PoolScope();

			// Keeps the original discontinueDate for later comparison.
			DateTime originalDate = resource.discontinueDate;
		
			// Creates the resource.
			Resource reloadedRes = (Resource) save(resource, scope);

			// Ensure that reloaded date is still as the original.
			Assert.Equals(originalDate, reloadedRes.discontinueDate);

			// Resets the discontinueDate to "null".
			// Design note: "empty" .NET DateTime is translated to Java "null"
			// by RPM's Web Service.
			reloadedRes.discontinueDate = new DateTime();

			// Keeps the "null" discontinueDate for later comparison.
			DateTime nullDateTime = reloadedRes.discontinueDate;

			// Saves the resource with reset discontinueDate.
			Resource reloadedRes2 = (Resource) save(reloadedRes, scope);

			// Ensure that reloaded date is reset to "null".
			Assert.Equals(nullDateTime, reloadedRes2.discontinueDate);

			// Check in RPM's client that the date is null.
		}

		public void testSaveNullDate() 
		{
			Pool parent = new Pool();
			parent.name = "FatherPool";
			parent = (Pool) save(parent, null);

			Resource resource = new Resource();
			resource.fullName = "New resource";
			ResourceScope scope = new ResourceScope();
			scope.parent = new PoolScope();
			resource.parent = parent;
			resource.userName = "Stub User " + DateTime.Now.Ticks;
			DateTime originalDate = resource.discontinueDate;
			System.Console.WriteLine("\nOriginal date: " 
				+ originalDate + "\n");
		
			Resource autoReloadedRes = (Resource) save(resource, scope);

			Assert.NotNull(autoReloadedRes.ID);
			System.Console.WriteLine("\nOriginal date: " 
				+ originalDate + " - Auto-reloaded discontinue date: " 
				+ autoReloadedRes.discontinueDate + "\n");

			Assert.Equals(originalDate, autoReloadedRes.discontinueDate);

			Resource reloadedRes = (Resource) loadFromID(autoReloadedRes, scope);

			System.Console.WriteLine("\nOriginal date: " 
				+ originalDate + " - Reloaded discontinue date: " + 
		reloadedRes.discontinueDate + "\n");

			Assert.Equals(originalDate, reloadedRes.discontinueDate);
		}
	}
}