mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-20 23:14:56 +02: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 `docker-portfolio` 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 (`docker-portfolio`) 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! |