mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 02:03:35 -04:00 
			
		
		
		
	Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
		| @@ -20,6 +20,7 @@ RUN pip install -r requirements.txt | ||||
| COPY ./mealie /app | ||||
| COPY ./mealie/data/templates/recipes.md /app/data/templates/ | ||||
| COPY --from=build-stage /app/dist /app/dist | ||||
| RUN rm -rf /app/test | ||||
|  | ||||
| ENV ENV prod | ||||
|  | ||||
|   | ||||
| @@ -38,12 +38,13 @@ services: | ||||
|       db_port: 27017    # The Default port for Mongo DB | ||||
|       TZ: America/Anchorage | ||||
|     volumes: | ||||
|       - ./data/img:/app/data/img | ||||
|       - ./data/backups:/app/data/backups | ||||
|       - ./mealie/data/:/app/data/ | ||||
|        | ||||
|   mongo: | ||||
|     image: mongo | ||||
|     restart: always | ||||
|     volumes: | ||||
|       - ./mongo:/data/db   | ||||
|     environment: | ||||
|       MONGO_INITDB_ROOT_USERNAME: root  # Change! | ||||
|       MONGO_INITDB_ROOT_PASSWORD: example   # Change! | ||||
| @@ -56,6 +57,7 @@ services: | ||||
|     environment: | ||||
|       ME_CONFIG_MONGODB_ADMINUSERNAME: root | ||||
|       ME_CONFIG_MONGODB_ADMINPASSWORD: example | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ## Ansible Tasks Template | ||||
|   | ||||
| @@ -19,7 +19,8 @@ | ||||
|  | ||||
|         <v-card-actions> | ||||
|           <v-spacer></v-spacer> | ||||
|           <v-btn color="primary" text @click="createRecipe"> Submit </v-btn> | ||||
|           <v-btn color="grey" text @click="reset"> Close </v-btn> | ||||
|           <v-btn color="success" text @click="createRecipe"> Submit </v-btn> | ||||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
| @@ -73,10 +74,11 @@ export default { | ||||
|     }, | ||||
|  | ||||
|     reset() { | ||||
|       (this.fab = false), | ||||
|         (this.addRecipe = false), | ||||
|         (this.recipeURL = ""), | ||||
|         (this.processing = false); | ||||
|       this.fab = false; | ||||
|       this.error = false; | ||||
|       this.addRecipe = false; | ||||
|       this.recipeURL = ""; | ||||
|       this.processing = false; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
|   | ||||
| @@ -28,7 +28,7 @@ def normalize_image_url(image) -> str: | ||||
| def normalize_instructions(instructions) -> List[dict]: | ||||
|     # One long string split by (possibly multiple) new lines | ||||
|     if type(instructions) == str: | ||||
|         return [{"text": line.strip()} for line in filter(None, instructions.split("\n"))] | ||||
|         return [{"text": line.strip()} for line in filter(None, instructions.splitlines())] | ||||
|  | ||||
|     # Plain strings in a list | ||||
|     elif type(instructions) == list and type(instructions[0]) == str: | ||||
|   | ||||
| @@ -7,48 +7,33 @@ from services.scrape_services import normalize_data, normalize_instructions | ||||
| CWD = Path(__file__).parent | ||||
| RAW_RECIPE_DIR = CWD.joinpath("data", "recipes-raw") | ||||
|  | ||||
| def pytest_generate_tests(metafunc): | ||||
|     # called once per each test function | ||||
|     funcarglist = metafunc.cls.params[metafunc.function.__name__] | ||||
|     argnames = sorted(funcarglist[0]) | ||||
|     metafunc.parametrize( | ||||
|         argnames, [[funcargs[name] for name in argnames] for funcargs in funcarglist] | ||||
|     ) | ||||
|  | ||||
|  | ||||
| def raw_recipe_info(file_name: str, num_steps: int) -> dict: | ||||
|     return {"json_file": RAW_RECIPE_DIR.joinpath(file_name), "num_steps": num_steps}  | ||||
|  | ||||
|  | ||||
| class TestScraper: | ||||
|     # a map specifying multiple argument sets for a test method | ||||
|     params = { | ||||
|         "test_normalize_instructions": [ | ||||
|             dict(instructions="A\n\nB\n\nC\n\n"), | ||||
|             dict(instructions=["A","B","C"]), | ||||
|             dict(instructions=[{"@type": "HowToStep", "text": "A"}, | ||||
|                                {"@type": "HowToStep", "text": "B"}, | ||||
|                                {"@type": "HowToStep", "text": "C"}]), | ||||
|         ],   | ||||
|         "test_normalize_data": [ | ||||
|             raw_recipe_info("best-homemade-salsa-recipe.json", 2), | ||||
|             raw_recipe_info("blue-cheese-stuffed-turkey-meatballs-with-raspberry-balsamic-glaze-2.json", 3), | ||||
|             raw_recipe_info("bon_appetit.json", 8), | ||||
|             raw_recipe_info("chunky-apple-cake.json", 4), | ||||
|             raw_recipe_info("dairy-free-impossible-pumpkin-pie.json", 7), | ||||
|             raw_recipe_info("how-to-make-instant-pot-spaghetti.json", 8), | ||||
|             raw_recipe_info("instant-pot-chicken-and-potatoes.json", 4), | ||||
|             raw_recipe_info("instant-pot-kerala-vegetable-stew.json", 13), | ||||
|             raw_recipe_info("jalapeno-popper-dip.json", 4), | ||||
|             raw_recipe_info("microwave_sweet_potatoes_04783.json", 4), | ||||
|             raw_recipe_info("moroccan-skirt-steak-with-roasted-pepper-couscous.json", 4), | ||||
|             raw_recipe_info("Pizza-Knoblauch-Champignon-Paprika-vegan.html.json", 5), | ||||
|         ] | ||||
|     } | ||||
|  | ||||
|     def test_normalize_data(self, json_file, num_steps): | ||||
|         recipe_data = normalize_data(json.load(open(json_file))) | ||||
| @pytest.mark.parametrize("json_file,num_steps", [ | ||||
|     ("best-homemade-salsa-recipe.json", 2), | ||||
|     ("blue-cheese-stuffed-turkey-meatballs-with-raspberry-balsamic-glaze-2.json", 3), | ||||
|     ("bon_appetit.json", 8), | ||||
|     ("chunky-apple-cake.json", 4), | ||||
|     ("dairy-free-impossible-pumpkin-pie.json", 7), | ||||
|     ("how-to-make-instant-pot-spaghetti.json", 8), | ||||
|     ("instant-pot-chicken-and-potatoes.json", 4), | ||||
|     ("instant-pot-kerala-vegetable-stew.json", 13), | ||||
|     ("jalapeno-popper-dip.json", 4), | ||||
|     ("microwave_sweet_potatoes_04783.json", 4), | ||||
|     ("moroccan-skirt-steak-with-roasted-pepper-couscous.json", 4), | ||||
|     ("Pizza-Knoblauch-Champignon-Paprika-vegan.html.json", 3), | ||||
| ]) | ||||
| def test_normalize_data(json_file, num_steps): | ||||
|     recipe_data = normalize_data(json.load(open(RAW_RECIPE_DIR.joinpath(json_file)))) | ||||
|     assert len(recipe_data["recipeInstructions"]) == num_steps | ||||
|  | ||||
|     def test_normalize_instructions(self, instructions): | ||||
|  | ||||
| @pytest.mark.parametrize("instructions", [ | ||||
|     "A\n\nB\n\nC\n\n", | ||||
|     "A\nB\nC\n", | ||||
|     "A\r\n\r\nB\r\n\r\nC\r\n\r\n", | ||||
|     "A\r\nB\r\nC\r\n", | ||||
|     ["A","B","C"], | ||||
|     [{"@type": "HowToStep", "text": x} for x in ["A","B","C"]] | ||||
| ]) | ||||
| def test_normalize_instructions(instructions): | ||||
|     assert normalize_instructions(instructions) == [{"text": "A"}, {"text": "B"}, {"text": "C"}] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user