diff --git a/front/src/miminet_model.py b/front/src/miminet_model.py index 1b59d313..effdef2a 100644 --- a/front/src/miminet_model.py +++ b/front/src/miminet_model.py @@ -44,7 +44,7 @@ class Network(db.Model): # type:ignore[name-defined] author_id = db.Column(BigInteger, ForeignKey("user.id"), nullable=False) guid = db.Column(Text, nullable=False, unique=True) - title = db.Column(Text, default="Новая сеть", nullable=False) + title = db.Column(Text, nullable=False) description = db.Column(Text, default="", nullable=True) diff --git a/front/src/miminet_network.py b/front/src/miminet_network.py index eee16ad7..55e64d0a 100644 --- a/front/src/miminet_network.py +++ b/front/src/miminet_network.py @@ -16,7 +16,7 @@ from miminet_config import check_image_with_pil from miminet_model import Network, Simulate, db, SimulateLog import datetime -from sqlalchemy import not_ +from sqlalchemy import not_, select, func @login_required @@ -24,10 +24,14 @@ def create_network(): user = current_user u = uuid.uuid4() - n = Network(author_id=user.id, guid=str(u)) + network_count = db.session.execute( + select(func.count()).select_from(Network).where(Network.author_id == user.id) + ).scalar_one() + print(network_count) + + n = Network(author_id=user.id, title=f"Сеть {network_count+1}", guid=str(u)) + db.session.add(n) - db.session.flush() - db.session.refresh(n) db.session.commit() return redirect(url_for("web_network", guid=n.guid)) diff --git a/front/tests/test_network_menu.py b/front/tests/test_network_menu.py index 1f3119b6..eb9f3785 100644 --- a/front/tests/test_network_menu.py +++ b/front/tests/test_network_menu.py @@ -8,12 +8,16 @@ class TestNetworkMenu: @pytest.fixture(scope="class") - def empty_network(self, selenium: MiminetTester): - empty_network = MiminetTestNetwork(selenium) + def first_network(self, selenium: MiminetTester): + network = MiminetTestNetwork(selenium) + yield network.url + network.delete() - yield empty_network.url - - empty_network.delete() + @pytest.fixture(scope="class") + def second_network(self, selenium: MiminetTester): + network = MiminetTestNetwork(selenium) + yield network.url + network.delete() def test_my_networks_button_press(self, selenium: Chrome): """Checks if it is possible to get to the network selection menu""" @@ -24,20 +28,39 @@ def test_my_networks_button_press(self, selenium: Chrome): assert selenium.current_url == HOME_PAGE - def test_new_network_existence(self, selenium: MiminetTester, empty_network: str): + def test_new_network_existence(self, selenium: MiminetTester, first_network: str): """Checks if the created network exists""" - selenium.get(empty_network) # open new network by URL + selenium.get(first_network) # open new network by URL network_name = selenium.find_element( By.CSS_SELECTOR, Location.Network.TITLE_LABEL.selector ).text - assert network_name == "Новая сеть" + assert network_name.startswith("Сеть ") - def test_new_network_open(self, selenium: MiminetTester, empty_network: str): - """Checks is it possible to open new network via home menu""" + def test_new_network_open(self, selenium: MiminetTester, first_network: str): + """Checks if it possible to open new network via home menu""" selenium.get(HOME_PAGE) selenium.find_element( By.XPATH, Location.MyNetworks.get_network_button_xpath(0) ).click() - assert empty_network == selenium.current_url + assert first_network == selenium.current_url + + def test_network_name_increments( + self, selenium: MiminetTester, first_network: str, second_network: str + ): + """Checks that the second network name has an incremented number""" + selenium.get(first_network) + name1 = selenium.find_element( + By.CSS_SELECTOR, Location.Network.TITLE_LABEL.selector + ).text + + selenium.get(second_network) + name2 = selenium.find_element( + By.CSS_SELECTOR, Location.Network.TITLE_LABEL.selector + ).text + + num1 = int(name1.split(" ")[-1]) + num2 = int(name2.split(" ")[-1]) + + assert num2 == num1 + 1