예제 #1
0
        public async Task Read_ValidInput_ReturnsCorrectData(int id)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var expectedLanguage = new LanguageModel
            {
                ID   = id,
                Name = language.Name
            };

            var appLanguage = new Language(dbContext);
            #endregion

            #region Act
            var actualLanguage = await appLanguage.Read(id);

            #endregion

            #region Assert
            Assert.Equal(expectedLanguage.ID, actualLanguage.ID);
            Assert.Equal(expectedLanguage.Name, actualLanguage.Name);
            #endregion
        }
예제 #2
0
        public async Task Create_InvalidInput_ReturnsNull(string description, int languageID, int length, string releaseDate, string title)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);

            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = title
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.Create(newMovie);

            #endregion

            #region Assert
            Assert.Null(actualMovie);
            #endregion
        }
예제 #3
0
        public async Task Update_InvalidInput_ReturnsNull(int id, string name)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);

            await dbContext.SaveChangesAsync();

            var newLanguage = new AdminLanguageModel
            {
                ID   = id,
                Name = name
            };

            var appLanguage = new Language(dbContext);
            #endregion

            #region Act
            var actualLanguage = await appLanguage.Update(newLanguage);

            #endregion

            #region Assert
            Assert.Null(actualLanguage);
            #endregion
        }
예제 #4
0
        private void InitBindingList()
        {
            if (_bindingEntities == null)
            {
                _bindingEntities = new BindingTemplate <Domain.Country>();
            }
            if (_bindingEntities.Count > 0)
            {
                _bindingEntities.Clear();
            }

            if (_countrylist != null)
            {
                foreach (Domain.Country c in _countrylist)
                {
                    if (c.LanguageID > 0)
                    {
                        Domain.Language lng = ClientEnvironment.LanguageService.FindById(c.CountryLanguage);
                        c.LanguageName = (lng != null) ? lng.Name : String.Empty;
                    }
                }
                _bindingEntities.CopyList(_countrylist);
            }


            if (gridControlCountries.DataSource == null)
            {
                gridControlCountries.DataSource = _bindingEntities;
            }
        }
예제 #5
0
 private void UpdateValuesInLanguageVersion(ItemFile itemFile, Item item)
 {
     foreach (Field field in item.Fields)
     {
         if (field.Shared)
         {
             SortedSet <FieldValue> fields = itemFile.SharedFieldValues;
             UpdateField(item, fields, field);
         }
         else
         {
             Domain.Language language = itemFile.Languages.FirstOrDefault(l => l.LanguageName == field.Language.Name);
             if (language == null)
             {
                 language = new Domain.Language()
                 {
                     LanguageName = field.Language.Name
                 };
                 itemFile.Languages.Add(language);
             }
             Domain.Version version = language.Versions.FirstOrDefault(v => v.VersionNumber == item.Version.Number);
             if (version == null)
             {
                 version = new Domain.Version()
                 {
                     VersionNumber = item.Version.Number
                 };
                 language.Versions.Add(version);
             }
             UpdateField(item, version.FieldValues, field);
         }
     }
 }
        public async Task Create_ValidRequest_ReturnsJsonResponseAndCreated(string description, int languageID, int length, string releaseDate, string name)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = name
            };

            var expectedMovie = new MovieModel
            {
                ID          = 1,
                Description = description,
                Language    = new LanguageModel
                {
                    ID   = language.ID,
                    Name = language.Name
                },
                Length      = length,
                ReleaseDate = releaseDate,
                Name        = name
            };
            #endregion

            #region Act
            var response = await client.PostAsJsonAsync("/api/movie", newMovie);

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <MovieModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            Assert.Equal(expectedMovie.Language.ID, actualMovie.Language.ID);
            Assert.Equal(expectedMovie.Language.Name, actualMovie.Language.Name);
            Assert.Equal(expectedMovie.Length, actualMovie.Length);
            Assert.Equal(expectedMovie.ReleaseDate, actualMovie.ReleaseDate);
            Assert.Equal(expectedMovie.Name, actualMovie.Name);
            #endregion
        }
        public async Task Update_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(int id, string description, int languageID, int length, string releaseDate, string name, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            dbContext.Languages.Add(new Domain.Language {
                Name = "New Name"
            });
            await dbContext.SaveChangesAsync();

            var movie = new Domain.Movie
            {
                Description = "Description",
                LanguageID  = language.ID,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Name"
            };
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = name
            };
            #endregion

            #region Act
            var response = await client.PutAsJsonAsync($"/api/movie/{id}", newMovie);

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody);

            var errorProp = actualMovie.GetProperty("errors");
            var errors    = errorProp.EnumerateObject();
            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Equal(expectedErrorNames.Count(), errors.Count());
            Assert.All(expectedErrorNames, errorName => Assert.Contains(errorName, errors.Select(prop => prop.Name)));
            Assert.All(expectedErrorMessages, errorMessage => Assert.Contains(errorMessage, errors.Select(prop => prop.Value[0].ToString())));
            #endregion
        }
예제 #8
0
        public async Task Create_ValidInput_ReturnsCorrectData(string description, int languageID, int length, string releaseDate, string title)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                ID          = 1,
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = title
            };

            var expectedMovie = new MovieModel
            {
                ID          = 1,
                Description = description,
                Language    = new LanguageModel {
                    ID   = languageID,
                    Name = language.Name
                },
                Length      = length,
                ReleaseDate = releaseDate,
                Name        = title
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.Create(newMovie);

            #endregion

            #region Assert
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            Assert.Equal(expectedMovie.Language.ID, actualMovie.Language.ID);
            Assert.Equal(expectedMovie.Language.Name, actualMovie.Language.Name);
            Assert.Equal(expectedMovie.Length, actualMovie.Length);
            Assert.Equal(expectedMovie.ReleaseDate, actualMovie.ReleaseDate);
            Assert.Equal(expectedMovie.Name, actualMovie.Name);
            #endregion
        }
예제 #9
0
        public override void Delete()
        {
            //XtraMessageBox.Show(this, "Delete", this.Name, MessageBoxButtons.OK);
            List <long> ids = new List <long>();

            foreach (int rowHandle in mainGridView.GetSelectedRows())
            {
                Domain.Language lang = (Domain.Language)mainGridView.GetRow(rowHandle);
                ids.Add(lang.ID);
            }
            ClientEnvironment.LanguageService.DeleteListByID(ids);

            RefreshData();
        }
        public async Task ConnectGenre_ValidRequest_ReturnsJsonResponseAndOk(int id, int genreID)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language();
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            dbContext.Genres.Add(new Domain.Genre());
            dbContext.Movies.Add(new Domain.Movie
            {
                LanguageID  = language.ID,
                ReleaseDate = "04-10-2010"
            });
            await dbContext.SaveChangesAsync();

            var expectedMovie = new MovieModel
            {
                ID     = id,
                Genres = new List <GenreModel>
                {
                    new GenreModel
                    {
                        ID = genreID
                    }
                }
            };
            #endregion

            #region Act
            var response = await client.PostAsJsonAsync($"/api/movie/{id}/genres", genreID);

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <MovieModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Genres.Count(), actualMovie.Genres.Count());
            Assert.Equal(expectedMovie.Genres.ToList()[0].ID, actualMovie.Genres.ToList()[0].ID);
            #endregion
        }
예제 #11
0
        public async Task Update_LanguageDoesNotExist_ReturnsEmptyMovieModel(int id, string description, int languageID, int length, string releaseDate, string title, int expectedID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);

            var movie = new Domain.Movie
            {
                Description = "Description",
                LanguageID  = language.ID,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Title"
            };
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                ID          = id,
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = title
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.Update(newMovie);

            #endregion

            #region Assert
            Assert.NotNull(actualMovie);
            Assert.Equal(expectedID, actualMovie.ID);
            #endregion
        }
예제 #12
0
        public override void Edit()
        {
            Domain.Language l = (Domain.Language)mainGridView.GetRow(mainGridView.FocusedRowHandle);
            if (l == null)
            {
                return;
            }
            FormLanguage f = new FormLanguage();

            f.Text     = GetLocalized("Edit Language");
            f.Language = l;
            if (f.ShowDialog(OwnerForm) == DialogResult.OK)
            {
                ClientEnvironment.LanguageService.SaveOrUpdate(f.Language);
            }

            RefreshData();
        }
예제 #13
0
        public async Task <LanguageModel> Create(AdminLanguageModel adminLanguageModel)
        {
            if (_languageValidation.IsInputValid(adminLanguageModel))
            {
                var language = new Domain.Language
                {
                    Name = adminLanguageModel.Name
                };

                _applicationDbContext.Languages.Add(language);

                await _applicationDbContext.SaveChangesAsync();

                return(await Read(language.ID));
            }

            return(null);
        }
        public async Task Create_LanguageDoesNotExist_ReturnsJsonResponseAndNotFoundWithErrors(string description, int languageID, int length, string releaseDate, string name, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorValues)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);

            await dbContext.SaveChangesAsync();

            var newMovie = new AdminMovieModel
            {
                Description = description,
                LanguageID  = languageID,
                Length      = length,
                ReleaseDate = DateTime.Parse(releaseDate),
                Name        = name
            };
            #endregion

            #region Act
            var response = await client.PostAsJsonAsync("/api/movie", newMovie);

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody);

            var errorProp = actualMovie.GetProperty("errors");
            var errors    = errorProp.EnumerateObject();
            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
            Assert.Equal(expectedErrorNames.Count(), errors.Count());
            Assert.All(expectedErrorNames, errorName => Assert.Contains(errorName, errors.Select(prop => prop.Name)));
            Assert.All(expectedErrorValues, errorValue => Assert.Contains(errorValue, errors.Select(prop => prop.Value[0].ToString())));
            #endregion
        }
        public async Task ReadAll_MoviesExist_ReturnsJsonResponseAndOk()
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var langauge = new Domain.Language();
            dbContext.Languages.Add(langauge);
            await dbContext.SaveChangesAsync();

            dbContext.Movies.Add(new Domain.Movie
            {
                LanguageID  = langauge.ID,
                ReleaseDate = "04-10-2010"
            });
            dbContext.Movies.Add(new Domain.Movie
            {
                LanguageID  = langauge.ID,
                ReleaseDate = "04-10-2010"
            });
            await dbContext.SaveChangesAsync();

            int expectedCount = 2;
            #endregion

            #region Act
            var response = await client.GetAsync("/api/movie");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovies = await JsonSerializer.DeserializeAsync <IEnumerable <MovieModel> >(responseBody);

            #endregion

            #region Assert
            Assert.NotNull(actualMovies);
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedCount, actualMovies.Count());
            #endregion
        }
예제 #16
0
 public void EditEntity(Domain.Language aLang)
 {
     if (!ReadOnly)
     {
         Domain.Language l = (Domain.Language)gridViewLanguages.GetRow(gridViewLanguages.FocusedRowHandle);
         if (l != null)
         {
             using (FormLanguage2 f = new FormLanguage2())
             {
                 //f.Text = Localizer.GetLocalized("Edit Language");
                 f.Language = l;
                 if (f.ShowDialog(OwnerForm) == DialogResult.OK)
                 {
                     //  ClientEnvironment.LanguageService.SaveOrUpdate(f.Language);
                     _bindingLanguageList.ResetItemById(f.Language.ID);
                 }
             }
         }
     }
 }
예제 #17
0
        public async Task ReadAll_MoviesExist_ReturnsAllMovies()
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            int expectedAmount = 2;

            dbContext.Movies.AddRange(
                Enumerable.Range(1, expectedAmount).Select(x => new Domain.Movie {
                ID          = x,
                Description = $"Description {x}",
                LanguageID  = language.ID,
                Length      = 114,
                ReleaseDate = "4-10-2010",
                Name        = $"Title {x}"
            })
                );

            await dbContext.SaveChangesAsync();

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var result = await appMovie.ReadAll();

            #endregion

            #region Assert
            var actualAmount = Assert.IsAssignableFrom <IEnumerable <MovieModel> >(result).Count();
            Assert.Equal(expectedAmount, actualAmount);
            #endregion
        }
예제 #18
0
        public async Task Read_ValidRequest_ReturnsJsonResponseAndOk(int id)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var expectedLanguage = new LanguageModel
            {
                ID   = language.ID,
                Name = language.Name
            };
            #endregion

            #region Act
            var response = await client.GetAsync($"/api/language/{id}");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualLanguage = await JsonSerializer.DeserializeAsync <LanguageModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedLanguage.ID, actualLanguage.ID);
            Assert.Equal(expectedLanguage.Name, actualLanguage.Name);
            #endregion
        }
예제 #19
0
        private void BuildEnglishLanguage()
        {
            if (!ReadOnly)
            {
                ItemResource[] ress =
                    Baumax.Localization.DefaultDiction.GetEnglishResource();

                Domain.Language ll = ClientEnvironment.LanguageService.CreateEntity();

                ll.Name         = "English";
                ll.LanguageCode = "EN-US";

                ll = ClientEnvironment.LanguageService.Save(ll);

                List <UIResource> _lst  = new List <UIResource>();
                UIResource        uires = null;
                foreach (ItemResource res in ress)
                {
                    _lst.Add(new UIResource(res.Key, ll.ID, res.Value));
                }

                ClientEnvironment.LanguageService.UpdateResources(_lst);
            }
        }
예제 #20
0
        public void DeleteEntity(Domain.Language aLang)
        {
            if (!ReadOnly)
            {
                List <long> ids = new List <long>();

                int[] selectedIds = gridViewLanguages.GetSelectedRows();

                foreach (int rowHandle in selectedIds)
                {
                    Domain.Language lang = (Domain.Language)gridViewLanguages.GetRow(rowHandle);
                    ids.Add(lang.ID);
                }

                if (ids.Count > 0)
                {
                    if (QuestionMessageYes(GetLocalized("questiondeletelanguage")))
                    {
                        // assume multiselect never be enabled. but just in case...
                        if (ids.Count == 1)
                        {
                            try
                            {
                                ClientEnvironment.LanguageService.DeleteByID(ids[0]);
                                System.Diagnostics.Debug.Assert(ids.Count == selectedIds.Length); // == 1
                                gridViewLanguages.DeleteRow(selectedIds[0]);
                            }
                            catch (DBReferenceConstraintConflictedException)
                            {
                                ErrorMessage(GetLocalized("LanguageAssignedToCountry"));
                            }
                            catch (ValidationException)
                            {
                                ErrorMessage(GetLocalized("CannotDeleteDefaultLanguage"));
                            }
                            catch (EntityException ex)
                            {
                                // 2think: what details should we show?
                                // 2think: how to localize?
                                using (FrmEntityExceptionDetails form = new FrmEntityExceptionDetails(ex))
                                {
                                    form.Text = GetLocalized("CannotDeleteLanguage");
                                    form.ShowDialog(this);
                                }
                            }
                        }
                        else
                        {
                            // assume multiselect will never be enabled. but just in case...
                            try
                            {
                                ClientEnvironment.LanguageService.DeleteListByID(ids);

                                foreach (int rowHandle in selectedIds)
                                {
                                    gridViewLanguages.DeleteRow(rowHandle);
                                }
                            }
                            catch (ValidationException)
                            {
                                ErrorMessage(GetLocalized("CannotDeleteDefaultLanguage"));
                            }
                            // can't exactly determine the reason of operation failure for each item separately
                            // so just remove successfully deleted items from list and notify user
                            catch (EntityException ex)
                            {
                                // 2think: isn't this too complicated? maybe we just should reread language list?
                                if (ex.IDs != null)
                                {
                                    List <long> failedIDs = new List <long>(ex.IDs);
                                    foreach (int rowHandle in selectedIds)
                                    {
                                        Domain.Language lang = (Domain.Language)gridViewLanguages.GetRow(rowHandle);
                                        if (failedIDs.Contains(lang.ID))
                                        {
                                            continue;
                                        }
                                        gridViewLanguages.DeleteRow(rowHandle);
                                    }
                                }
                                ErrorMessage(GetLocalized("SomeLanguagesNotDeleted"));
                            }
                        }
                    }
                }
            }
        }
예제 #21
0
        public override bool Commit()
        {
            if (Language != null)
            {
                String l_name = textEditName.Text.Trim();
                if (l_name != Language.Name)
                {
                    Language.Name = l_name;
                    Modified      = true;
                }

                /*l_name = textEditCode.Text.Trim();
                 * if (l_name != Language.LanguageCode)
                 * {
                 *  Language.LanguageCode = l_name;
                 *  Modified = true;
                 * }*/
                if (Modified)
                {
                    if (Language.IsNew)
                    {
                        try
                        {
                            Domain.Language l = ClientEnvironment.LanguageService.Save(Language);
                            Language.ID = l.ID;
                            NotificationService.OnChangedLanguage(Language);
                        }
                        catch (DBDuplicateKeyException)
                        {
                            ErrorMessage(GetLocalized("languagenameexists"));
                            return(false);
                        }
                        catch (EntityException ex)
                        {
                            // 2think: what details should we show?
                            // 2think: how to localize?
                            using (FrmEntityExceptionDetails form = new FrmEntityExceptionDetails(ex))
                            {
                                form.Text = GetLocalized("CannotSaveLanguage");
                                form.ShowDialog(this);
                            }
                            return(false);
                        }
                    }
                    else
                    {
                        try
                        {
                            ClientEnvironment.LanguageService.SaveOrUpdate(Language);
                            NotificationService.OnChangedLanguage(Language);
                        }
                        catch (DBDuplicateKeyException)
                        {
                            ErrorMessage(GetLocalized("languagenameexists"));
                            return(false);
                        }
                        catch (EntityException ex)
                        {
                            // 2think: what details should we show?
                            // 2think: how to localize?
                            using (FrmEntityExceptionDetails form = new FrmEntityExceptionDetails(ex))
                            {
                                form.Text = GetLocalized("CannotSaveLanguage");
                                form.ShowDialog(this);
                            }
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
        public async Task Read_ValidRequest_ReturnsJsonResponseAndOk(int id)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var movie = new Domain.Movie
            {
                Description = "Description",
                LanguageID  = 1,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Name"
            };
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var expectedMovie = new MovieModel
            {
                ID          = 1,
                Description = movie.Description,
                Language    = new LanguageModel
                {
                    ID   = language.ID,
                    Name = language.Name
                },
                Length      = movie.Length,
                ReleaseDate = movie.ReleaseDate,
                Name        = movie.Name
            };
            #endregion

            #region Act
            var response = await client.GetAsync($"/api/movie/{id}");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <MovieModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            Assert.Equal(expectedMovie.Language.ID, actualMovie.Language.ID);
            Assert.Equal(expectedMovie.Language.Name, actualMovie.Language.Name);
            Assert.Equal(expectedMovie.Length, actualMovie.Length);
            Assert.Equal(expectedMovie.ReleaseDate, actualMovie.ReleaseDate);
            Assert.Equal(expectedMovie.Name, actualMovie.Name);
            #endregion
        }
예제 #23
0
        public async Task Read_ValidInput_ReturnsCorrectData(int id)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var genre = new Domain.Genre
            {
                Name = "Name"
            };
            dbContext.Genres.Add(genre);
            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var movie = new Domain.Movie
            {
                Description = "Description",
                Genres      = new List <Domain.GenreMovie>
                {
                    new Domain.GenreMovie
                    {
                        GenreID = genre.ID
                    }
                },
                LanguageID  = language.ID,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Title"
            };
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var expectedMovie = new MovieModel
            {
                ID          = id,
                Description = movie.Description,
                Genres      = new List <GenreModel>
                {
                    new GenreModel
                    {
                        ID   = genre.ID,
                        Name = genre.Name
                    }
                },
                Language = new LanguageModel
                {
                    ID   = language.ID,
                    Name = language.Name
                },
                Length      = movie.Length,
                ReleaseDate = movie.ReleaseDate,
                Name        = movie.Name
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.Read(id);

            #endregion

            #region Assert
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            Assert.Equal(expectedMovie.Genres.ToList()[0].ID, actualMovie.Genres.ToList()[0].ID);
            Assert.Equal(expectedMovie.Genres.ToList()[0].Name, actualMovie.Genres.ToList()[0].Name);
            Assert.Equal(expectedMovie.Language.ID, actualMovie.Language.ID);
            Assert.Equal(expectedMovie.Language.Name, actualMovie.Language.Name);
            Assert.Equal(expectedMovie.Length, actualMovie.Length);
            Assert.Equal(expectedMovie.ReleaseDate, actualMovie.ReleaseDate);
            Assert.Equal(expectedMovie.Name, actualMovie.Name);
            #endregion
        }