public void GivenTheWrongChargeStationIsProvided()
 {
     _scenarioContext["createdChargeStation"] = new ChargeStationResource()
     {
         Id = new Guid()
     };
 }
        public async Task ThenTheConnectorShouldNotExistAnymore(int connectorId)
        {
            GroupResource group = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStation = await _chargeStationDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            await _connectorDriver.ShouldNotExistAnymore(group.Id, chargeStation.Id, connectorId);
        }
        public async Task ShouldCreateChargeStationSuccessfully(HttpResponseMessage response)
        {
            response.StatusCode.Should().Be(201);

            ChargeStationResource chargeStationResponse = await this.ParseFromResponse <ChargeStationResource>(response);

            chargeStationResponse.Id.Should().NotBeEmpty();
            chargeStationResponse.Name.Should().NotBeEmpty();
        }
        public async Task ShouldUpdateChargeStationSuccessfully(HttpResponseMessage response, string expectedName)
        {
            response.StatusCode.Should().Be(200);

            ChargeStationResource chargeStationResponse = await this.ParseFromResponse <ChargeStationResource>(response);

            if (!string.IsNullOrEmpty(expectedName))
            {
                chargeStationResponse.Name.Should().Be(expectedName);
            }
        }
Exemple #5
0
        public async Task WhenTheWrongChargeStationIsUpdated()
        {
            _scenarioContext["createdGroupResponse"].Should().NotBeNull();
            _scenarioContext["createdChargeStationResponse"].Should().NotBeNull();
            GroupResource groupResponse = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStation = await _chargeStationDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            SaveChargeStationResource _createChargeStation = ((SaveChargeStationResource)_scenarioContext["createChargeStation"]);

            _scenarioContext["updatedChargeStation"] = await _chargeStationDriver.UpdateChargeStation(groupResponse.Id, new Guid(), _createChargeStation.Name);
        }
        public async Task WhenTheConnectorIsDeleted(int connectorId)
        {
            GroupResource groupResource = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStationResource = await _chargeStationDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            chargeStationResource.Id.Should().NotBeEmpty();
            chargeStationResource.Name.Should().NotBeEmpty();

            _scenarioContext["deletedConnectorId"]       = connectorId;
            _scenarioContext["deletedConnectorResponse"] = await _connectorDriver.DeleteConnector(groupResource.Id, chargeStationResource.Id, connectorId);
        }
        public async Task WhenAConnectorIsUpdated(int connectorId)
        {
            _scenarioContext.Should().ContainKey("createdChargeStationResponse");
            _scenarioContext.Should().ContainKey("createdGroupResponse");
            _scenarioContext["createdGroupResponse"].Should().NotBeNull();
            _scenarioContext["createdChargeStationResponse"].Should().NotBeNull();


            GroupResource groupResponse = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStationResource = await _connectorDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            _scenarioContext["updatedConnector"] = await _connectorDriver.UpdateConnector(groupResponse.Id, chargeStationResource.Id, connectorId, ((SaveConnectorResource)_scenarioContext["createConnector"]).MaxCurrentAmp.Value);
        }
Exemple #8
0
        public async Task ThenShouldUpdateSuccessfullyAllConnectorsToMaxCurrentForAllChargeStations(float maxCurrent)
        {
            List <HttpResponseMessage> responses = (List <HttpResponseMessage>)_scenarioContext["chargeStationListResponses"];
            GroupResource groupResponse          = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            foreach (var response in responses)
            {
                ChargeStationResource chargeStationResource = await _chargeStationDriver.ParseFromResponse <ChargeStationResource>(response);

                var connectorResponse = await _connectorDriver.UpdateConnector(groupResponse.Id, chargeStationResource.Id, 1, maxCurrent);

                connectorResponse.StatusCode.Should().Be(200);
            }
        }
        public async Task WhenTheConnectorIsCreatedWithRequiredParametersMissing()
        {
            _scenarioContext.Should().ContainKey("createdChargeStationResponse");
            _scenarioContext.Should().ContainKey("createdGroupResponse");
            _scenarioContext["createdGroupResponse"].Should().NotBeNull();
            _scenarioContext["createdChargeStationResponse"].Should().NotBeNull();

            GroupResource groupResponse = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStationResource = await _groupDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            SaveConnectorResource createConnector = ((SaveConnectorResource)_scenarioContext["createConnector"]);

            _scenarioContext["createdConnector"] = await _connectorDriver.CreateConnectorWithEmptyPayload(groupResponse.Id, chargeStationResource.Id);
        }
        public async Task WhenTheConnectorIsCreated()
        {
            _scenarioContext.Should().ContainKey("createdChargeStationResponse");
            _scenarioContext.Should().ContainKey("createdGroupResponse");
            _scenarioContext["createdGroupResponse"].Should().NotBeNull();
            _scenarioContext["createdChargeStationResponse"].Should().NotBeNull();

            GroupResource groupResponse = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            ChargeStationResource chargeStationResource = _scenarioContext.ContainsKey("createdChargeStation") ? (ChargeStationResource)_scenarioContext["createdChargeStation"]
                : await _connectorDriver.ParseFromResponse <ChargeStationResource>((HttpResponseMessage)_scenarioContext["createdChargeStationResponse"]);

            SaveConnectorResource createConnector = ((SaveConnectorResource)_scenarioContext["createConnector"]);

            _scenarioContext["createdConnector"] = await _connectorDriver.CreateConnector(groupResponse.Id, chargeStationResource.Id, createConnector.MaxCurrentAmp.Value);
        }
Exemple #11
0
        public async Task ThenShouldCreateSuccessfullyConnectorsForAllChargeStations(int connectorsCount, float maxCurrent)
        {
            List <HttpResponseMessage> responses = (List <HttpResponseMessage>)_scenarioContext["chargeStationListResponses"];
            GroupResource groupResponse          = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

            foreach (var response in responses)
            {
                ChargeStationResource chargeStationResource = await _chargeStationDriver.ParseFromResponse <ChargeStationResource>(response);

                for (int i = 0; i < connectorsCount; i++)
                {
                    var connectorResponse = await _connectorDriver.CreateConnector(groupResponse.Id, chargeStationResource.Id, maxCurrent);

                    connectorResponse.StatusCode.Should().Be(201);
                }
            }
        }
Exemple #12
0
        public async Task <IActionResult> Patch(Guid id, [FromBody] PatchChargeStationResource value)
        {
            ChargeStation chargeStation = await _context.ChargeStation.FirstOrDefaultAsync(c => c.Id == id);

            if (chargeStation == null)
            {
                return(StatusCode(404));
            }

            if (!String.IsNullOrEmpty(value.Name))
            {
                chargeStation.Name = value.Name;
            }

            await _context.SaveChangesAsync();

            ChargeStationResource chargeStationUpdated = _mapper.Map <ChargeStationResource>(chargeStation);

            return(Ok(chargeStationUpdated));
        }
Exemple #13
0
        public async Task <ActionResult <ChargeStationResource> > PostChargeStation(Guid groupId, SaveChargeStationResource saveChargeStation)
        {
            Group group = await _context.Group.Include(g => g.ChargeStations).ThenInclude(c => c.Connectors).FirstOrDefaultAsync(g => g.Id == groupId);

            if (group == null)
            {
                return(NotFound("Group not found"));
            }

            ////improve efficiency with a segmented n-ary tree
            if (group.HasExceededCapacity(saveChargeStation.Connectors.Sum(c => c.MaxCurrentAmp).Value))
            {
                List <Connector> connectors        = _context.Connector.Where(c => c.ChargeStation.GroupId == groupId).OrderBy(o => o.MaxCurrentAmp).ToList <Connector>();
                float            excdeededCapacity = group.GetExceededCapacity();

                RemoveSuggestions removeSuggestions = new RemoveSuggestions();

                if (connectors.Count == 0)
                {
                    throw new CapacityExceededException(excdeededCapacity, removeSuggestions);
                }

                removeSuggestions.GenerateAllSuggestions(connectors, excdeededCapacity);
                throw new CapacityExceededException(excdeededCapacity, removeSuggestions);
            }

            ChargeStation chargeStation = _mapper.Map <ChargeStation>(saveChargeStation);

            group.AppendChargeStation(chargeStation);

            await _context.ChargeStation.AddAsync(chargeStation);

            await _context.SaveChangesAsync();

            ChargeStationResource chargeStationResponse = _mapper.Map <ChargeStationResource>(chargeStation);

            return(CreatedAtAction(nameof(GetChargeStation), new { id = chargeStation.Id, groupId = chargeStation.GroupId }, chargeStationResponse));
        }
        public async Task ThenRemoveSuggestionResponseShouldHaveThisSpecificResults(Table table)
        {
            _scenarioContext.ContainsKey("createdConnector");
            _scenarioContext.ContainsKey("chargeStationListResponses");

            HttpResponseMessage           response = (HttpResponseMessage)_scenarioContext["createdConnector"];
            List <HttpResponseMessage>    createdChargeStations = (List <HttpResponseMessage>)_scenarioContext["chargeStationListResponses"];
            CapacityExceededProblemDetail capacityExceeded      = await _suggestionDriver.ParseFromResponse <CapacityExceededProblemDetail>(response);

            foreach (var row in table.Rows)
            {
                int sugestionListPosition, chargeStationId, connectorId;

                int.TryParse(row["suggestionListPosition"], out sugestionListPosition).Should().BeTrue();
                int.TryParse(row["chargeStationId"], out chargeStationId).Should().BeTrue();
                int.TryParse(row["connectorId"], out connectorId).Should().BeTrue();

                capacityExceeded.RemoveSuggestions.Count.Should().BeGreaterOrEqualTo(sugestionListPosition);

                var suggestionList = capacityExceeded.RemoveSuggestions[sugestionListPosition - 1];

                bool foundConnector = false;

                foreach (var suggestion in suggestionList)
                {
                    ChargeStationResource chargeStation = await _suggestionDriver.ParseFromResponse <ChargeStationResource>(createdChargeStations[chargeStationId - 1]);

                    if (suggestion.ChargeStationId == chargeStation.Id && suggestion.ConnectorId == connectorId)
                    {
                        foundConnector = true;
                    }
                }

                foundConnector.Should().BeTrue();
            }
        }