コード例 #1
0
        public void GivenASpecificSetOfChargeStations(Table table)
        {
            List <SaveChargeStationResource> listChargeStations = new List <SaveChargeStationResource>();

            foreach (var tableRow in table.Rows)
            {
                List <string> connectorIds = new List <string>(tableRow["connectors"].Split(','));
                List <SaveConnectorResource> connectors = new List <SaveConnectorResource>();
                foreach (var item in connectorIds)
                {
                    float maxCurrent;
                    float.TryParse(item, out maxCurrent).Should().BeTrue();

                    SaveConnectorResource saveConnector = new SaveConnectorResource()
                    {
                        MaxCurrentAmp = maxCurrent
                    };
                    connectors.Add(saveConnector);
                }

                SaveChargeStationResource saveChargeStation = new SaveChargeStationResource()
                {
                    Name       = tableRow["name"],
                    Connectors = connectors
                };

                listChargeStations.Add(saveChargeStation);
            }

            _scenarioContext["chargeStationList"] = listChargeStations;
        }
コード例 #2
0
        public async Task <HttpResponseMessage> CreateConnector(Guid groupId, Guid chargeStationId, float maxCurrentAmp)
        {
            SaveConnectorResource saveConnectorResource = new SaveConnectorResource()
            {
                MaxCurrentAmp = maxCurrentAmp
            };

            return(await Client.PostAsync(ConnectorBaseUrl(groupId.ToString(), chargeStationId.ToString()), ConvertToJsonData <SaveConnectorResource>(saveConnectorResource)));
        }
コード例 #3
0
        public ConnectorSteps(ScenarioContext scenarioContext, ConnectorDriver connectorDriver, GroupDriver groupDriver,
                              ChargeStationDriver chargeStationDriver, SuggestionDriver suggestionDriver)
        {
            _scenarioContext = scenarioContext;
            _scenarioContext["createConnector"] = new SaveConnectorResource();

            _scenarioContext["groups"]         = new List <HttpResponseMessage>();
            _scenarioContext["chargeStations"] = new List <HttpResponseMessage>();
            _scenarioContext["connectors"]     = new List <HttpResponseMessage>();
            _groupDriver         = groupDriver;
            _chargeStationDriver = chargeStationDriver;
            _connectorDriver     = connectorDriver;
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public async Task WhenASpecificSetOfActionsIsExecutedSequencially(Table setOfActions)
        {
            _scenarioContext["actions"] = setOfActions;
            _scenarioContext["createdChargeStationResponse"].Should().NotBeNull();
            ((SaveChargeStationResource)_scenarioContext["createChargeStation"]).Connectors.Should().NotBeEmpty();

            foreach (var action in setOfActions.Rows)
            {
                if (action["action"] == "create")
                {
                    float maxCurrentAmp;
                    SaveConnectorResource saveConnector = new SaveConnectorResource();
                    float.TryParse(action["maxCurrentAmp"], out maxCurrentAmp).Should().BeTrue();
                    saveConnector.MaxCurrentAmp         = maxCurrentAmp;
                    _scenarioContext["createConnector"] = saveConnector;
                    if (setOfActions.Header.Contains("chargeStationId"))
                    {
                        int chargeStationIndex;
                        int.TryParse(action["chargeStationId"], out chargeStationIndex).Should().BeTrue();

                        _scenarioContext["createdChargeStation"] = await _connectorDriver.ParseFromResponse <ChargeStationResource>(((List <HttpResponseMessage>)_scenarioContext["chargeStations"])[chargeStationIndex]);
                    }
                    if (setOfActions.Header.Contains("groupId"))
                    {
                        int groupIndex;
                        int.TryParse(action["groupId"], out groupIndex).Should().BeTrue();

                        _scenarioContext["createdGroupResponse"] = ((List <HttpResponseMessage>)_scenarioContext["groups"])[groupIndex];
                    }
                    await WhenTheConnectorIsCreated();

                    ((List <HttpResponseMessage>)_scenarioContext["connectors"]).Add((HttpResponseMessage)_scenarioContext["createdConnector"]);
                }
                else
                {
                    int connectorId;
                    int.TryParse(action["expectedConnectorId"], out connectorId).Should().BeTrue();
                    await WhenTheConnectorIsDeleted(connectorId);

                    ((List <HttpResponseMessage>)_scenarioContext["connectors"]).Add((HttpResponseMessage)_scenarioContext["deletedConnectorResponse"]);
                }
            }
        }
コード例 #7
0
        public async Task <ActionResult <ConnectorResource> > Post(Guid groupId, Guid chargeStationId, [FromBody] SaveConnectorResource saveConnector)
        {
            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"));
            }

            Connector     connector = _mapper.Map <Connector>(saveConnector);
            ChargeStation chargeStation;

            if (!group.ChargeStations.TryGetValue(new ChargeStation(chargeStationId), out chargeStation))
            {
                return(NotFound("Charge station not found"));
            }

            if (group.HasExceededCapacity(saveConnector.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();
                removeSuggestions.GenerateAllSuggestions(connectors, excdeededCapacity);

                throw new CapacityExceededException(excdeededCapacity, removeSuggestions);
            }
            chargeStation.SyncConnectorIds();
            chargeStation.AppendConnector(connector);

            await _context.SaveChangesAsync();

            ConnectorResource connectorResponse = _mapper.Map <ConnectorResource>(connector);

            return(CreatedAtAction(nameof(GetConnector), new { chargeStationId = chargeStation.Id, groupId = chargeStation.GroupId, id = connector.Id.Value }, connectorResponse));
        }