def test_entire_class(self): """Tests to see whether it returns an empty list when the provided file is not compatible.""" expected_classes = [] file_dir = str.format("{}/testing_files/test_file_bad.js", self.current_dir).replace("\\", "/") js_file = self.file_reader.get_file_contents(file_dir) parser_director = ParserDirector(JSParserBuilder()) self.parser = parser_director.make_parser(js_file) actual_classes = self.parser.get_classes() self.assertEqual(expected_classes, actual_classes)
def test_class_no_methods(self): """Tests to see whether it can correctly read a js file with an empty constructor.""" expected_class = {'name': 'TestClass', 'attributes': [], 'methods': []} file_dir = str.format("{}/testing_files/test_file_6.js", self.current_dir).replace("\\", "/") js_file = self.file_reader.get_file_contents(file_dir) parser_director = ParserDirector(JSParserBuilder()) self.parser = parser_director.make_parser(js_file) actual_class = self.parser.get_classes()[0] self.assertEqual(expected_class, actual_class)
def test_entire_dir(self): """Tests to see whether it can read an entire directory and extract all the classes.""" expected_class_count = 4 dir = str.format("{}/testing_files/test_four_classes", self.current_dir).replace("\\", "/") self.dir_reader.set_directory(dir) for aDir in self.dir_reader.get_file_dirs(): js_file = self.file_reader.get_file_contents(aDir) parser_director = ParserDirector(JSParserBuilder()) self.parser = parser_director.make_parser(js_file) actual_class_count = len(self.parser.get_classes()) self.assertEqual(expected_class_count, actual_class_count)
def test_multiple_classes(self): """Tests to see whether it can correctly read a js file with multiple classes.""" expected_classes = [{ 'name': 'TestClass1', 'attributes': ['attribute1', 'attribute2'], 'methods': ['constructor'] }, { 'name': 'TestClass2', 'attributes': ['attribute1', 'attribute2'], 'methods': ['constructor'] }, { 'name': 'TestClass3', 'attributes': ['attribute1', 'attribute2'], 'methods': ['constructor'] }] file_dir = str.format("{}/testing_files/test_file_2.js", self.current_dir).replace("\\", "/") js_file = self.file_reader.get_file_contents(file_dir) parser_director = ParserDirector(JSParserBuilder()) self.parser = parser_director.make_parser(js_file) actual_classes = self.parser.get_classes() self.assertEqual(expected_classes, actual_classes)
def do_create_uml(self, arg): """This command uses all the information provided so far and will produce a diagram based on input. """ directory = arg.replace("\\", "/") if self.dir_reader.is_valid_dir(directory) \ or self.dir_reader.is_valid_file(directory) \ and self.selected_file_type \ and self.selected_output_dir is True: for file in listdir(directory): file_dir = "{}/{}".format(directory, file) if file_dir.endswith(".js"): self.file_reader = JSFileReader() a_file = self.file_reader.get_file_contents(file_dir) parser_director = ParserDirector(JSParserBuilder()) self.parser = parser_director.make_parser(a_file) else: self.file_reader = PYFileReader() parser_director = ParserDirector(PYParserBuilder()) a_file = self.file_reader.get_file_contents(file_dir) self.parser = parser_director.make_parser(a_file) for aClass in self.parser.get_classes(): print(aClass) else: print("Set output dir, file type, or provide valid input dir.")