예제 #1
0
        public async Task GasStationWithDieselPriceSubmitted_SubmitAnotherDieselPrice_PricesSubmissionIsRejected()
        {
            // given

            var gasStationId = await CreateGasStation();

            var submitPriceModel1 = new SubmitPriceModel
            {
                Amount       = 4,
                FuelType     = FuelType.Diesel,
                GasStationId = gasStationId
            };

            await fixture.HttpClient.PostJsonAsync(Routes.PriceSubmissions.ToString(), submitPriceModel1);

            // when

            var submitPriceModel2 = new SubmitPriceModel
            {
                Amount       = 5,
                FuelType     = FuelType.Diesel,
                GasStationId = gasStationId
            };

            var jsonContent = JsonConvert.SerializeObject(submitPriceModel2);
            var request     = new StringContent(jsonContent, Encoding.UTF8, "application/json");
            var response    = await fixture.HttpClient.PostAsync(Routes.PriceSubmissions, request);

            // then

            response.IsSuccessStatusCode.Should().BeFalse();
        }
예제 #2
0
        public async Task GasStationWithDieselPriceSubmitted_SubmitPetrolPrice_PricesIsSubmittedSuccessfully()
        {
            // given

            var gasStationId = await CreateGasStation();

            var submitPriceModelDiesel = new SubmitPriceModel
            {
                Amount       = 4,
                FuelType     = FuelType.Diesel,
                GasStationId = gasStationId
            };

            await fixture.HttpClient.PostJsonAsync(Routes.PriceSubmissions.ToString(), submitPriceModelDiesel);

            // when

            var submitPriceModelPetrol = new SubmitPriceModel
            {
                Amount       = 5,
                FuelType     = FuelType.Pb98,
                GasStationId = gasStationId
            };

            var createdAt = await fixture.HttpClient.PostJsonAsync <CreatedResponse>(Routes.PriceSubmissions.ToString(), submitPriceModelPetrol);

            // then

            var priceSubmission = await fixture.HttpClient.GetJsonAsync <PriceSubmission>($"{ Routes.PriceSubmissions }/{ createdAt.Id }");

            priceSubmission.Should().BeEquivalentTo(submitPriceModelPetrol);
        }
예제 #3
0
        public async Task PriceSubmission_Delete_PriceSubmissionIsDeleted()
        {
            // given

            var gasStationId = await CreateGasStation();

            var submitPriceModel = new SubmitPriceModel
            {
                Amount       = 5,
                FuelType     = FuelType.Pb98,
                GasStationId = gasStationId
            };

            var createdAt = await fixture.HttpClient.PostJsonAsync <CreatedResponse>(Routes.PriceSubmissions.ToString(), submitPriceModel);

            // when

            await fixture.HttpClient.DeleteAsync($"{ Routes.PriceSubmissions }/{ createdAt.Id }");

            // then

            var response = await fixture.HttpClient.GetAsync($"{ Routes.PriceSubmissions }/{ createdAt.Id }");

            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
예제 #4
0
        public async Task GasStationWithSomePriceSubmissions_GetList_SomePriceSubmissionsAreRetrived()
        {
            // given

            var gasStationId = await CreateGasStation();

            var submitPriceModel1 = new SubmitPriceModel
            {
                Amount       = 5,
                FuelType     = FuelType.Pb98,
                GasStationId = gasStationId
            };

            var submitPriceModel2 = new SubmitPriceModel
            {
                Amount       = 4,
                FuelType     = FuelType.Diesel,
                GasStationId = gasStationId
            };

            await fixture.HttpClient.PostJsonAsync(Routes.PriceSubmissions.ToString(), submitPriceModel1);

            await fixture.HttpClient.PostJsonAsync(Routes.PriceSubmissions.ToString(), submitPriceModel2);

            // when

            var priceSubmissions = await fixture.HttpClient.GetJsonAsync <PageResponse <PriceSubmission> >(Routes.PriceSubmissions.ToString());

            priceSubmissions.Results.Should().NotBeEmpty();
        }
예제 #5
0
        public async Task <long> SubmitPrice(SubmitPriceModel model)
        {
            var submission = new Entities.PriceSubmission(
                gasStationId: model.GasStationId,
                submissionDate: DateTime.UtcNow.Date,
                amount: model.Amount,
                fuelType: model.FuelType);

            auditMetadataProvider.AddAuditMetadataToNewEntity(submission);
            dbContext.PriceSubmissions.Add(submission);
            await dbContext.SaveChangesAsync();

            return(submission.Id);
        }
예제 #6
0
        private async Task <long> CreatePriceSumission()
        {
            var addModel = new AddGasStationModel {
                Name = "Amic Energy"
            };
            var gasStationCreatedAt = await fixture.HttpClient.PostJsonAsync <CreatedResponse>(Routes.GasStations.ToString(), addModel);

            var submitModel = new SubmitPriceModel
            {
                Amount       = 5,
                FuelType     = FuelType.Diesel,
                GasStationId = gasStationCreatedAt.Id
            };

            var priceSubmitedAt = await fixture.HttpClient.PostJsonAsync <CreatedResponse>(Routes.PriceSubmissions.ToString(), submitModel);

            return(priceSubmitedAt.Id);
        }
예제 #7
0
        public async Task <IActionResult> Create([FromBody] SubmitPriceModel model)
        {
            var id = await priceSubmissionsService.SubmitPrice(model);

            return(CreatedAtAction(nameof(Get), new { id }));
        }