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; }
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))); }
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; }
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); }
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"]); } } }
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)); }