Example #1
0
        public async Task <IActionResult> Post([FromBody] TrackCreateDTO trackCreateDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var id = await repository.Create(trackCreateDTO);

            return(CreatedAtAction(nameof(Get), new { id }, null));
        }
Example #2
0
        public async void postWithBadTrackReturnsBadRequest()
        {
            var track = new TrackCreateDTO()
            {
            };
            var mockRepository = new Mock <ITrackRepository>();
            var controller     = new TracksController(mockRepository.Object);

            controller.ModelState.AddModelError(string.Empty, "Error");

            var response = await controller.Post(track);

            Assert.IsType <BadRequestObjectResult>(response);
        }
Example #3
0
        public async void postWithGoodTrackReturnsOK()
        {
            var track = new TrackCreateDTO()
            {
                Name = "eat", LengthInMeters = 100, MaxCars = 50
            };
            var mockRepository = new Mock <ITrackRepository>();

            mockRepository.Setup(a => a.Create(track)).ReturnsAsync(1231);
            var controller = new TracksController(mockRepository.Object);
            var response   = await controller.Post(track) as CreatedAtActionResult;

            Assert.Equal("Get", response.ActionName);
            Assert.Equal(1231, response.RouteValues["id"]);
        }
        public async Task Delete_given_id_deletes_track()
        {
            var track = new TrackCreateDTO()
            {
                Name = "Awesome Track", MaxCars = 12, LengthInMeters = 5000
            };

            var repo = new TrackRepository(context);
            await repo.Create(track);

            var controller = new TracksController(repo);

            var response = await controller.Delete(1);

            Assert.IsType <OkResult>(response);
            Assert.Null(context.Tracks.Find(1));
        }
        public async Task Create_given_track_creates_track()
        {
            var expected = new TrackCreateDTO {
                Name = "Awesome Track"
            };

            var mock = new Mock <ITrackRepository>();

            mock.Setup(m => m.Create(expected)).ReturnsAsync(5);

            var controller = new TracksController(mock.Object);

            var actual = await controller.Post(expected) as CreatedAtActionResult;

            Assert.Equal("Get", actual.ActionName);
            Assert.Equal(5, actual.RouteValues["id"]);
        }
Example #6
0
        public async Task Create_given_track_calls_SaveChangesAsync()
        {
            var context = new Mock <ISlotCarContext>();

            context.Setup(c => c.Tracks.Add(It.IsAny <Track>()));

            using (var repository = new TrackRepository(context.Object))
            {
                var track = new TrackCreateDTO {
                    Name = "name"
                };

                await repository.Create(track);
            }

            context.Verify(c => c.SaveChangesAsync(default(CancellationToken)));
        }
        public async Task Update_given_id_updates_track()
        {
            var track = new TrackCreateDTO()
            {
                Name = "Awesome Track"
            };
            var updatedTrack = new TrackUpdateDTO()
            {
                Name = "Awesome Track", MaxCars = 12, LengthInMeters = 5000
            };

            var repo = new TrackRepository(context);
            await repo.Create(track);

            var controller = new TracksController(repo);
            var put        = await controller.Put(1, updatedTrack) as OkObjectResult;

            var actual = await repo.Find(1);

            Assert.Equal(updatedTrack.MaxCars, actual.MaxCars);
            Assert.Equal(updatedTrack.LengthInMeters, actual.LengthInMeters);
        }
Example #8
0
        public async Task Create_given_track_adds_it()
        {
            var entity  = default(Track);
            var context = new Mock <ISlotCarContext>();

            context.Setup(c => c.Tracks.Add(It.IsAny <Track>())).Callback <Track>(t => entity = t);

            using (var repository = new TrackRepository(context.Object))
            {
                var track = new TrackCreateDTO
                {
                    Name           = "name",
                    LengthInMeters = 12.5,
                    MaxCars        = 4
                };
                await repository.Create(track);
            }

            Assert.Equal("name", entity.Name);
            Assert.Equal(12.5, entity.LengthInMeters);
            Assert.Equal(4, entity.MaxCars);
        }
Example #9
0
        public async Task Create_given_track_returns_new_Id()
        {
            var entity = default(Track);

            var context = new Mock <ISlotCarContext>();

            context.Setup(c => c.Tracks.Add(It.IsAny <Track>()))
            .Callback <Track>(t => entity = t);
            context.Setup(c => c.SaveChangesAsync(default(CancellationToken)))
            .Returns(Task.FromResult(0))
            .Callback(() => entity.Id = 42);

            using (var repository = new TrackRepository(context.Object))
            {
                var track = new TrackCreateDTO {
                    Name = "name"
                };

                var id = await repository.Create(track);

                Assert.Equal(42, id);
            }
        }