Skip to content

Commit

Permalink
Log in without GUI, saving a few seconds
Browse files Browse the repository at this point in the history
  • Loading branch information
Godsmith committed Nov 27, 2021
1 parent ee004ac commit b205db4
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 68 deletions.
34 changes: 21 additions & 13 deletions planner/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import os
from pathlib import Path

import pytest
from django.conf import settings
from django.test.client import Client
from django.utils import timezone

from planner.models import Day
Expand All @@ -13,6 +14,25 @@
os.environ.setdefault("DJANGO_ALLOW_ASYNC_UNSAFE", "true")


@pytest.fixture
def page(context, user):
client = Client()
client.login(username="user1", password="user1")
cookie = client.cookies["sessionid"]
context.add_cookies(
[
{
"name": "sessionid",
"value": cookie.value,
"secure": False,
"domain": "localhost",
"path": "/",
}
]
)
return context.new_page()


@pytest.fixture
def user(client, db):
return User.objects.create_user(username="user1", password="user1")
Expand All @@ -35,18 +55,6 @@ def logged_in_user(client, user):
client.login(username="user1", password="user1")


@pytest.fixture
def logged_in_user_on_live_server(live_server, user, page):
# Set debug to True, or whitenoise will add a hash to all static files which means they cannot be found
# in the live server test cases.
settings.DEBUG = True
page.goto(live_server.url + "/accounts/login")
page.fill('input[name="username"]', "user1")
page.fill('input[name="password"]', "user1")
page.click("button[type='submit']")
return live_server


@pytest.fixture
def create_meal_for_today(user):
day, _ = Day.objects.get_or_create(date=timezone.now().date(), user=user)
Expand Down
12 changes: 4 additions & 8 deletions planner/tests/live_server/test_day.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
from django.utils import timezone


def test_all_modals_are_hidden_by_default(
logged_in_user_on_live_server, page, create_meal_for_today
):
def test_all_modals_are_hidden_by_default(live_server, page, create_meal_for_today):
# Arrange
page.goto(logged_in_user_on_live_server.url)
page.goto(live_server.url)

# Act

# Assert
assert page.is_hidden(".selectize-input")


def test_clicking_edit_day_button_shows_input_for_editing_day(
logged_in_user_on_live_server, day, user, page
):
def test_clicking_edit_day_button_shows_input_for_editing_day(live_server, day, page):
# Arrange
date = timezone.now().date().isoformat()
page.goto(logged_in_user_on_live_server.url)
page.goto(live_server.url)

# Act
page.click(f"a.day-{date}")
Expand Down
7 changes: 2 additions & 5 deletions planner/tests/test_index.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import time
from datetime import timedelta

from django.urls import reverse
Expand Down Expand Up @@ -42,11 +41,9 @@ def test_posting_week_offset_and_count_updates_database(client, day):
assert "My recipe" in str(response.content)


def test_changing_to_displaying_two_weeks_ago_shows_last_monday(
logged_in_user_on_live_server, page
):
def test_changing_to_displaying_two_weeks_ago_shows_last_monday(live_server, page):
# Arrange
page.goto(logged_in_user_on_live_server.url)
page.goto(live_server.url)

monday_current_week = timezone.now().date() - timedelta(
days=timezone.now().date().weekday()
Expand Down
30 changes: 10 additions & 20 deletions planner/tests/test_recipes.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,19 @@
from planner.models import Meal


def test_meal_modal_is_hidden_by_default(
logged_in_user_on_live_server, page, create_meal_for_today
):
def test_meal_modal_is_hidden_by_default(live_server, page, create_meal_for_today):
# Arrange
page.goto(logged_in_user_on_live_server.url + "/recipes")
page.goto(live_server.url + "/recipes")

# Act

# Assert
assert page.is_hidden(".modal")


def test_clicking_recipe_opens_modal(
logged_in_user_on_live_server, page, create_meal_for_today
):
def test_clicking_recipe_opens_modal(live_server, page, create_meal_for_today):
# Arrange
page.goto(logged_in_user_on_live_server.url + "/recipes")
page.goto(live_server.url + "/recipes")

# Act
page.click(".exists")
Expand All @@ -29,35 +25,29 @@ def test_clicking_recipe_opens_modal(
assert page.is_visible(".modal")


def test_not_created_recipes_are_not_visible_on_recipes_page(
logged_in_user_on_live_server, page, day, user
):
def test_not_created_recipes_are_not_visible_on_recipes_page(live_server, page, day):
# Arrange

# Act
page.goto(logged_in_user_on_live_server.url + "/recipes")
page.goto(live_server.url + "/recipes")

# Assert
assert "My recipe" not in page.content()


def test_recipes_are_visible_on_recipes_page(
logged_in_user_on_live_server, page, create_meal_for_today
):
def test_recipes_are_visible_on_recipes_page(live_server, page, create_meal_for_today):
# Arrange

# Act
page.goto(logged_in_user_on_live_server.url + "/recipes")
page.goto(live_server.url + "/recipes")

# Assert
assert "My recipe" in page.content()


def test_deleting_meal_removes_it_from_list(
logged_in_user_on_live_server, page, create_meal_for_today
):
def test_deleting_meal_removes_it_from_list(live_server, page, create_meal_for_today):
# Arrange
page.goto(logged_in_user_on_live_server.url + "/recipes")
page.goto(live_server.url + "/recipes")
page.check("input[type='checkbox']")
page.on("dialog", lambda dialog: dialog.accept())

Expand Down
34 changes: 12 additions & 22 deletions planner/tests/test_update_meal.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,22 @@
from planner.models import Meal


def test_meals_without_source_has_class_does_not_exist(
logged_in_user_on_live_server, day, page
):
page.goto(logged_in_user_on_live_server.url)
def test_meals_without_source_has_class_does_not_exist(live_server, day, page):
page.goto(live_server.url)

assert page.is_visible(".does-not-exist")
assert not page.is_visible(".exists")


def test_meals_with_source_has_class_exists(
logged_in_user_on_live_server, create_meal_for_today, page
):
page.goto(logged_in_user_on_live_server.url)
def test_meals_with_source_has_class_exists(live_server, create_meal_for_today, page):
page.goto(live_server.url)

assert not page.is_visible(".does-not-exist")
assert page.is_visible(".exists")


def test_adding_source_to_meal_makes_that_meal_exist(
logged_in_user_on_live_server, day, user, page
):
page.goto(logged_in_user_on_live_server.url)
def test_adding_source_to_meal_makes_that_meal_exist(live_server, day, page):
page.goto(live_server.url)
page.click(".does-not-exist")
page.fill('input[name="source"]', "my_source")
page.click('button[form="update-meal"]')
Expand All @@ -32,10 +26,8 @@ def test_adding_source_to_meal_makes_that_meal_exist(
assert page.is_visible(".exists")


def test_clicking_meal_that_does_not_exist_opens_edit_dialog(
logged_in_user_on_live_server, day, user, page
):
page.goto(logged_in_user_on_live_server.url)
def test_clicking_meal_that_does_not_exist_opens_edit_dialog(live_server, day, page):
page.goto(live_server.url)

assert not page.is_visible("input.name")

Expand All @@ -45,9 +37,7 @@ def test_clicking_meal_that_does_not_exist_opens_edit_dialog(
assert not page.is_visible("input.name")


def test_clicking_meal_that_exists_opens_show_dialog(
logged_in_user_on_live_server, day, user, page
):
def test_clicking_meal_that_exists_opens_show_dialog(live_server, day, user, page):
# Arrange
meal = Meal.objects.create(
name="My recipe",
Expand All @@ -59,7 +49,7 @@ def test_clicking_meal_that_exists_opens_show_dialog(
steps="mysteps",
)
day.meals.add(meal)
page.goto(logged_in_user_on_live_server.url)
page.goto(live_server.url)
assert not page.is_visible("input.name")

# Act
Expand All @@ -72,10 +62,10 @@ def test_clicking_meal_that_exists_opens_show_dialog(
assert "Source" in str(page.content())


def test_add_category_to_meal(logged_in_user_on_live_server, day, user, page):
def test_add_category_to_meal(live_server, day, user, page):
# Arrange
Category.objects.create(name="Vegetariskt")
page.goto(logged_in_user_on_live_server.url)
page.goto(live_server.url)
page.click(".does-not-exist")

# Act
Expand Down

0 comments on commit b205db4

Please sign in to comment.