/BRANCHES/CR4/Gastros/test/GuiTests/SplasherViewTest.cs

# · C# · 193 lines · 150 code · 23 blank · 20 comment · 0 complexity · 9f8ace058636503e5e8441e17327a260 MD5 · raw file

  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using GastrOs.Sde.Engine;
  4. using GastrOs.Sde.Support;
  5. using GastrOs.Sde.ViewControls;
  6. using GastrOs.Sde.Views;
  7. using NUnit.Framework;
  8. using OpenEhr.AM.Archetype.ConstraintModel;
  9. using Microsoft.Practices.Unity;
  10. using OpenEhr.RM.DataStructures.ItemStructure.Representation;
  11. using OpenEhr.RM.DataTypes.Text;
  12. namespace GastrOs.Sde.Test.GuiTests
  13. {
  14. [TestFixture]
  15. public class SplasherViewTest : ModelViewTestBase
  16. {
  17. private CComplexObject constraint, elemConstraint;
  18. private Cluster model;
  19. private SplasherControl control;
  20. private ISplasherView<IMultiChoiceView> view;
  21. [SetUp]
  22. public void SetUp()
  23. {
  24. constraint = root.ConstraintAtPath("/items[at6000]/items[at6200]") as CComplexObject;
  25. elemConstraint = root.ConstraintAtPath("/items[at6000]/items[at6200]/items[at0500]") as CComplexObject;
  26. Assert.IsNotNull(constraint);
  27. model = new Cluster(new DvText("Ulcer"), "at6200", null, null, null, null, new Item[0]);
  28. control = new SplasherControl(constraint, elemConstraint);
  29. view = container.Resolve<ISplasherView<IMultiChoiceView>>();
  30. IMultiChoiceView innerView = container.Resolve<IMultiChoiceView>();
  31. view.SplashedView = innerView;
  32. }
  33. [Test]
  34. public void InitialConstructionTest()
  35. {
  36. //view properties
  37. Assert.IsTrue(string.IsNullOrEmpty(view.Title));
  38. //model properties
  39. Assert.AreEqual(0, model.Items.Count);
  40. control.Model = model;
  41. control.View = view;
  42. Assert.AreEqual(model, control.Model);
  43. Assert.AreEqual(view, control.View);
  44. //view properties
  45. Assert.AreEqual("Site(s)", view.Title);
  46. Assert.IsFalse(view.SplashedView.Visible);
  47. //model properties
  48. Assert.AreEqual(0, model.Items.Count);
  49. }
  50. [Test]
  51. public void SplashTest()
  52. {
  53. InitialConstructionTest();
  54. view.OpenSplash();
  55. Assert.IsTrue(view.SplashedView.Visible);
  56. view.CloseSplash();
  57. Assert.IsFalse(view.SplashedView.Visible);
  58. }
  59. [Test]
  60. public void SelectionTest()
  61. {
  62. InitialConstructionTest();
  63. view.OpenSplash();
  64. Assert.IsTrue(view.SplashedView.SetSelected("at0501", true));
  65. Assert.IsTrue(view.SplashedView.SetSelected("at0512", true));
  66. Assert.IsTrue(view.SplashedView.SetSelected("at0526", true));
  67. Assert.IsFalse(view.SplashedView.SetSelected("at0512", true));
  68. Assert.IsFalse(view.SplashedView.SetSelected("at0501", true));
  69. //verify view records selected items properly
  70. Assert.AreEqual(3, view.SplashedView.SelectedItems.Count());
  71. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0501"));
  72. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0512"));
  73. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0526"));
  74. //verify model updated
  75. IEnumerable<string> selectedCodes =
  76. model.Items.Cast<Element>().Select(elem => elem.ValueAs<DvCodedText>().Value);
  77. Assert.AreEqual(3, selectedCodes.Count());
  78. Assert.IsTrue(selectedCodes.Contains("at0501"));
  79. Assert.IsTrue(selectedCodes.Contains("at0512"));
  80. Assert.IsTrue(selectedCodes.Contains("at0526"));
  81. //change selection (#1)
  82. Assert.IsTrue(view.SplashedView.SetSelected("at0501", false));
  83. Assert.IsTrue(view.SplashedView.SetSelected("at0512", false));
  84. Assert.IsFalse(view.SplashedView.SetSelected("at0512", false));
  85. //verify view records selected items properly
  86. Assert.AreEqual(1, view.SplashedView.SelectedItems.Count());
  87. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0526"));
  88. //verify model updated
  89. selectedCodes = model.Items.Cast<Element>().Select(elem => elem.ValueAs<DvCodedText>().Value);
  90. Assert.AreEqual(1, selectedCodes.Count());
  91. Assert.IsTrue(selectedCodes.Contains("at0526"));
  92. //change selection (#2)
  93. Assert.IsTrue(view.SplashedView.SetSelected("at0501", true));
  94. Assert.IsTrue(view.SplashedView.SetSelected("at0526", false));
  95. Assert.IsTrue(view.SplashedView.SetSelected("at0512", true));
  96. Assert.IsTrue(view.SplashedView.SetSelected("at0513", true));
  97. Assert.IsTrue(view.SplashedView.SetSelected("at0518", true));
  98. //verify view records selected items properly
  99. Assert.AreEqual(4, view.SplashedView.SelectedItems.Count());
  100. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0501"));
  101. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0512"));
  102. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0513"));
  103. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0518"));
  104. //verify model updated
  105. selectedCodes =
  106. model.Items.Cast<Element>().Select(elem => elem.ValueAs<DvCodedText>().Value);
  107. Assert.AreEqual(4, selectedCodes.Count());
  108. Assert.IsTrue(selectedCodes.Contains("at0501"));
  109. Assert.IsTrue(selectedCodes.Contains("at0512"));
  110. Assert.IsTrue(selectedCodes.Contains("at0513"));
  111. Assert.IsTrue(selectedCodes.Contains("at0518"));
  112. }
  113. [Test]
  114. public void TestLoadFromExistingModel()
  115. {
  116. //initial view properties
  117. Assert.IsTrue(string.IsNullOrEmpty(view.Title));
  118. Assert.AreEqual(0, view.SplashedView.SelectedItems.Count());
  119. //initial model properties
  120. Assert.AreEqual(0, model.Items.Count);
  121. Element site1 = RmFactory.InstantiateElement(elemConstraint);
  122. site1.Name = new DvText("Site(s)at0501");
  123. site1.ValueAs<DvCodedText>().Value = "at0501";
  124. Element site2 = RmFactory.InstantiateElement(elemConstraint);
  125. site2.Name = new DvText("Site(s)at0512");
  126. site2.ValueAs<DvCodedText>().Value = "at0512";
  127. Element site3 = RmFactory.InstantiateElement(elemConstraint);
  128. site3.Name = new DvText("Site(s)at0518");
  129. site3.ValueAs<DvCodedText>().Value = "at0518";
  130. model.Items.Add(site1);
  131. model.Items.Add(site2);
  132. model.Items.Add(site3);
  133. control.Model = model;
  134. control.View = view;
  135. Assert.AreEqual(model, control.Model);
  136. Assert.AreEqual(view, control.View);
  137. //View properties
  138. Assert.AreEqual("Site(s)", view.Title);
  139. Assert.IsFalse(view.SplashedView.Visible);
  140. //View should now be updated to reflect the model
  141. Assert.AreEqual(3, view.SplashedView.SelectedItems.Count());
  142. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0501"));
  143. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0512"));
  144. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0518"));
  145. //Deselect an item from view
  146. view.SplashedView.SetSelected("at0512", false);
  147. Assert.AreEqual(2, view.SplashedView.SelectedItems.Count());
  148. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0501"));
  149. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0518"));
  150. //Model should be updated to reflect view
  151. IEnumerable<string> selectedCodes =
  152. model.Items.Cast<Element>().Select(elem => elem.ValueAs<DvCodedText>().Value);
  153. Assert.AreEqual(2, selectedCodes.Count());
  154. Assert.IsTrue(selectedCodes.Contains("at0501"));
  155. Assert.IsTrue(selectedCodes.Contains("at0518"));
  156. //Select a different item from view
  157. view.SplashedView.SetSelected("at0523", true);
  158. Assert.AreEqual(3, view.SplashedView.SelectedItems.Count());
  159. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0501"));
  160. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0518"));
  161. Assert.IsTrue(view.SplashedView.SelectedItems.Contains("at0523"));
  162. //Model should be updated to reflect view
  163. selectedCodes = model.Items.Cast<Element>().Select(elem => elem.ValueAs<DvCodedText>().Value);
  164. Assert.AreEqual(3, selectedCodes.Count());
  165. Assert.IsTrue(selectedCodes.Contains("at0501"));
  166. Assert.IsTrue(selectedCodes.Contains("at0518"));
  167. Assert.IsTrue(selectedCodes.Contains("at0523"));
  168. }
  169. }
  170. }