Beispiel #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;
        }
Beispiel #2
0
        public async Task WhenTheChargeStationIsCreated()
        {
            _scenarioContext["createdGroupResponse"].Should().NotBeNull();
            GroupResource groupResponse = await _groupDriver.ParseFromResponse <GroupResource>((HttpResponseMessage)_scenarioContext["createdGroupResponse"]);

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

            _scenarioContext["createdChargeStationResponse"] = await _chargeStationDriver.CreateChargeStation(groupResponse.Id, _createChargeStation.Name, _createChargeStation.Connectors);
        }
        public async Task <HttpResponseMessage> CreateChargeStation(Guid groupId, string name, ICollection <SaveConnectorResource> connectors)
        {
            SaveChargeStationResource saveChargeStationResource = new SaveChargeStationResource()
            {
                Name       = name,
                Connectors = connectors
            };

            return(await Client.PostAsync(ChargeStationBaseUrl(groupId.ToString()), ConvertToJsonData <SaveChargeStationResource>(saveChargeStationResource)));
        }
Beispiel #4
0
 public ChargeStationSteps(ScenarioContext scenarioContext, GroupDriver groupDriver,
                           ChargeStationDriver chargeStationDriver, ConnectorDriver connectorDriver)
 {
     _scenarioContext = scenarioContext;
     _scenarioContext["createChargeStation"]        = new SaveChargeStationResource();
     _scenarioContext["chargeStationListResponses"] = new List <HttpResponseMessage>();
     _groupDriver         = groupDriver;
     _chargeStationDriver = chargeStationDriver;
     _connectorDriver     = connectorDriver;
 }
Beispiel #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);
        }
Beispiel #6
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));
        }
Beispiel #7
0
 public async Task ThenTheChargeStationShouldBeUpdatedSuccessfully()
 {
     SaveChargeStationResource _createChargeStation = ((SaveChargeStationResource)_scenarioContext["createChargeStation"]);
     await _chargeStationDriver.ShouldUpdateChargeStationSuccessfully((HttpResponseMessage)_scenarioContext["updatedChargeStation"], _createChargeStation.Name);
 }
Beispiel #8
0
        public async Task WhenTheChargeStationIsCreatedForTheWrongGroup()
        {
            SaveChargeStationResource _createChargeStation = ((SaveChargeStationResource)_scenarioContext["createChargeStation"]);

            _scenarioContext["createdChargeStationResponse"] = await _chargeStationDriver.CreateChargeStation(new Guid(), _createChargeStation.Name, _createChargeStation.Connectors);
        }