public async Task CreateAsync_WithEmptyNameShouldThrowArgumentNullException()
        {
            MapperInitializer.InitializeMapper();
            var context                       = ApplicationDbContextInMemoryFactory.InitializeContext();
            var asphaltBaseService            = new AsphaltBaseService(context);
            var createAsphaltBaseServiceModel = new CreateAsphaltBaseServiceModel();
            var asphaltBaseName               = "  ";

            createAsphaltBaseServiceModel.Name = asphaltBaseName;

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await asphaltBaseService.CreateAsync(createAsphaltBaseServiceModel);
            });
        }
        public async Task CreateAsync_WithOverMaxNameLengthShouldThrowInvalidOperationException()
        {
            MapperInitializer.InitializeMapper();
            var context                       = ApplicationDbContextInMemoryFactory.InitializeContext();
            var asphaltBaseService            = new AsphaltBaseService(context);
            var createAsphaltBaseServiceModel = new CreateAsphaltBaseServiceModel();
            var asphaltBaseName               = "qwertyuiop qwertyuiop qwertyuiop qwertyuiop qwertyuiop";

            createAsphaltBaseServiceModel.Name = asphaltBaseName;
            var message = "Asphalt base's name cannot be more than 50 characters.";

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

            Assert.Equal(message, exception.Message);
        }
        public async Task CreateAsync_ShouldSuccessfullyCreate()
        {
            MapperInitializer.InitializeMapper();
            var context                       = ApplicationDbContextInMemoryFactory.InitializeContext();
            var asphaltBaseService            = new AsphaltBaseService(context);
            var createAsphaltBaseServiceModel = new CreateAsphaltBaseServiceModel();
            var asphaltBaseName               = "ABN 1";

            createAsphaltBaseServiceModel.Name = asphaltBaseName;

            await asphaltBaseService.CreateAsync(createAsphaltBaseServiceModel);

            var expectedResult = asphaltBaseName;
            var actualResult   = asphaltBaseService
                                 .All()
                                 .First()
                                 .Name;

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

            await this.SeedDataAsync(context);

            var asphaltBaseService            = new AsphaltBaseService(context);
            var createAsphaltBaseServiceModel = new CreateAsphaltBaseServiceModel();
            var asphaltBaseName = "ABN 1";

            createAsphaltBaseServiceModel.Name = asphaltBaseName;
            var message = "Asphalt base's name already exists.";

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

            Assert.Equal(message, exception.Message);
        }
Exemplo n.º 5
0
        public async Task CreateAsync(CreateAsphaltBaseServiceModel createAsphaltBaseServiceModel)
        {
            var asphaltBase = AutoMapperConfig.MapperInstance.Map <AsphaltBase>(createAsphaltBaseServiceModel);

            if (string.IsNullOrWhiteSpace(asphaltBase.Name))
            {
                throw new ArgumentNullException(EmptyAsphaltBaseErrorMessage);
            }

            if (await this.context.AsphaltBases.AnyAsync(ab => ab.Name == asphaltBase.Name))
            {
                throw new InvalidOperationException(AsphaltBaseExistErrorMessage);
            }

            if (asphaltBase.Name.Length > AttributesConstraints.AsphaltBaseNameMaxLength)
            {
                throw new InvalidOperationException(string.Format(AsphaltBaseNameMaxLengthErrorMessage, AttributesConstraints.AsphaltBaseNameMaxLength));
            }

            await this.context.AsphaltBases.AddAsync(asphaltBase);

            await this.context.SaveChangesAsync();
        }