public async Task ShouldUpdateTeamBeNotFoundHavingProvidedWrongId()
        {
            //conteggio esistenti
            var countBefore = Scenario.Teams.Count;


            //Composizione della request
            var request = new TeamUpdateRequest
            {
                TeamId = RandomizationUtils.GenerateRandomString(10),
                Name   = RandomizationUtils.GenerateRandomString(50)
            };

            //Invoke del metodo
            var response = await Controller.UpdateTeam(request);

            //Parsing della risposta e assert
            var parsed = ParseExpectedNotFound(response);

            //conteggio esistenti
            var countAfter = Scenario.Teams.Count;


            Assert.IsTrue(parsed != null &&
                          parsed.Data == null);

            //verifica contatori
            Assert.AreEqual(countBefore, countAfter);
        }
        public async Task <IActionResult> UpdateTeam([EntityId] TeamUpdateRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetTeam(request.TeamId);

            //modifica solo se admin o se utente richiedente è lo stesso che ha creato
            if (entity == null)
            {
                return(NotFound());
            }

            //Aggiornamento dell'entità
            entity.Name = request.Name;

            //Salvataggio
            var validations = await BasicLayer.UpdateTeam(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Confermo
            return(Ok(ContractUtils.GenerateContract(entity)));
        }
        public async Task ShouldUpdateTeamBeBadRequestOnNameDuplicate()
        {
            //utente corrente
            var user = GetIdentityUser();

            //Recupero team esistente
            var existing = Scenario.Teams.FirstOrDefault();

            if (existing == null)
            {
                Assert.Inconclusive("First team is invalid");
            }

            //Recupero team esistente
            var anotherExisting = Scenario.Teams.FirstOrDefault(x => x.Id != existing.Id);

            if (anotherExisting == null)
            {
                Assert.Inconclusive("Second team is invalid");
            }

            //Conteggio gli elementi prima della creazione
            var countBefore = Scenario.Teams.Count;

            //Composizione della request
            var request = new TeamUpdateRequest
            {
                TeamId = existing.Id,
                Name   = anotherExisting.Name
            };

            //Invoke del metodo
            var response = await Controller.UpdateTeam(request);

            //Conteggio gli elementi dopo la creazione
            var countAfter = Scenario.Teams.Count;

            //Parsing della risposta e assert
            var parsed = ParseExpectedBadRequest(response);

            Assert.IsTrue(parsed != null &&
                          parsed.Data.Any());

            //verifica contatori
            Assert.AreEqual(countBefore, countAfter);
        }
        public async Task ShouldUpdateTeamBeOkHavingProvidedData()
        {
            //Recupero una Team esistente
            var existing = Scenario.Teams.FirstOrDefault();

            if (existing == null)
            {
                Assert.Inconclusive("Team does not exists");
            }

            //conteggio esistenti
            var countBefore = Scenario.Teams.Count;


            //Composizione della request
            var request = new TeamUpdateRequest
            {
                TeamId = existing.Id,
                Name   = RandomizationUtils.GenerateRandomString(50)
            };

            //Invoke del metodo
            var response = await Controller.UpdateTeam(request);

            //Parsing della risposta e assert
            var parsed = ParseExpectedOk <TeamContract>(response);

            //conteggio esistenti
            var countAfter = Scenario.Teams.Count;


            Assert.IsTrue(parsed != null &&
                          parsed.Data.Name == request.Name);

            //verifica contatori
            Assert.AreEqual(countBefore, countAfter);
        }