Skip to content

Commit

Permalink
Merge pull request #260 from adhil0/initial_test
Browse files Browse the repository at this point in the history
Add initial tests + testing automation
  • Loading branch information
dcritch authored Jan 29, 2024
2 parents 5649c35 + 7b49b50 commit ae80483
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 24 deletions.
40 changes: 20 additions & 20 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,21 @@
## Super Linter GitHub Actions ##
#################################
#################################
name: Lint Code Base
name: Lint & Test Code Base

#############################
# Start the job on all push #
# Start the job on all pull requests #
#############################
on:
push:
branches: [linting]
# Remove the line above to run when pushing to master
pull_request:
branches: [master, main]

###############
# Set the Job #
###############
jobs:
build:
# Name the Job
lint:
name: Lint Code Base
# Set the agent to run on
runs-on: ubuntu-latest

##################
# Load all steps #
##################
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
# Full git history is needed to get a proper
# list of changed files within `super-linter`
Expand All @@ -52,3 +36,19 @@ jobs:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KUBERNETES_KUBECONFORM_OPTIONS: -ignore-missing-schemas
test:
name: Test Code Base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install Dependencies
run: | # apt packages needed for python3-saml, which is dependent on xmlsec
sudo apt-get update
sudo apt-get install -y pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl
pip install dashboard/src pytest pytest-cov
- name: Test with pytest
run: pytest . --cov
6 changes: 5 additions & 1 deletion dashboard/src/t5gweb/libtelco5g.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,11 @@ def redis_set(key, value):
def redis_get(key):
logging.warning("fetching {}..".format(key))
r_cache = redis.Redis(host="redis")
data = r_cache.get(key)
try:
data = r_cache.get(key)
except redis.exceptions.ConnectionError:
logging.warning("Couldn't connect to redis host, setting data to None")
data = None
if data is not None:
data = json.loads(data.decode("utf-8"))
else:
Expand Down
9 changes: 6 additions & 3 deletions dashboard/src/t5gweb/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,12 @@ def exists_or_zero(data, key):
return 0


def get_previous_quarter():
"""Creates JIRA query to get cards from previous quarter"""
day = date.today()
def get_previous_quarter(day=None):
"""Creates JIRA query to get cards from previous quarter from day
Day should be of type datetime.date
"""
if day is None:
day = date.today()
if 1 <= day.month <= 3:
query_range = (
f'((updated >= "{day.year-1}-10-01" AND updated <= "{day.year-1}-12-31")'
Expand Down
Empty file added dashboard/src/tests/__init__.py
Empty file.
91 changes: 91 additions & 0 deletions dashboard/src/tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import pytest
from t5gweb.utils import exists_or_zero, get_random_member, set_defaults


@pytest.mark.parametrize(
"data, key, expected",
[
({"test": "result"}, "test", "result"),
({"test": "result"}, "not in dictionary", 0),
({}, "empty", 0),
({"test": "result"}, "", 0),
],
)
def test_exists_or_zero(data, key, expected):
data_point = exists_or_zero(data, key)
assert data_point == expected


@pytest.fixture
def sample_team():
return ["Alice", "Bob", "Charlie", "David"]


def test_get_random_member_basic(sample_team):
result = get_random_member(sample_team)
assert result in sample_team


def test_get_random_member_avoid_same_person_twice(sample_team):
first_choice = get_random_member(sample_team)
second_choice = get_random_member(sample_team, last_choice=first_choice)

assert first_choice in sample_team
assert second_choice in sample_team
assert first_choice != second_choice


def test_get_random_member_single_member():
team = ["Alice"]
result = get_random_member(team)
assert result == "Alice"


def test_get_random_member_empty_team_with_warning(caplog):
team = []
result = get_random_member(team)
assert result is None
assert "No team variable is available, cannot assign case." in caplog.text


def test_set_default():
defaults = set_defaults()
assert defaults["smtp"] == "localhost"
assert defaults["from"] == "dashboard@example.com"
assert defaults["to"] == ""
assert defaults["alert_to"] == "root@localhost"
assert defaults["subject"] == "New Card(s) Have Been Created to Track Issues"
assert defaults["sprintname"] == ""
assert defaults["server"] == ""
assert defaults["project"] == ""
assert defaults["component"] == ""
assert defaults["board"] == ""
assert defaults["email"] == ""
assert defaults["type"] == "Story"
assert defaults["labels"] == ""
assert defaults["priority"] == "High"
assert defaults["points"] == 3
assert defaults["password"] == ""
assert defaults["card_action"] == "none"
assert defaults["debug"] == "False"
assert defaults["team"] == []
assert defaults["fields"] == [
"case_account_name",
"case_summary",
"case_number",
"case_status",
"case_owner",
"case_severity",
"case_createdDate",
"case_lastModifiedDate",
"case_bugzillaNumber",
"case_description",
"case_tags",
"case_product",
"case_version",
"case_closedDate",
]
assert defaults["slack_token"] == ""
assert defaults["slack_channel"] == ""
assert defaults["max_jira_results"] == 1000
assert defaults["max_portal_results"] == 5000

0 comments on commit ae80483

Please sign in to comment.