public void PostModelEmptyFiles()
        {
            var before = _context.RealEstateObject.Count();

            var modelMock = new Mock <IFormFile>();
            var model     = new RealEstateObject()
            {
                RealEstateType = RealEstateType.Apartment,
                Building       = "1",
                City           = "Пермь",
                Description    =
                    "Малоквартирный дом бизнес-класса. Все квартиры в нашем доме имеют свободную планировку. \nКвартира расположена на 3 этаже 12 этажного дома. Общая площадь квартиры 115,4 кв.м., жилая 66 кв.м., просторная прихожая, высокие потолки 2,9м. \nВ нашей квартире имеется: большая кухня-столовая, большая ванная комната с отдельной душевой кабиной и санузлом, гостиная, спальня/детская, спальня, 2 гардеробных комнаты, лоджия. На кухне, в ванной комнате и коридоре установлен теплый пол. В квартире сделан ремонт из качественных европейских материалов. \nДоступ на территорию дома ограничен для посторонних лиц. Ограждение дома оборудовано автоматическими воротами. На всей территории установлено видеонаблюдение. В подъезде, для Вашей безопасности, работает охрана.",
                Floor  = "3/5",
                Region = "Пермский край",
                Rooms  = 1,
                Square = 23.4,
                Street = "Ленина",
                Code   = "59000000123"
            };

            modelMock.Setup(i => i.OpenReadStream()).Returns(model.ToJsonStream());
            var actual = _controller.Post(modelMock.Object, null);
            var result = actual as CreatedODataResult <RealEstateObject>;

            Assert.That(result, Is.Not.Null);
            var after = _context.RealEstateObject.Count();

            Assert.That(after, Is.EqualTo(before + 1));
        }
        public void PutWithFile()
        {
            var before = _context.RealEstateObject.Count();
            //Model
            var modelMock = new Mock <IFormFile>();
            var model     = new RealEstateObject()
            {
                RealEstateType = RealEstateType.Apartment,
                Building       = "1",
                City           = "Пермь",
                Description    =
                    "Малоквартирный дом бизнес-класса. Все квартиры в нашем доме имеют свободную планировку. \nКвартира расположена на 3 этаже 12 этажного дома. Общая площадь квартиры 115,4 кв.м., жилая 66 кв.м., просторная прихожая, высокие потолки 2,9м. \nВ нашей квартире имеется: большая кухня-столовая, большая ванная комната с отдельной душевой кабиной и санузлом, гостиная, спальня/детская, спальня, 2 гардеробных комнаты, лоджия. На кухне, в ванной комнате и коридоре установлен теплый пол. В квартире сделан ремонт из качественных европейских материалов. \nДоступ на территорию дома ограничен для посторонних лиц. Ограждение дома оборудовано автоматическими воротами. На всей территории установлено видеонаблюдение. В подъезде, для Вашей безопасности, работает охрана.",
                Floor  = "3/5",
                Region = "Пермский край",
                Rooms  = 1,
                Square = 23.4,
                Street = "Ленина",
                Code   = "59000000123",
                RealEstateObjectFile = new HashSet <RealEstateObjectFile>()
                {
                    new RealEstateObjectFile()
                    {
                        Name = "test-tmp.txt"
                    },
                    new RealEstateObjectFile()
                    {
                        Name = "test-tmp-1.txt"
                    }
                }
            };

            modelMock.Setup(i => i.OpenReadStream()).Returns(model.ToJsonStream());
            //File
            var fileMock = new Mock <IFormFile>();

            fileMock.Setup(i => i.OpenReadStream()).Returns("Some text".ToStream());
            fileMock.SetupGet(i => i.FileName).Returns("some.txt");

            var actual = _controller.Put(modelMock.Object, new List <IFormFile>()
            {
                fileMock.Object
            }, 3);
            var result = actual as OkObjectResult;

            Assert.That(result, Is.Not.Null);

            var after = _context.RealEstateObject.Count();

            Assert.That(after, Is.EqualTo(before));

            Assert.That(_context.RealEstateObjectFile.Count(i => i.RealEstateObjectId == 3), Is.EqualTo(3));
            var newFile = _context.RealEstateObjectFile.LastOrDefault(i => i.RealEstateObjectId == 3);

            var path = Path.Combine(Path.GetTempPath(), "photos", newFile.Name);

            Assert.That(File.Exists(path), Is.True);

            File.Delete(path);
        }
        public void PutModelInvalid()
        {
            var modelMock = new Mock <IFormFile>();
            var model     = new RealEstateObject();

            modelMock.Setup(i => i.OpenReadStream()).Returns(model.ToJsonStream());
            _controller.ValidateViewModel(model);

            var actual = _controller.Put(modelMock.Object, null, 100);

            Assert.That(actual, Is.InstanceOf <NotFoundResult>());
        }
        public void PostModelInvalid()
        {
            var modelMock = new Mock <IFormFile>();
            var model     = new RealEstateObject();

            modelMock.Setup(i => i.OpenReadStream()).Returns(model.ToJsonStream());
            _controller.ValidateViewModel(model);

            var actual = _controller.Post(modelMock.Object, null);
            var result = actual as BadRequestObjectResult;

            Assert.That(result, Is.Not.Null);
        }
        public void PutEmptyFiles()
        {
            var before = _context.RealEstateObject.Count();

            var modelMock = new Mock <IFormFile>();
            var model     = new RealEstateObject()
            {
                RealEstateType = RealEstateType.House,
                Building       = "Building is changed",
                City           = "City is changed",
                Description    = "Description is changed",
                Floor          = "Floor is changed",
                Region         = "Region is changed",
                Rooms          = 2,
                Square         = 100,
                Street         = "Street is changed",
                Code           = "Code is changed"
            };


            modelMock.Setup(i => i.OpenReadStream()).Returns(model.ToJsonStream());
            var actual = _controller.Put(modelMock.Object, null, 1);
            var result = actual as OkObjectResult;

            Assert.That(result, Is.Not.Null);
            var after = _context.RealEstateObject.Count();

            Assert.That(after, Is.EqualTo(before));

            var changed = _context.RealEstateObject.Find(1);

            Assert.That(changed.Description, Is.EqualTo("Description is changed"));
            Assert.That(changed.Street, Is.EqualTo("Street is changed"));
            Assert.That(changed.RealEstateType, Is.EqualTo(RealEstateType.House));
            Assert.That(changed.Building, Is.EqualTo("Building is changed"));
            Assert.That(changed.City, Is.EqualTo("City is changed"));
            Assert.That(changed.Floor, Is.EqualTo("Floor is changed"));
            Assert.That(changed.Region, Is.EqualTo("Region is changed"));
            Assert.That(changed.Rooms, Is.EqualTo(2));
            Assert.That(changed.Square, Is.EqualTo(100));
            Assert.That(changed.Code, Is.EqualTo("Code is changed"));
        }