public void VerifyThatExceptionIsThrownWhenRequiredRdlIsOutOfSiteDirectoryOrLeadsToCircularDependencyOnCreate()
        {
            this.sideEffect =
                new SiteReferenceDataLibrarySideEffect()
            {
                SiteReferenceDataLibraryService =
                    this.siteReferenceDataLibraryService.Object
            };

            // Out of the store
            var id = this.siteReferenceDataLibraryD.Iid;

            this.siteReferenceDataLibraryA.RequiredRdl = id;

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeCreate(
                    this.siteReferenceDataLibraryA,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object));
            this.siteReferenceDataLibraryA.RequiredRdl = this.siteReferenceDataLibraryB.Iid;

            // Leads to circular dependency
            id = this.siteReferenceDataLibraryA.Iid;
            this.siteReferenceDataLibraryC.RequiredRdl = id;

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeCreate(
                    this.siteReferenceDataLibraryC,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object));
        }
        public void VerifyThatExceptionIsThrownWhenRequiredRdlIsRdlItselfOnCreate()
        {
            this.sideEffect =
                new SiteReferenceDataLibrarySideEffect()
            {
                SiteReferenceDataLibraryService =
                    this.siteReferenceDataLibraryService.Object
            };

            var id = this.siteReferenceDataLibraryA.Iid;

            this.siteReferenceDataLibraryA.RequiredRdl = id;

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeCreate(
                    this.siteReferenceDataLibraryA,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object));
        }
        public void VerifyThatExceptionIsThrownWhenRequiredRdlIsOutOfSiteDirectoryOrLeadsToCircularDependencyOnUpdate()
        {
            this.sideEffect =
                new SiteReferenceDataLibrarySideEffect()
            {
                SiteReferenceDataLibraryService =
                    this.siteReferenceDataLibraryService.Object
            };

            // Out of the store
            this.rawUpdateInfo = new ClasslessDTO()
            {
                { TestKey, this.siteReferenceDataLibraryD.Iid }
            };

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeUpdate(
                    this.siteReferenceDataLibraryA,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object,
                    this.rawUpdateInfo));

            // Leads to circular dependency
            this.rawUpdateInfo = new ClasslessDTO()
            {
                { TestKey, this.siteReferenceDataLibraryA.Iid }
            };

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeUpdate(
                    this.siteReferenceDataLibraryC,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object,
                    this.rawUpdateInfo));
        }
        public void VerifyThatExceptionIsThrownWhenRequiredRdlIsRdlItselfOnUpdate()
        {
            this.sideEffect =
                new SiteReferenceDataLibrarySideEffect()
            {
                SiteReferenceDataLibraryService =
                    this.siteReferenceDataLibraryService.Object
            };

            this.rawUpdateInfo = new ClasslessDTO()
            {
                { TestKey, this.siteReferenceDataLibraryA.Iid }
            };

            Assert.Throws <AcyclicValidationException>(
                () => this.sideEffect.BeforeUpdate(
                    this.siteReferenceDataLibraryA,
                    this.siteDirectory,
                    this.npgsqlTransaction,
                    "partition",
                    this.securityContext.Object,
                    this.rawUpdateInfo));
        }