public void TaskSuccessTest()
        {
            var testUser = TestsModel.User;

            testUser.Type = UserType.SystemUser;
            var addUserTask   = new AddUser(DbContext, new AddPerson(DbContext, new FormattingService()), new FormattingService());
            var addUserResult = addUserTask.DoTask(testUser);

            Assert.IsTrue(addUserResult.Success);
            Assert.IsNull(addUserResult.Exception);

            var task = new UpdateUser(DbContext, new UpdatePerson(DbContext, new FormattingService()), new AddPerson(DbContext, new FormattingService()), new FormattingService());

            UpdateUserModel(testUser);
            var result = task.DoTask(testUser);

            Assert.IsTrue(result.Success);
            Assert.IsNull(result.Exception);
            Assert.IsNull(result.Data);

            var getUserTask       = new GetUser(DbContext);
            var user              = getUserTask.DoTask(testUser.Id)?.Data;
            var formattingService = new FormattingService();

            Assert.IsNotNull(user);
            Assert.AreEqual(formattingService.FormatSocialSecurityNumber(testUser.SocialSecurityNumber), user.SocialSecurityNumber);
            Assert.AreEqual(testUser.PerformingRightsOrganizationId, user.PerformingRightsOrganizationId);
            Assert.AreEqual(testUser.PerformingRightsOrganizationMemberNumber, user.PerformingRightsOrganizationMemberNumber);
            Assert.AreEqual(testUser.SoundExchangeAccountNumber, user.SoundExchangeAccountNumber);
            Assert.AreEqual(testUser.PublisherId, user.PublisherId);
            Assert.AreEqual(testUser.RecordLabelId, user.RecordLabelId);
            Assert.IsNotNull(user.Person);
            Assert.AreEqual(testUser.Person.FirstName, user.Person.FirstName);
            Assert.AreEqual(testUser.Person.MiddleName, user.Person.MiddleName);
            Assert.AreEqual(testUser.Person.LastName, user.Person.LastName);
            Assert.AreEqual(testUser.Person.NameSuffix, user.Person.NameSuffix);
            Assert.AreEqual(formattingService.FormatPhoneNumber(testUser.Person.Phone), user.Person.Phone);
            Assert.AreEqual(testUser.Person.Email, user.Person.Email);
            Assert.IsNotNull(user.Person.Address);
            Assert.AreEqual(testUser.Person.Address.Street, user.Person.Address.Street);
            Assert.AreEqual(testUser.Person.Address.City, user.Person.Address.City);
            Assert.AreEqual(testUser.Person.Address.Region, user.Person.Address.Region);
            Assert.AreEqual(testUser.Person.Address.PostalCode, user.Person.Address.PostalCode);
            Assert.IsNotNull(user.Person.Address.Country);
            Assert.AreEqual(testUser.Person.Address.Country.Name, user.Person.Address.Country.Name);
            Assert.AreEqual(testUser.Person.Address.Country.IsoCode, user.Person.Address.Country.IsoCode);

            var person           = user.Person;
            var removeUserTask   = new RemoveUser(DbContext);
            var removeUserResult = removeUserTask.DoTask(user);

            Assert.IsTrue(removeUserResult.Success);
            Assert.IsNull(removeUserResult.Exception);

            var removePersonTask   = new RemovePerson(DbContext);
            var removePersonResult = removePersonTask.DoTask(person);

            Assert.IsTrue(removePersonResult.Success);
            Assert.IsNull(removePersonResult.Exception);
        }
        public void TaskFailTest()
        {
            var task   = new GetUser(EmptyDbContext);
            var result = task.DoTask(0);

            Assert.IsFalse(result.Success);
            Assert.IsNotNull(result.Exception);
        }
        public void TaskSuccessTest()
        {
            var task     = new AddUser(DbContext, new AddPerson(DbContext, new FormattingService()), new FormattingService());
            var testUser = TestsModel.User;
            var result   = task.DoTask(testUser);

            Assert.IsTrue(result.Success);
            Assert.IsNull(result.Exception);
            Assert.IsNotNull(result.Data);

            var userId = result.Data;

            Assert.IsNotNull(userId);
            Assert.IsTrue(userId > 0);

            var getUserTask       = new GetUser(DbContext);
            var user              = getUserTask.DoTask(userId.Value)?.Data;
            var formattingService = new FormattingService();

            Assert.IsNotNull(user);
            Assert.AreEqual(testUser.Type, user.Type);
            Assert.AreEqual(testUser.Roles, user.Roles);
            Assert.AreEqual(testUser.AuthenticationId, user.AuthenticationId);
            Assert.IsNotNull(testUser.Person);
            Assert.AreEqual(testUser.Person.FirstName, user.Person.FirstName);
            Assert.AreEqual(testUser.Person.MiddleName, user.Person.MiddleName);
            Assert.AreEqual(testUser.Person.LastName, user.Person.LastName);
            Assert.AreEqual(testUser.Person.NameSuffix, user.Person.NameSuffix);
            Assert.AreEqual(testUser.Person.Email, user.Person.Email);
            Assert.AreEqual(formattingService.FormatPhoneNumber(testUser.Person.Phone), user.Person.Phone);
            Assert.IsNotNull(testUser.Person.Address.Country);
            Assert.AreEqual(testUser.Person.Address.Country.Name, user.Person.Address.Country.Name);
            Assert.AreEqual(testUser.Person.Address.Country.IsoCode, user.Person.Address.Country.IsoCode);
            Assert.AreEqual(formattingService.FormatSocialSecurityNumber(testUser.SocialSecurityNumber), user.SocialSecurityNumber);
            if (testUser.PerformingRightsOrganization != null)
            {
                Assert.AreEqual(testUser.PerformingRightsOrganization.Name, user.PerformingRightsOrganization.Name);
                Assert.IsNotNull(testUser.PerformingRightsOrganization.Country);
                Assert.IsNotNull(testUser.PerformingRightsOrganization.Country.Name);
            }
            Assert.AreEqual(testUser.PerformingRightsOrganizationMemberNumber, user.PerformingRightsOrganizationMemberNumber);
            Assert.AreEqual(testUser.SoundExchangeAccountNumber, user.SoundExchangeAccountNumber);

            var person           = user.Person;
            var removeUserTask   = new RemoveUser(DbContext);
            var removeUserResult = removeUserTask.DoTask(user);

            Assert.IsTrue(removeUserResult.Success);
            Assert.IsNull(removeUserResult.Exception);

            var removePersonTask   = new RemovePerson(DbContext);
            var removePersonResult = removePersonTask.DoTask(person);

            Assert.IsTrue(removePersonResult.Success);
            Assert.IsNull(removePersonResult.Exception);
        }
        public void TaskSuccessTest()
        {
            var addUserTask = new AddUser(DbContext, new AddPerson(DbContext, new FormattingService()), new FormattingService());
            var testUser    = TestsModel.User;
            var testUserId  = addUserTask.DoTask(testUser);

            Assert.IsTrue(testUserId.Data.HasValue);

            var task   = new GetUser(DbContext);
            var result = task.DoTask(testUserId.Data.Value);

            Assert.IsTrue(result.Success);
            Assert.IsNull(result.Exception);

            var user = result.Data;

            Assert.IsNotNull(user);
            Assert.AreEqual(testUser.AuthenticationId, user.AuthenticationId);
            Assert.AreEqual(testUser.SocialSecurityNumber, user.SocialSecurityNumber);
            Assert.AreEqual(testUser.SoundExchangeAccountNumber, user.SoundExchangeAccountNumber);
            Assert.IsNotNull(testUser.Person);
            Assert.AreEqual(testUser.Person.FirstName, user.Person.FirstName);
            Assert.AreEqual(testUser.Person.MiddleName, user.Person.MiddleName);
            Assert.AreEqual(testUser.Person.LastName, user.Person.LastName);
            Assert.AreEqual(testUser.Person.NameSuffix, user.Person.NameSuffix);
            Assert.AreEqual(testUser.Person.Email, user.Person.Email);
            Assert.AreEqual(testUser.Person.Phone, user.Person.Phone);
            Assert.IsNotNull(testUser.Person.Address);
            Assert.AreEqual(testUser.Person.Address.Street, user.Person.Address.Street);
            Assert.AreEqual(testUser.Person.Address.City, user.Person.Address.City);
            Assert.AreEqual(testUser.Person.Address.Region, user.Person.Address.Region);
            Assert.AreEqual(testUser.Person.Address.PostalCode, user.Person.Address.PostalCode);
            Assert.IsNotNull(testUser.Person.Address.Country);
            Assert.AreEqual(testUser.Person.Address.Country.Name, user.Person.Address.Country.Name);
            Assert.AreEqual(testUser.Person.Address.Country.IsoCode, user.Person.Address.Country.IsoCode);
            if (testUser.PerformingRightsOrganization != null)
            {
                Assert.AreEqual(testUser.PerformingRightsOrganization.Name, user.PerformingRightsOrganization.Name);
                Assert.IsNotNull(testUser.PerformingRightsOrganization.Country);
                Assert.AreEqual(testUser.PerformingRightsOrganization.Country.Name, user.PerformingRightsOrganization.Country.Name);
            }
            if (testUser.Publisher != null)
            {
                Assert.AreEqual(testUser.Publisher.Name, user.Publisher.Name);
                Assert.AreEqual(testUser.Publisher.TaxId, user.Publisher.TaxId);
                Assert.AreEqual(testUser.Publisher.Email, user.Publisher.Email);
                Assert.AreEqual(testUser.Publisher.Phone, user.Publisher.Phone);
                Assert.IsNotNull(testUser.Publisher.PerformingRightsOrganization);
                Assert.AreEqual(testUser.Publisher.PerformingRightsOrganization.Name, user.Publisher.PerformingRightsOrganization.Name);
                Assert.IsNotNull(testUser.Publisher.PerformingRightsOrganization.Country);
                Assert.AreEqual(testUser.Publisher.PerformingRightsOrganization.Country.Name, user.Publisher.PerformingRightsOrganization.Country.Name);
                Assert.IsNotNull(testUser.Publisher.Address);
                Assert.AreEqual(testUser.Publisher.Address.Street, user.Publisher.Address.Street);
                Assert.AreEqual(testUser.Publisher.Address.City, user.Publisher.Address.City);
                Assert.AreEqual(testUser.Publisher.Address.Region, user.Publisher.Address.Region);
                Assert.AreEqual(testUser.Publisher.Address.PostalCode, user.Publisher.Address.PostalCode);
                Assert.IsNotNull(testUser.Publisher.Address.Country);
                Assert.AreEqual(testUser.Publisher.Address.Country.Name, user.Publisher.Address.Country.Name);
                Assert.AreEqual(testUser.Publisher.Address.Country.IsoCode, user.Publisher.Address.Country.IsoCode);
            }
            if (testUser.RecordLabel != null)
            {
                Assert.AreEqual(testUser.RecordLabel.Name, user.RecordLabel.Name);
                Assert.AreEqual(testUser.RecordLabel.TaxId, user.RecordLabel.TaxId);
                Assert.AreEqual(testUser.RecordLabel.Email, user.RecordLabel.Email);
                Assert.AreEqual(testUser.RecordLabel.Phone, user.RecordLabel.Phone);
                Assert.IsNotNull(testUser.RecordLabel.Address);
                Assert.AreEqual(testUser.RecordLabel.Address.Street, user.RecordLabel.Address.Street);
                Assert.AreEqual(testUser.RecordLabel.Address.City, user.RecordLabel.Address.City);
                Assert.AreEqual(testUser.RecordLabel.Address.Region, user.RecordLabel.Address.Region);
                Assert.AreEqual(testUser.RecordLabel.Address.PostalCode, user.RecordLabel.Address.PostalCode);
                Assert.IsNotNull(testUser.RecordLabel.Address.Country);
                Assert.AreEqual(testUser.RecordLabel.Address.Country.Name, user.RecordLabel.Address.Country.Name);
                Assert.AreEqual(testUser.RecordLabel.Address.Country.IsoCode, user.RecordLabel.Address.Country.IsoCode);
            }

            var person         = user.Person;
            var removeUserTask = new RemoveUser(DbContext);
            var removeResult   = removeUserTask.DoTask(user);

            Assert.IsTrue(removeResult.Success);
            Assert.IsNull(removeResult.Exception);

            var removePersonTask   = new RemovePerson(DbContext);
            var removePersonResult = removePersonTask.DoTask(person);

            Assert.IsTrue(removePersonResult.Success);
            Assert.IsNull(removePersonResult.Exception);
        }