protected void ExpectCommitValidateEvents(params DomainObject[] domainObjects)
 {
     using (_mockRepository.Ordered())
     {
         ListenerMock
         .Expect(mock => mock.TransactionCommitValidate(Arg.Is(_transaction), ArgIsPersistableDataSet(domainObjects)))
         .WhenCalled(mi => Assert.That(_transaction.HasChanged(), Is.True, "CommitValidate: last event before actual commit."));
         ExtensionMock
         .Expect(mock => mock.CommitValidate(Arg.Is(_transaction), ArgIsPersistableDataSet(domainObjects)));
     }
 }
        public void ProcessRequest_ActionDoesntExist_ThrowActionMissingException()
        {
            var application = Make_PortalApplication();
            var extension   = new ExtensionMock(application);
            var module      = new Mock<IModule>();
            var parameters  = new Dictionary<string, string> { { "format", "XML" } };
            var request     = new PortalRequest((Protocol)Protocol.V6, (string)"test", (string)"missing", parameters, null);
            module.Setup(m => m.GetExtensionNames(Protocol.V6)).Returns(new[] { "test" });
            module.Setup(m => m.GetExtension(Protocol.V6, "test")).Returns(extension);
            application.AddModule(module.Object);
            request.Stopwatch.Reset();

            application.ProcessRequest(request);
        }
        protected AllMethodOptions ExpectCommittedEventsWithCustomOptions(params Tuple <DomainObject, DomainObjectMockEventReceiver>[] domainObjectsAndMocks)
        {
            using (_mockRepository.Ordered())
            {
                var domainObjectOptions = new List <IMethodOptions <RhinoMocksExtensions.VoidType> > (domainObjectsAndMocks.Length);
                using (_mockRepository.Unordered())
                {
                    domainObjectOptions.AddRange(domainObjectsAndMocks.Select(t => t.Item2.Expect(mock => mock.Committed())));
                }

                var domainObjects = domainObjectsAndMocks.Select(t => t.Item1).ToArray();

                var transactionOptions = TransactionMockEventReceiver.Expect(mock => mock.Committed(domainObjects));
                var extensionOptions   = ExtensionMock.Expect(mock => mock.Committed(Arg.Is(_transaction), ArgIsDomainObjectSet(domainObjects)));
                ListenerMock.Expect(mock => mock.TransactionCommitted(Arg.Is(_transaction), ArgIsDomainObjectSet(domainObjects)));

                return(new AllMethodOptions(extensionOptions, transactionOptions, domainObjectOptions.ToArray()));
            }
        }
        public void ProcessRequest_ExtensionThrowsAnException_ReturnResponseWithError()
        {
            var application = Make_PortalApplication();
            var module      = new Mock<IModule>();
            var parameters  = new Dictionary<string, string> { { "½ormat", "XML" } };
            var request     = new PortalRequest((Protocol)Protocol.V5, (string)"test", (string)"error", parameters, null);
            var extension   = new ExtensionMock(application);
            module.Setup(m => m.GetExtensionNames(Protocol.V5)).Returns(new[] { "test" });
            module.Setup(m => m.GetExtension(Protocol.V5, "test")).Returns(extension);
            application.AddModule(module.Object);
            request.Stopwatch.Reset();

            var response = application.ProcessRequest(request);

            using (var stream = new StreamReader(response.GetResponseStream()))
            {
                var readToEnd = stream.ReadToEnd();
                Assert.That(readToEnd, Is.EqualTo("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><PortalResult Duration=\"0\"><ModuleResults><ModuleResult Fullname=\"Portal\" Duration=\"0\" Count=\"1\"><Results><Error FullName=\"System.ArgumentException\"><Message>Value does not fall within the expected range.</Message></Error></Results></ModuleResult></ModuleResults></PortalResult>"));
            }
        }
        public void ProcessRequest_RequestWithReturnFormatXml_GetResponseStream()
        {
            var application = Make_PortalApplication();
            var extension   = new ExtensionMock(application);
            var module      = new Mock<IModule>();
            var request     = Make_TestRequest();
            request.Parameters["format"] = "XML2";
            module.Setup(m => m.GetExtensionNames(Protocol.V6)).Returns(new[] { "test" });
            module.Setup(m => m.GetExtension(Protocol.V6, "test")).Returns(extension);
            application.AddModule(module.Object);
            request.Stopwatch.Reset();

            var response = application.ProcessRequest(request);

            using (var stream = new StreamReader(response.GetResponseStream()))
            {
                Assert.That(stream.ReadToEnd(), Is.EqualTo("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><PortalResponse><Header><Duration>0</Duration></Header><Body><Count>1</Count><TotalCount>1</TotalCount><Results><Result FullName=\"Chaos.Portal.Core.Data.Model.ScalarResult\"><Value>1</Value></Result></Results></Body><Error /></PortalResponse>"));
            }
        }
        public void ProcessRequest_RequestWithReturnFormatXml_ReturnResponseHasReturnFormatXml()
        {
            var application = Make_PortalApplication();
            var extension   = new ExtensionMock(application);
            var module      = new Mock<IModule>();
            var request     = Make_TestRequest();
            module.Setup(m => m.GetExtensionNames(Protocol.V6)).Returns(new[] { "test" });
            module.Setup(m => m.GetExtension(Protocol.V6, "test")).Returns(extension);
            application.AddModule(module.Object);

            var response = application.ProcessRequest(request);

            Assert.That(response.ReturnFormat, Is.EqualTo(ReturnFormat.XML));
        }