Exemplo n.º 1
0
        public async Task ApplyRequest_PATCH()
        {
            //POST request
            await PostTestExampleRequest();

            Assert.AreEqual(1, Context.ExampleRequests.Count());
            await Manager.ApplyRequest(Context.ExampleRequests.First().Id);

            Assert.AreEqual(0, Context.ExampleRequests.Count());
            Assert.AreEqual(1, Context.Examples.Count());
            Assert.IsNull(Context.Examples.First().Request);
            Assert.AreEqual(3, Context.ExampleCodeLines.Count());
            Assert.AreEqual("This is a test example", Context.Examples.First().Description);
            var ex = new ExampleRequestCreate()
            {
                Message = "Patching an example",
                Method  = Data.Models.Examples.ExampleRequestType.PATCH,
                ApplyTo = 1,
                Data    = new ExampleCreate()
                {
                    Description = "This has been updated",
                    Code        = new ExampleCreate.CodeLine[]
                    {
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "void main() { }",
                            Comment = "inline main function"
                        }
                    }
                }
            }.CreateModel();

            ex.Data.Symbol = Context.Symbols.First();
            ex.Data.User   = User.User;
            await Manager.PostAsync(ex);

            Assert.AreEqual(1, Context.ExampleRequests.Count());
            Assert.IsNull(Context.Examples.First().Request);
            Assert.IsNotNull(Context.Examples.Last().Request);
            await Manager.ApplyRequest(Context.ExampleRequests.First().Id);

            Assert.AreEqual(0, Context.ExampleRequests.Count());
            Assert.AreEqual("This has been updated", Context.Examples.First().Description);
            Assert.AreEqual(1, Context.ExampleCodeLines.Count());
            Assert.AreEqual("void main() { }", Context.Examples.First().Code.First().Data);
            Assert.AreEqual("inline main function", Context.Examples.First().Code.First().Comment);
        }
Exemplo n.º 2
0
        private async Task PostTestExampleRequest()
        {
            var sym = await PostTestSymbol(new Symbols.SymbolController(new SymbolManager(Context, new Config()
            {
                MaxSymsPerPage = 15
            }), User));

            var ex = new ExampleRequestCreate()
            {
                Message = "This is a test",
                Method  = Data.Models.Examples.ExampleRequestType.POST,
                Data    = new ExampleCreate()
                {
                    Description = "This is a test example",
                    Code        = new ExampleCreate.CodeLine[]
                    {
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "void main()",
                            Comment = ""
                        },
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "{",
                            Comment = ""
                        },
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "}",
                            Comment = ""
                        }
                    }
                }
            }.CreateModel();

            ex.Data.Symbol = sym;
            ex.Data.User   = User.User;
            await Manager.PostAsync(ex);
        }
Exemplo n.º 3
0
        public async Task Post_Error_Invalid()
        {
            var sym = await PostTestSymbol(new Symbols.SymbolController(new SymbolManager(Context, new Config()
            {
                MaxSymsPerPage = 15
            }), User));

            var ex = new ExampleRequestCreate()
            {
                Message = "This is a test",
                Method  = Data.Models.Examples.ExampleRequestType.POST,
                Data    = new ExampleCreate()
                {
                    Description = "This is a test example",
                    Code        = new ExampleCreate.CodeLine[]
                    {
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "void main()",
                            Comment = ""
                        },
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "{",
                            Comment = ""
                        },
                        new ExampleCreate.CodeLine()
                        {
                            Data    = "}",
                            Comment = ""
                        }
                    }
                }
            }.CreateModel();

            ex.Data.Symbol = sym;
            ex.Data.User   = User.User;

            //Invalid POST
            var old = ex.Data;

            ex.Data = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
            ex.Data      = old;
            ex.ApplyToId = 1;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
            ex.ApplyToId   = null;
            ex.Data.Symbol = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
            ex.Data.User = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));

            //Invalid PATCH
            ex.Type = Data.Models.Examples.ExampleRequestType.PATCH;
            old     = ex.Data;
            ex.Data = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
            ex.Data      = old;
            ex.ApplyToId = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));

            //Invalid DELETE
            ex.Type      = Data.Models.Examples.ExampleRequestType.DELETE;
            ex.ApplyToId = 1;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
            ex.Data      = null;
            ex.ApplyToId = null;
            Assert.ThrowsAsync <Shared.Exceptions.InvalidResource>(() => Manager.PostAsync(ex));
        }