Exemple #1
0
        public void FindAllReturnsAPopulatedList()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var context = new GTLContext(options))
            {
                var material = new Material
                {
                    Isbn        = _isbn,
                    Title       = _title,
                    Description = _description,
                    Lendable    = _lendable,
                    Language    = _language,
                    Type        = _materialType,
                };

                context.Materials.Add(material);
                context.SaveChanges();
            }

            // action
            using (var context = new GTLContext(options))
            {
                var controller   = ControllerFactory.CreateMaterialController(context);
                var materialList = controller.FindAll();

                Assert.That(materialList, Is.Not.Empty);
            }
        }
Exemple #2
0
        public void CreateCreatesCorrectly()
        {
            // setup
            var bookType = new MaterialType {
                Type = "Book"
            };
            var programmingSubject = new MaterialSubject {
                SubjectName = "Programming"
            };
            var author = new Author {
                FirstName = "Nikola", LastName = "Velichkov"
            };
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var context = new GTLContext(options))
            {
                context.Add(bookType);
                context.Add(programmingSubject);
                context.Add(author);

                context.SaveChanges();
            }

            // action
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);
                var material   = controller.Create(
                    _isbn,
                    _title,
                    _language,
                    _lendable,
                    _description,
                    bookType,
                    new List <MaterialSubject> {
                    programmingSubject
                },
                    new List <Author> {
                    author
                }
                    );
                // assertion

                Assert.That(material, Has
                            .Property(nameof(Material.Isbn)).EqualTo(_isbn).And
                            .Property(nameof(Material.Title)).EqualTo(_title).And
                            .Property(nameof(Material.Language)).EqualTo(_language).And
                            .Property(nameof(Material.Lendable)).EqualTo(_lendable).And
                            .Property(nameof(Material.Description)).EqualTo(_description).And
                            .Property(nameof(Material.Type)).And
                            .Property(nameof(Material.MaterialSubjects)).And
                            .Property(nameof(Material.MaterialAuthors)));
            }
        }
Exemple #3
0
        public void UpdateUpdatesCorrectly()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            int materialId;
            var newTitle    = "Some other title";
            var newLanguage = "Danish";

            using (var context = new GTLContext(options))
            {
                var material = new Material
                {
                    Isbn        = _isbn,
                    Title       = _title,
                    Language    = _language,
                    Lendable    = _lendable,
                    Description = _description,
                    Type        = _materialType,
                };

                context.Add(material);
                context.SaveChanges();
                materialId = material.MaterialId;
            }

            // action
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);
                var material   = context.Materials.Find(materialId);
                material.Title    = newTitle;
                material.Language = newLanguage;

                controller.Update(material);
            }

            // assertion
            using (var context = new GTLContext(options))
            {
                var material = context.Materials.Find(materialId);
                Assert.That(material, Has
                            .Property(nameof(Material.Isbn)).EqualTo(_isbn).And
                            .Property(nameof(Material.Title)).EqualTo(newTitle).And
                            .Property(nameof(Material.Language)).EqualTo(newLanguage).And
                            .Property(nameof(Material.Lendable)).EqualTo(_lendable).And
                            .Property(nameof(Material.Description)).EqualTo(_description).And
                            .Property(nameof(Material.Type))
                            );
            }
        }
Exemple #4
0
        public void InsertThrowsArgumentNullExceptionWithNullParameter()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            // action
            using var context = new GTLContext(options);
            var controller = ControllerFactory.CreateMaterialController(context);

            // assertion
            Assert.Throws <ArgumentNullException>(() => controller.Insert(null));
        }
Exemple #5
0
        public void FindAllReturnsAnEmptyList()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            // don't add any materials
            using var context = new GTLContext(options);
            var controller   = ControllerFactory.CreateMaterialController(context);
            var materialList = controller.FindAll();

            Assert.That(materialList, Is.Empty);
        }
Exemple #6
0
        public void FindByIdReturnsNullWhenMaterialNotFound()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            // action
            using var context = new GTLContext(options);
            var controller = ControllerFactory.CreateMaterialController(context);
            var material   = controller.FindByID(42);

            Assert.That(material, Is.Null);
        }
Exemple #7
0
        // should be more tests with the same conditions for different properties of Material
        // (Isbn, Title, Language, Description, Lendable?)
        public void CreateThrowsAnArgumentNullExceptionOnNullOrEmptyTitle()
        {
            // setup
            var bookType = new MaterialType {
                Type = "Book"
            };
            var programmingSubject = new MaterialSubject {
                SubjectName = "Programming"
            };
            var author = new Author {
                FirstName = "Nikola", LastName = "Velichkov"
            };
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var context = new GTLContext(options))
            {
                context.Add(bookType);
                context.Add(programmingSubject);
                context.Add(author);

                context.SaveChanges();
            }

            // assertion
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);
                Assert.Throws <ArgumentNullException>(() =>
                                                      controller.Create(
                                                          _isbn,
                                                          "",
                                                          _language,
                                                          _lendable,
                                                          _description,
                                                          bookType,
                                                          new List <MaterialSubject> {
                    programmingSubject
                },
                                                          new List <Author> {
                    author
                }
                                                          ));
            }
        }
Exemple #8
0
        public void DeleteDeletesCorrectly()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            int materialId;

            using (var context = new GTLContext(options))
            {
                var material = new Material
                {
                    Isbn        = _isbn,
                    Title       = _title,
                    Language    = _language,
                    Lendable    = _lendable,
                    Description = _description,
                    Type        = _materialType,
                };

                context.Add(material);
                context.SaveChanges();
                materialId = material.MaterialId;
            }

            // action
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);
                var material   = context.Materials.Find(materialId);
                controller.Delete(material);
            }

            // assertion
            using (var context = new GTLContext(options))
            {
                var material = context.Materials.Find(materialId);
                Assert.That(material, Is.Null);
            }
        }
Exemple #9
0
        public void FindByIdFindsAnExistingMaterial()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            // action
            int materialId;

            using (var context = new GTLContext(options))
            {
                var material = new Material
                {
                    Isbn        = _isbn,
                    Title       = _title,
                    Language    = _language,
                    Lendable    = _lendable,
                    Description = _description,
                    Type        = _materialType,
                };
                context.Add(material);
                context.SaveChanges();
                materialId = material.MaterialId;
            }

            // assertion
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);
                var material   = controller.FindByID(materialId);

                Assert.That(material, Has
                            .Property(nameof(Material.Isbn)).EqualTo(_isbn).And
                            .Property(nameof(Material.Title)).EqualTo(_title).And
                            .Property(nameof(Material.Language)).EqualTo(_language).And
                            .Property(nameof(Material.Lendable)).EqualTo(_lendable).And
                            .Property(nameof(Material.Description)).EqualTo(_description).And
                            .Property(nameof(Material.Type)));
            }
        }
Exemple #10
0
        public void InsertDoesNotInsertWithNullParameter()
        {
            // setup
            var options = new DbContextOptionsBuilder <GTLContext>()
                          .UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name)
                          .Options;

            // action
            using (var context = new GTLContext(options))
            {
                var controller = ControllerFactory.CreateMaterialController(context);

                // silently catch the error that's supposed to be thrown by the Insert method
                // in order to test the after effect
                try { controller.Insert(null); }
                catch (ArgumentNullException) { }
            }

            // assertion
            using (var context = new GTLContext(options))
            {
                Assert.That(context.Materials.Count(), Is.EqualTo(0));
            }
        }
 public MaterialController(GTLContext context)
 {
     _controller = ControllerFactory.CreateMaterialController(context);
 }