private void Setup(string approach)
        {
            DatabaseTesting.ResetDatabase();
            Context context = new Context();

            switch (approach)
            {
            case "Code":
                MaterialDa_Code  materialDa_Code  = new MaterialDa_Code();
                LibraryDa_Code   libraryDa_Code   = new LibraryDa_Code();
                LibrarianDa_Code librarianDaCode  = new LibrarianDa_Code();
                CopyDa_Code      copyDa_Code      = new CopyDa_Code();
                LoaningDa_Code   loaningDaCode    = new LoaningDa_Code();
                MaterialDm_Code  materialsDm_Code = new MaterialDm_Code(materialDa_Code, libraryDa_Code, librarianDaCode, copyDa_Code, loaningDaCode, context);
                _materialService = new MaterialService(materialsDm_Code);
                break;

            case "Database":
                MaterialsDa_Database materialDa_Db  = new MaterialsDa_Database(context);
                MaterialsDm_Database materialsDm_Db = new MaterialsDm_Database(materialDa_Db);
                _materialService = new MaterialService(materialsDm_Db);
                break;

            default:
                new NotImplementedException();
                break;
            }
        }
        public void MaterialDmCreateMaterialTest(bool ssnPassing, bool isbnPassing, bool libraryNamePassing, bool typeNamePassing, bool testPassing)
        {
            //Arrange
            var materialDa_Code_Mock = new Mock <MaterialDa_Code>();
            var libraryDa_Code_Mock  = new Mock <LibraryDa_Code>();
            var personDa_Code_Mock   = new Mock <LibrarianDa_Code>();
            var copyDa_Code_Mock     = new Mock <CopyDa_Code>();
            var lendingDa_Code_Mock  = new Mock <LoaningDa_Code>();
            var context_Mock         = new Mock <Context>();
            var objects = MaterialsSetUp();

            personDa_Code_Mock.Setup(x => x.CheckLibrarianSsn(It.IsAny <int>(), It.IsAny <Context>()))
            .Returns(ssnPassing);
            materialDa_Code_Mock.Setup(x => x.CheckMaterialIsbn(It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(isbnPassing);
            libraryDa_Code_Mock.Setup(x => x.CheckLibraryName(It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(libraryNamePassing);
            copyDa_Code_Mock.Setup(x => x.CheckTypeName(It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(typeNamePassing);
            materialDa_Code_Mock.Setup(x => x.ReadMaterials(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <Context>()))
            .Returns(objects.Item2);

            var materialDm = new MaterialDm_Code(materialDa_Code_Mock.Object, libraryDa_Code_Mock.Object,
                                                 personDa_Code_Mock.Object, copyDa_Code_Mock.Object, lendingDa_Code_Mock.Object, context_Mock.Object);

            //Act
            var result = materialDm.CreateMaterial(0, "0", null, null, null, null, null, 0);

            //Assert
            Assert.IsTrue(result == testPassing);
        }
        public void MaterialDmDeleteMaterialTest(bool ssnPassing, bool isbnPassing, bool deleteResult, bool testPassing)
        {
            //Arrange
            var materialDa_Code_Mock = new Mock <MaterialDa_Code>();
            var libraryDa_Code_Mock  = new Mock <LibraryDa_Code>();
            var personDa_Code_Mock   = new Mock <LibrarianDa_Code>();
            var copyDa_Code_Mock     = new Mock <CopyDa_Code>();
            var lendingDa_Code_Mock  = new Mock <LoaningDa_Code>();
            var context_Mock         = new Mock <Context>();

            personDa_Code_Mock.Setup(x => x.CheckLibrarianSsn(It.IsAny <int>(), It.IsAny <Context>()))
            .Returns(ssnPassing);
            materialDa_Code_Mock.Setup(x => x.CheckMaterialIsbn(It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(isbnPassing);
            materialDa_Code_Mock.Setup(x => x.DeleteMaterial(It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(deleteResult);

            var materialDm = new MaterialDm_Code(materialDa_Code_Mock.Object, libraryDa_Code_Mock.Object,
                                                 personDa_Code_Mock.Object, copyDa_Code_Mock.Object, lendingDa_Code_Mock.Object, context_Mock.Object);

            //Act
            var result = materialDm.DeleteMaterial(0, "0");

            //Assert
            Assert.IsTrue(result == testPassing);
        }
        public void MaterialDmReadMaterialTest(string materialTitle, string author, int numOfRecords = 10, int isbn = 0, string jobStatus = "0")
        {
            //Arrange
            var materialDa_Code_Mock = new Mock <MaterialDa_Code>();
            var libraryDa_Code_Mock  = new Mock <LibraryDa_Code>();
            var personDa_Code_Mock   = new Mock <LibrarianDa_Code>();
            var copyDa_Code_Mock     = new Mock <CopyDa_Code>();
            var lendingDa_Code_Mock  = new Mock <LoaningDa_Code>();
            var context_Mock         = new Mock <Context>();
            var objects = MaterialsSetUp();

            materialDa_Code_Mock.Setup(x => x.ReadMaterials(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <Context>()))
            .Returns(objects.Item2);
            copyDa_Code_Mock.Setup(x => x.ReadCopies(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Context>()))
            .Returns(objects.Item1);

            var materialDm = new MaterialDm_Code(materialDa_Code_Mock.Object, libraryDa_Code_Mock.Object,
                                                 personDa_Code_Mock.Object, copyDa_Code_Mock.Object, lendingDa_Code_Mock.Object, context_Mock.Object);

            //Act
            var result = materialDm.ReadMaterials(materialTitle, author, numOfRecords, isbn.ToString(), jobStatus);

            //Assert
            Assert.IsTrue(result.Count == 2);
            Assert.IsTrue(result[0].Available_Copies == 2);
            Assert.IsTrue(result[1].Available_Copies == 1);
        }