mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 18:32:12 +02:00
bitbake: toaster/tests: Add UI TestCase for deleting project
Test delete project:
- Check delete modal is visible
- Check delete modal has right text
- Confirm delete
- Check project is deleted
(Bitbake rev: 669b270b6839dbf8f2daaa20ad809b309957edfd)
Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
22960747ea
commit
cdecc1f605
103
bitbake/lib/toaster/tests/browser/test_delete_project.py
Normal file
103
bitbake/lib/toaster/tests/browser/test_delete_project.py
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# BitBake Toaster UI tests implementation
|
||||
#
|
||||
# Copyright (C) 2023 Savoir-faire Linux Inc
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from tests.browser.selenium_helpers import SeleniumTestCase
|
||||
from orm.models import BitbakeVersion, Project, Release
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
class TestDeleteProject(SeleniumTestCase):
|
||||
|
||||
def setUp(self):
|
||||
bitbake, _ = BitbakeVersion.objects.get_or_create(
|
||||
name="master",
|
||||
giturl="git://master",
|
||||
branch="master",
|
||||
dirpath="master")
|
||||
|
||||
self.release, _ = Release.objects.get_or_create(
|
||||
name="master",
|
||||
description="Yocto Project master",
|
||||
branch_name="master",
|
||||
helptext="latest",
|
||||
bitbake_version=bitbake)
|
||||
|
||||
Release.objects.get_or_create(
|
||||
name="foo",
|
||||
description="Yocto Project foo",
|
||||
branch_name="foo",
|
||||
helptext="latest",
|
||||
bitbake_version=bitbake)
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_delete_project(self):
|
||||
""" Test delete a project
|
||||
- Check delete modal is visible
|
||||
- Check delete modal has right text
|
||||
- Confirm delete
|
||||
- Check project is deleted
|
||||
"""
|
||||
project_name = "project_to_delete"
|
||||
url = reverse('newproject')
|
||||
self.get(url)
|
||||
self.enter_text('#new-project-name', project_name)
|
||||
select = Select(self.find('#projectversion'))
|
||||
select.select_by_value(str(self.release.pk))
|
||||
self.click("#create-project-button")
|
||||
# We should get redirected to the new project's page with the
|
||||
# notification at the top
|
||||
element = self.wait_until_visible('#project-created-notification')
|
||||
self.assertTrue(project_name in element.text,
|
||||
"New project name not in new project notification")
|
||||
self.assertTrue(Project.objects.filter(name=project_name).count(),
|
||||
"New project not found in database")
|
||||
|
||||
# Delete project
|
||||
delete_project_link = self.driver.find_element(
|
||||
By.XPATH, '//a[@href="#delete-project-modal"]')
|
||||
delete_project_link.click()
|
||||
|
||||
# Check delete modal is visible
|
||||
self.wait_until_visible('#delete-project-modal')
|
||||
|
||||
# Check delete modal has right text
|
||||
modal_header_text = self.find('#delete-project-modal .modal-header').text
|
||||
self.assertTrue(
|
||||
"Are you sure you want to delete this project?" in modal_header_text,
|
||||
"Delete project modal header text is wrong")
|
||||
|
||||
modal_body_text = self.find('#delete-project-modal .modal-body').text
|
||||
self.assertTrue(
|
||||
"Cancel its builds currently in progress" in modal_body_text,
|
||||
"Modal body doesn't contain: Cancel its builds currently in progress")
|
||||
self.assertTrue(
|
||||
"Remove its configuration information" in modal_body_text,
|
||||
"Modal body doesn't contain: Remove its configuration information")
|
||||
self.assertTrue(
|
||||
"Remove its imported layers" in modal_body_text,
|
||||
"Modal body doesn't contain: Remove its imported layers")
|
||||
self.assertTrue(
|
||||
"Remove its custom images" in modal_body_text,
|
||||
"Modal body doesn't contain: Remove its custom images")
|
||||
self.assertTrue(
|
||||
"Remove all its build information" in modal_body_text,
|
||||
"Modal body doesn't contain: Remove all its build information")
|
||||
|
||||
# Confirm delete
|
||||
delete_btn = self.find('#delete-project-confirmed')
|
||||
delete_btn.click()
|
||||
|
||||
# Check project is deleted
|
||||
self.wait_until_visible('#change-notification')
|
||||
delete_notification = self.find('#change-notification-msg')
|
||||
self.assertTrue("You have deleted 1 project:" in delete_notification.text)
|
||||
self.assertTrue(project_name in delete_notification.text)
|
||||
self.assertFalse(Project.objects.filter(name=project_name).exists(),
|
||||
"Project not deleted from database")
|
||||
Reference in New Issue
Block a user