public async Task DomainService_CallSubmitDirectly()
        {
            DomainServiceDescription description      = DomainServiceDescription.GetDescription(typeof(DomainMethod_ValidProvider_MultipleMethods));
            List <ChangeSetEntry>    changeSetEntries = new List <ChangeSetEntry>();

            ChangeSetEntry processCityOperation = new ChangeSetEntry();

            processCityOperation.Entity = new City {
                Name = "Redmond", CountyName = "King", StateName = "WA"
            };
            processCityOperation.DomainOperationEntry = description.GetCustomMethod(typeof(City), "ProcessCity");
            processCityOperation.Operation            = DomainOperation.Update;
            processCityOperation.EntityActions        = new EntityActionCollection {
                { "ProcessCity", new object[] { new byte[] { byte.MaxValue, byte.MinValue, 123 } } }
            };
            changeSetEntries.Add(processCityOperation);

            ChangeSet changeset = new ChangeSet(changeSetEntries);
            DomainMethod_ValidProvider_MultipleMethods myTestProvider = ServerTestHelper.CreateInitializedDomainService <DomainMethod_ValidProvider_MultipleMethods>(DomainOperationType.Submit);
            await myTestProvider.SubmitAsync(changeset, CancellationToken.None);

            // check that the domain services have invoked the domain method correctly by checking the internal variables set
            Assert.AreEqual <string>("ProcessCity_", myTestProvider.Invoked);
            Assert.AreEqual <int>(3, myTestProvider.InputData.Length);
            Assert.AreEqual <byte>(123, myTestProvider.InputData[2]);
        }
        public void DomainService_CallSubmitWithMultipleInvocations()
        {
            DomainServiceDescription description      = DomainServiceDescription.GetDescription(typeof(DomainMethod_ValidProvider_MultipleMethods));
            List <ChangeSetEntry>    changeSetEntries = new List <ChangeSetEntry>();

            ChangeSetEntry processCountyOperation = new ChangeSetEntry();

            processCountyOperation.Id     = 1;
            processCountyOperation.Entity = new County {
                Name = "King", StateName = "WA"
            };
            processCountyOperation.DomainOperationEntry = description.GetCustomMethod(typeof(County), "ProcessCounty");
            processCountyOperation.Operation            = DomainOperation.Update;
            processCountyOperation.EntityActions        = new EntityActionCollection {
                { "ProcessCounty", null }
            };
            changeSetEntries.Add(processCountyOperation);

            ChangeSetEntry processCityOperation = new ChangeSetEntry();

            processCityOperation.Id     = 2;
            processCityOperation.Entity = new City {
                Name = "Redmond", CountyName = "King", StateName = "WA"
            };
            processCityOperation.DomainOperationEntry = description.GetCustomMethod(typeof(City), "ProcessCity");
            processCityOperation.Operation            = DomainOperation.Update;
            processCityOperation.EntityActions        = new EntityActionCollection {
                { "ProcessCity", new object[] { new byte[] { 123, 1 } } }
            };
            changeSetEntries.Add(processCityOperation);

            ChangeSet changeset = new ChangeSet(changeSetEntries);
            DomainMethod_ValidProvider_MultipleMethods myTestProvider = ServerTestHelper.CreateInitializedDomainService <DomainMethod_ValidProvider_MultipleMethods>(DomainOperationType.Submit);

            myTestProvider.Submit(changeset);

            // check that the domain services have invoked the domain method correctly by checking the internal variables set
            Assert.AreEqual <string>("ProcessCounty_ProcessCity_", myTestProvider.Invoked);
            Assert.AreEqual <int>(2, myTestProvider.InputData.Length);
        }