public void DecorateClassNonBodyTest()
        {
            var decorator = new BodyPropertyDecorator(new DefaultObjectTypeProvider("Schema"));
            var resource = new MockResource();
            var method = new MockMethod() { Name = "Test", HasBody = false };
            var decl = new CodeTypeDeclaration();
            var resourceDecl = new CodeTypeDeclaration();
            decorator.DecorateClass(resource, method, decl, resourceDecl);

            Assert.AreEqual(0, decl.Members.Count);
        }
        public void GenerateBodyPropertyTest()
        {
            var decorator = new BodyPropertyDecorator(new DefaultObjectTypeProvider("Schema"));
            var method = new MockMethod() { Name = "Test", RequestType = "SomeSchema", HasBody = true };
            var bodyType = new CodeTypeReference(typeof(object));
            CodeTypeMemberCollection newMembers = decorator.GenerateBodyProperty(method, bodyType);

            // Confirm that the result consists out of a field and a property.
            Assert.AreEqual(2, newMembers.Count);
            CollectionAssert.AreEqual(
                new[] { typeof(CodeMemberField), typeof(CodeMemberProperty) },
                (from CodeTypeMember m in newMembers select m.GetType()));
        }
        public void DecorateClassTest()
        {
            var decorator = new BodyPropertyDecorator(new DefaultObjectTypeProvider("Schema"));
            var resource = new MockResource();
            var method = new MockMethod() { Name = "Test", RequestType = "SomeSchema", HasBody = true };
            var decl = new CodeTypeDeclaration();
            var resourceDecl = new CodeTypeDeclaration();
            decorator.DecorateClass(resource, method, decl, resourceDecl);

            Assert.AreEqual(3, decl.Members.Count);
            Assert.IsInstanceOf<CodeMemberField>(decl.Members[0]);
            Assert.IsInstanceOf<CodeMemberProperty>(decl.Members[1]);
            Assert.AreEqual("Body", decl.Members[1].Name);
            Assert.IsInstanceOf<CodeMemberMethod>(decl.Members[2]);
            Assert.AreEqual("GetBody", decl.Members[2].Name);
        }
        public void GenerateGetBodyOverrideTest()
        {
            var decorator = new BodyPropertyDecorator(new DefaultObjectTypeProvider("Schema"));
            var method = new MockMethod() { Name = "Test", RequestType = "SomeSchema", HasBody = true };
            CodeMemberMethod newMethod = decorator.GenerateGetBodyOverride(method);

            Assert.AreEqual(ServiceRequest<object>.GetBodyMethodName, newMethod.Name);
            Assert.AreEqual(MemberAttributes.Override | MemberAttributes.Family, newMethod.Attributes);
            Assert.AreEqual(0, newMethod.Parameters.Count);
            Assert.AreEqual(typeof(object).FullName, newMethod.ReturnType.BaseType);
            Assert.AreEqual(1, newMethod.Statements.Count);
        }