public async Task CreateAsync_WithEmptyNameShouldThrowArgumentNullException()
        {
            MapperInitializer.InitializeMapper();
            var context                 = ApplicationDbContextInMemoryFactory.InitializeContext();
            var truckService            = new TruckService(context);
            var createTruckServiceModel = new CreateTruckServiceModel();
            var truckRegistrationNumber = "  ";

            createTruckServiceModel.RegistrationNumber = truckRegistrationNumber;

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await truckService.CreateAsync(createTruckServiceModel);
            });
        }
        public async Task CreateAsync_WithOverMaxNameLengthShouldThrowInvalidOperationException()
        {
            MapperInitializer.InitializeMapper();
            var context                 = ApplicationDbContextInMemoryFactory.InitializeContext();
            var truckService            = new TruckService(context);
            var createTruckServiceModel = new CreateTruckServiceModel();
            var truckRegistrationNumber = "qwertyuiop qwertyuiop qwertyuiop qwertyuiop qwertyuiop";

            createTruckServiceModel.RegistrationNumber = truckRegistrationNumber;
            var message = "Truck's Registration number cannot be more than 8 characters.";

            var exception = await Assert.ThrowsAsync <InvalidOperationException>(async() =>
            {
                await truckService.CreateAsync(createTruckServiceModel);
            });

            Assert.Equal(message, exception.Message);
        }
        public async Task CreateAsync_ShouldSuccessfullyCreate()
        {
            MapperInitializer.InitializeMapper();
            var context                 = ApplicationDbContextInMemoryFactory.InitializeContext();
            var truckService            = new TruckService(context);
            var createTruckServiceModel = new CreateTruckServiceModel();
            var truckRegistrationNumber = "TRN 1";

            createTruckServiceModel.RegistrationNumber = truckRegistrationNumber;

            await truckService.CreateAsync(createTruckServiceModel);

            var expectedResult = truckRegistrationNumber;
            var actualResult   = truckService
                                 .All()
                                 .First()
                                 .RegistrationNumber;

            Assert.True(expectedResult == actualResult);
        }
        public async Task CreateAsync_WithExistingNameShouldThrowInvalidOperationException()
        {
            MapperInitializer.InitializeMapper();
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();

            await this.SeedDataAsync(context);

            var truckService            = new TruckService(context);
            var createTruckServiceModel = new CreateTruckServiceModel();
            var truckRegistrationNumber = "TRN 1";

            createTruckServiceModel.RegistrationNumber = truckRegistrationNumber;
            var message = "Truck's Registration number already exists.";

            var exception = await Assert.ThrowsAsync <InvalidOperationException>(async() =>
            {
                await truckService.CreateAsync(createTruckServiceModel);
            });

            Assert.Equal(message, exception.Message);
        }