Add create category test

This commit is contained in:
Joey Yakimowich-Payne 2020-02-20 22:15:36 -07:00 • committed by Andreas Rumpf
commit 31d3b2701d
3 changed files with 52 additions and 19 deletions

View file

@ -1 +1,2 @@
--threads:on --threads:on
--path:"../src/frontend"

View file

@ -1,12 +1,33 @@
import unittest, options, common, os import unittest, options, common, os
import webdriver import webdriver
import karaxutils
proc selectCategory(session: Session, name: string) = proc selectCategory(session: Session, name: string) =
with session: with session:
click "#category-selection .dropdown-toggle" click "#category-selection .dropdown-toggle"
click "#category-selection ." & name click "#category-selection ." & name
proc createCategory(session: Session, baseUrl, name, color, description: string) =
with session:
navigate baseUrl
click "#categories-btn"
ensureExists "#add-category"
click "#add-category .plus-btn"
clear "#add-category input[name='name']"
clear "#add-category input[name='description']"
sendKeys "#add-category input[name='name']", name
setColor "#add-category input[name='color']", color
sendKeys "#add-category input[name='description']", description
click "#add-category #add-category-btn"
checkText "#category-" & name.slug(), name
proc categoriesUserTests(session: Session, baseUrl: string) = proc categoriesUserTests(session: Session, baseUrl: string) =
let let
title = "Category Test" title = "Category Test"
@ -105,17 +126,17 @@ proc categoriesUserTests(session: Session, baseUrl: string) =
session.logout() session.logout()
proc categoriesAdminTests(session: Session, baseUrl: string) = proc categoriesAdminTests(session: Session, baseUrl: string) =
let
name = "Category Test"
color = "Creating category test"
description = "This is a description"
suite "admin tests": suite "admin tests":
with session: with session:
navigate baseUrl navigate baseUrl
login "admin", "admin" login "admin", "admin"
test "can create category": test "can create category via dropdown":
let
name = "Category Test"
color = "#720904"
description = "This is a description"
with session: with session:
click "#new-thread-btn" click "#new-thread-btn"
@ -124,27 +145,35 @@ proc categoriesAdminTests(session: Session, baseUrl: string) =
click "#add-category .plus-btn" click "#add-category .plus-btn"
clear "#add-category input[name='name']" clear "#add-category input[name='name']"
clear "#add-category input[name='color']"
clear "#add-category input[name='description']" clear "#add-category input[name='description']"
sendKeys "#add-category input[name='name']", name sendKeys "#add-category input[name='name']", name
sendKeys "#add-category input[name='color']", color setColor "#add-category input[name='color']", color
sendKeys "#add-category input[name='description']", description sendKeys "#add-category input[name='description']", description
click "#add-category #add-category-btn" click "#add-category #add-category-btn"
checkText "#category-selection .selected-category", name checkText "#category-selection .selected-category", name
test "category adding disabled on admin logout": test "can create category on category page":
with session: let
navigate(baseUrl & "c/0") name = "Category Test Page"
ensureExists "#add-category" color = "#70B4D4"
logout() description = "This is a description on category page"
checkIsNone "#add-category" with session:
navigate baseUrl createCategory baseUrl, name, color, description
login "admin", "admin" test "category adding disabled on admin logout":
with session:
navigate(baseUrl & "c/0")
ensureExists "#add-category"
logout()
checkIsNone "#add-category"
navigate baseUrl
login "admin", "admin"
session.logout() session.logout()

View file

@ -64,6 +64,10 @@ template check*(session: Session, element: string,
let el = session.waitForElement(element, strategy) let el = session.waitForElement(element, strategy)
check function(el) check function(el)
proc setColor*(session: Session, element, color: string, strategy=CssSelector) =
let el = session.waitForElement(element, strategy)
discard session.execute("arguments[0].setAttribute('value', '" & color & "')", el.get())
template checkIsNone*(session: Session, element: string, strategy=CssSelector) = template checkIsNone*(session: Session, element: string, strategy=CssSelector) =
discard session.waitForElement(element, strategy, waitCondition=elementIsNone) discard session.waitForElement(element, strategy, waitCondition=elementIsNone)
@ -105,7 +109,6 @@ proc waitForElements*(
while true: while true:
let loading = session.findElements(selector, strategy) let loading = session.findElements(selector, strategy)
echo loading
if loading.len > 0: if loading.len > 0:
return loading return loading
sleep(pollTime) sleep(pollTime)