mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-10-31 10:19:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Unit Tests
 | ||
| 
 | ||
| This directory contains unit tests for various custom components in the project, such as the custom lookup plugin `docker_cards` used in the `web-app-desktop` role.
 | ||
| 
 | ||
| ## Overview
 | ||
| 
 | ||
| The unit tests are written using Python’s built-in `unittest` framework. They are designed to verify that your custom logic works as expected—such as extracting metadata from role files—without needing to run the entire playbook.
 | ||
| 
 | ||
| ## Running the Tests
 | ||
| 
 | ||
| You can run the tests using one of the following methods:
 | ||
| 
 | ||
| 1. **Using Unittest Discovery:**
 | ||
| 
 | ||
|    From the project's root directory, run:
 | ||
| 
 | ||
|    ```bash
 | ||
|    python -m unittest discover -s tests/unit
 | ||
|    ```
 | ||
| 
 | ||
|    This command will discover and execute all test files within the `tests/unit` directory.
 | ||
| 
 | ||
| 2. **Running a Specific Test File:**
 | ||
| 
 | ||
|    If you want to run only the Docker cards test, execute:
 | ||
| 
 | ||
|    ```bash
 | ||
|    python tests/unit/test_docker_cards.py
 | ||
|    ```
 | ||
| 
 | ||
| ## How It Works
 | ||
| 
 | ||
| - **Setup:**  
 | ||
|   The test script creates a temporary directory to simulate your roles folder. It then creates a sample role (`web-app-desktop`) with a `README.md` file (containing a header for the title) and a `meta/main.yml` file (with the required metadata).
 | ||
| 
 | ||
| - **Execution:**  
 | ||
|   Dummy variable values for `domains` and `applications` are provided (these are the variables the lookup plugin expects). The lookup plugin is then run, which processes the sample role and returns the card information.
 | ||
| 
 | ||
| - **Verification:**  
 | ||
|   The test uses assertions to ensure that the output contains the expected title, description, icon information, constructed URL, and the correct iframe flag.
 | ||
| 
 | ||
| - **Cleanup:**  
 | ||
|   After the test completes, the temporary directory is removed, ensuring that no test artifacts remain.
 | ||
| 
 | ||
| ## Requirements
 | ||
| 
 | ||
| - Python 3.6 or newer is recommended.
 | ||
| - All necessary dependencies for your project should be installed.
 | ||
| 
 | ||
| These tests help ensure that your custom code is reliable and behaves as expected, and they can be easily integrated into a Continuous Integration (CI) pipeline.
 | ||
| 
 | ||
| Happy testing! |