public void CanRemove_should_throw_exception_if_contributor_id_is_null()
        {
            var command = new RemoveContributor();

            ValidationAssert.Throws(() => GuardAppContributors.CanRemove(command, App(contributors_0)),
                                    new ValidationError("Contributor ID or email is required.", "ContributorId"));
        }
        public void CanRemove_should_throw_exception_if_contributor_not_found()
        {
            var command = new RemoveContributor {
                ContributorId = "1"
            };

            Assert.Throws <DomainObjectNotFoundException>(() => GuardAppContributors.CanRemove(command, App(contributors_0)));
        }
        public void CanRemove_should_not_throw_exception_if_contributor_not_only_owner()
        {
            var command = new RemoveContributor {
                ContributorId = "1"
            };

            var contributors_1 = contributors_0.Assign("1", Role.Owner);
            var contributors_2 = contributors_1.Assign("2", Role.Owner);

            GuardAppContributors.CanRemove(command, App(contributors_2));
        }
        public void CanRemove_should_throw_exception_if_contributor_is_only_owner()
        {
            var command = new RemoveContributor {
                ContributorId = "1"
            };

            var contributors_1 = contributors_0.Assign("1", Role.Owner);
            var contributors_2 = contributors_1.Assign("2", Role.Editor);

            ValidationAssert.Throws(() => GuardAppContributors.CanRemove(command, App(contributors_2)),
                                    new ValidationError("Cannot remove the only owner."));
        }