/tags/1.31/src/Tests/Platform/OrganizationApiTests.cs
C# | 308 lines | 236 code | 52 blank | 20 comment | 7 complexity | a3d8e3aa8bec448d98883271679c3cda MD5 | raw file
Possible License(s): AGPL-1.0, LGPL-2.1
- /****************************************************************************************************
- Copyright (C) 2010 RapidWebDev Organization (http://rapidwebdev.org)
- Author: Eunge, Legal Name: Jian Liu, Email: eunge.liu@RapidWebDev.org
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- ****************************************************************************************************/
-
- using System;
- using System.Collections.Generic;
- using System.Data.Linq;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Transactions;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Xml;
- using System.Xml.Schema;
- using BaoJianSoft.Common;
- using BaoJianSoft.Common.Data;
- using BaoJianSoft.Common.Validation;
- using BaoJianSoft.Platform;
- using BaoJianSoft.Platform.Linq;
- using BaoJianSoft.RapidWeb;
- using BaoJianSoft.RapidWeb.Controls;
- using BaoJianSoft.RapidWeb.DynamicPages;
- using NUnit.Framework;
-
- namespace BaoJianSoft.Tests.Platform
- {
- [TestFixture]
- public class OrganizationApiTests
- {
- List<Guid> createdOrganizationIds = new List<Guid>();
- List<Guid> createdOrganizationTypeIds = new List<Guid>();
-
- [TearDown]
- public void TearDown()
- {
- using (MembershipDataContext ctx = DataContextFactory.Create<MembershipDataContext>())
- {
- var organizationsToDelete = ctx.Organizations.Where(org => createdOrganizationIds.ToArray().Contains(org.OrganizationId));
- var organizationTypesToDelete = ctx.OrganizationTypes.Where(orgType => createdOrganizationTypeIds.ToArray().Contains(orgType.OrganizationTypeId));
-
- ctx.Organizations.DeleteAllOnSubmit(organizationsToDelete);
- ctx.OrganizationTypes.DeleteAllOnSubmit(organizationTypesToDelete);
- ctx.SubmitChanges();
- }
- }
-
- [Test, Description("Basic organization type CRUD test.")]
- public void BasicOrganizationTypeTest()
- {
- IOrganizationApi organizationApi = SpringContext.Current.GetObject<IOrganizationApi>();
-
- OrganizationTypeObject department = new OrganizationTypeObject { Name = "department", Domain = "Inc", Description = "department-desc" };
- organizationApi.Save(department);
- createdOrganizationTypeIds.Add(department.OrganizationTypeId);
-
- OrganizationTypeObject customer = new OrganizationTypeObject { Name = "customer", Domain = "Customer", Description = "customer-desc" };
- organizationApi.Save(customer);
- createdOrganizationTypeIds.Add(customer.OrganizationTypeId);
-
- department = organizationApi.GetOrganizationType(department.OrganizationTypeId);
- Assert.AreEqual("department", department.Name);
- Assert.AreEqual("department-desc", department.Description);
-
- customer = organizationApi.GetOrganizationType("customer");
- Assert.AreEqual("customer", customer.Name);
- Assert.AreEqual("customer-desc", customer.Description);
-
- var organizationTypes = organizationApi.FindOrganizationTypes().ToList();
- Assert.AreEqual(3, organizationTypes.Count());
- Assert.AreEqual(1, organizationTypes.Where(ct => ct.Name == "customer").Count());
- Assert.AreEqual(1, organizationTypes.Where(ct => ct.Name == "department").Count());
-
- department.Name = "departmentX";
- department.Description = "departmentX-desc";
- organizationApi.Save(department);
-
- department = organizationApi.GetOrganizationType(department.OrganizationTypeId);
- Assert.AreEqual("departmentX", department.Name);
- Assert.AreEqual("departmentX-desc", department.Description);
-
- Assert.IsNotNull(organizationApi.GetOrganizationType("customer"));
-
- organizationTypes = organizationApi.FindOrganizationTypes().ToList();
- Assert.AreEqual(3, organizationTypes.Count());
- Assert.AreEqual(1, organizationTypes.Where(ct => ct.Name == "customer").Count());
- Assert.AreEqual(1, organizationTypes.Where(ct => ct.Name == "departmentX").Count());
-
- customer.DeleteStatus = DeleteStatus.Deleted;
- organizationApi.Save(customer);
-
- organizationTypes = organizationApi.FindOrganizationTypes().Where(orgType => orgType.DeleteStatus == DeleteStatus.NotDeleted).ToList();
- Assert.AreEqual(2, organizationTypes.Count());
- Assert.AreEqual(1, organizationTypes.Where(ct => ct.Name == "departmentX").Count());
-
- department = organizationApi.GetOrganizationType(department.OrganizationTypeId);
- Assert.AreEqual("departmentX", department.Name);
- Assert.AreEqual("departmentX-desc", department.Description);
-
- department.DeleteStatus = DeleteStatus.Deleted;
- organizationApi.Save(department);
-
- organizationTypes = organizationApi.FindOrganizationTypes().Where(orgType => orgType.DeleteStatus == DeleteStatus.NotDeleted).ToList();
- Assert.AreEqual(1, organizationTypes.Count());
- }
-
- [Test, Description("Basic organization CRUD test.")]
- public void BasicOrganizationTest()
- {
- IOrganizationApi organizationApi = SpringContext.Current.GetObject<IOrganizationApi>();
-
- OrganizationTypeObject department = new OrganizationTypeObject { Name = "department", Domain = "Inc", Description = "department-desc" };
- organizationApi.Save(department);
- createdOrganizationTypeIds.Add(department.OrganizationTypeId);
-
- OrganizationObject shOrganization = new OrganizationObject
- {
- OrganizationCode = "sh",
- OrganizationName = "sh-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- Description = "sh-desc"
- };
-
- organizationApi.Save(shOrganization);
- createdOrganizationIds.Add(shOrganization.OrganizationId);
-
- OrganizationObject cdOrganization = new OrganizationObject
- {
- OrganizationCode = "cd",
- OrganizationName = "cd-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- Description = "cd-desc"
- };
-
- organizationApi.Save(cdOrganization);
- createdOrganizationIds.Add(cdOrganization.OrganizationId);
-
- shOrganization = organizationApi.GetOrganization(shOrganization.OrganizationId);
- Assert.AreEqual("sh", shOrganization.OrganizationCode);
- Assert.AreEqual("sh-department", shOrganization.OrganizationName);
- Assert.IsFalse(shOrganization.ParentOrganizationId.HasValue);
- Assert.AreEqual(OrganizationStatus.Enabled, shOrganization.Status);
- Assert.AreEqual("sh-desc", shOrganization.Description);
-
- cdOrganization = organizationApi.GetOrganization(cdOrganization.OrganizationId);
- Assert.IsNotNull(cdOrganization);
-
- shOrganization.OrganizationName = "021-depart";
- shOrganization.Description = "021-desc";
- organizationApi.Save(shOrganization);
-
- shOrganization = organizationApi.GetOrganization(shOrganization.OrganizationId);
- Assert.AreEqual("021-depart", shOrganization.OrganizationName);
- Assert.IsFalse(shOrganization.ParentOrganizationId.HasValue);
- Assert.AreEqual(OrganizationStatus.Enabled, shOrganization.Status);
- Assert.AreEqual("021-desc", shOrganization.Description);
-
- shOrganization = organizationApi.GetOrganizationByName("021-depart");
- Assert.AreEqual("021-depart", shOrganization.OrganizationName);
-
- shOrganization = organizationApi.GetOrganizationByCode("sh");
- Assert.AreEqual("021-depart", shOrganization.OrganizationName);
- }
-
- [Test, Description("Save organization test.")]
- public void SaveOrganizationTest()
- {
- IOrganizationApi organizationApi = SpringContext.Current.GetObject<IOrganizationApi>();
-
- OrganizationTypeObject department = new OrganizationTypeObject { Name = "department", Domain = "Inc", Description = "department-desc" };
- organizationApi.Save(department);
- createdOrganizationTypeIds.Add(department.OrganizationTypeId);
-
- OrganizationObject shanghai = new OrganizationObject
- {
- OrganizationCode = "sh",
- OrganizationName = "sh-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- Description = "sh-desc"
- };
-
- organizationApi.Save(shanghai);
- createdOrganizationIds.Add(shanghai.OrganizationId);
-
- shanghai = organizationApi.GetOrganization(shanghai.OrganizationId);
- shanghai.OrganizationName = "shanghai organization";
- shanghai.Description = "shanghai organization description";
- organizationApi.Save(shanghai);
-
- shanghai = organizationApi.GetOrganization(shanghai.OrganizationId);
- Assert.AreEqual("shanghai organization", shanghai.OrganizationName);
- Assert.AreEqual("shanghai organization description", shanghai.Description);
- }
-
- [Test, Description("Setting wrong child organization status on creating test.")]
- [ExpectedException(typeof(ValidationException))]
- public void WrongChildOrganizationStatusOnCreatingTest()
- {
- IOrganizationApi organizationApi = SpringContext.Current.GetObject<IOrganizationApi>();
- OrganizationTypeObject department = new OrganizationTypeObject { Name = "department", Domain = "Inc", Description = "department-desc" };
- organizationApi.Save(department);
- createdOrganizationTypeIds.Add(department.OrganizationTypeId);
-
- OrganizationObject shOrganization = new OrganizationObject
- {
- OrganizationCode = "sh",
- OrganizationName = "sh-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Disabled,
- Description = "sh-desc"
- };
-
- organizationApi.Save(shOrganization);
- createdOrganizationIds.Add(shOrganization.OrganizationId);
-
- OrganizationObject cdOrganization = new OrganizationObject
- {
- OrganizationCode = "cd",
- OrganizationName = "cd-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- ParentOrganizationId = shOrganization.OrganizationId,
- Description = "cd-desc"
- };
-
- organizationApi.Save(cdOrganization);
- }
-
- [Test, Description("Organization status update test.")]
- public void UpdateOrganizationStatusTest()
- {
- IOrganizationApi organizationApi = SpringContext.Current.GetObject<IOrganizationApi>();
-
- OrganizationTypeObject department = new OrganizationTypeObject { Name = "department", Domain = "Inc", Description = "department-desc" };
- organizationApi.Save(department);
- createdOrganizationTypeIds.Add(department.OrganizationTypeId);
-
- OrganizationObject shOrganization = new OrganizationObject
- {
- OrganizationCode = "sh",
- OrganizationName = "sh-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- Description = "sh-desc"
- };
-
- organizationApi.Save(shOrganization);
- createdOrganizationIds.Add(shOrganization.OrganizationId);
-
- OrganizationObject cdOrganization = new OrganizationObject
- {
- OrganizationCode = "cd",
- OrganizationName = "cd-department",
- OrganizationTypeId = department.OrganizationTypeId,
- Status = OrganizationStatus.Enabled,
- ParentOrganizationId = shOrganization.OrganizationId,
- Description = "cd-desc"
- };
-
- organizationApi.Save(cdOrganization);
- createdOrganizationIds.Add(cdOrganization.OrganizationId);
-
- // update parent's status from Enabled to Disabled will affect its children
- shOrganization.Status = OrganizationStatus.Disabled;
- organizationApi.Save(shOrganization);
- shOrganization = organizationApi.GetOrganization(shOrganization.OrganizationId);
- cdOrganization = organizationApi.GetOrganization(cdOrganization.OrganizationId);
- Assert.AreEqual(OrganizationStatus.Disabled, shOrganization.Status);
- Assert.AreEqual(OrganizationStatus.Disabled, cdOrganization.Status);
-
- // update parent's status from Disabled to Enabled won't affect its children
- shOrganization.Status = OrganizationStatus.Enabled;
- organizationApi.Save(shOrganization);
- shOrganization = organizationApi.GetOrganization(shOrganization.OrganizationId);
- cdOrganization = organizationApi.GetOrganization(cdOrganization.OrganizationId);
- Assert.AreEqual(OrganizationStatus.Enabled, shOrganization.Status);
- Assert.AreEqual(OrganizationStatus.Disabled, cdOrganization.Status);
-
- cdOrganization.Status = OrganizationStatus.Enabled;
- organizationApi.Save(cdOrganization);
-
- // update child's status from Enabled to Disabled won't affect its parent
- cdOrganization.Status = OrganizationStatus.Disabled;
- organizationApi.Save(cdOrganization);
- shOrganization = organizationApi.GetOrganization(shOrganization.OrganizationId);
- cdOrganization = organizationApi.GetOrganization(cdOrganization.OrganizationId);
- Assert.AreEqual(OrganizationStatus.Enabled, shOrganization.Status);
- Assert.AreEqual(OrganizationStatus.Disabled, cdOrganization.Status);
- }
- }
- }