Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package agama-web-ui for openSUSE:Factory 
checked in at 2025-01-25 19:12:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-web-ui (Old)
 and      /work/SRC/openSUSE:Factory/.agama-web-ui.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "agama-web-ui"

Sat Jan 25 19:12:25 2025 rev:10 rq:1240160 version:0

Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-web-ui/agama-web-ui.changes        
2025-01-21 21:10:37.507349668 +0100
+++ /work/SRC/openSUSE:Factory/.agama-web-ui.new.2316/agama-web-ui.changes      
2025-01-25 19:12:29.640689447 +0100
@@ -1,0 +2,12 @@
+Fri Jan 24 09:34:24 UTC 2025 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Use the "finish" to decide whether to navigate to the
+  congratulations screen (gh#agama-project/agama#1616).
+
+-------------------------------------------------------------------
+Fri Jan 24 06:43:52 UTC 2025 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Use the "missing_registration" issue to determine whether to show
+  the registration alert (gh#agama-project/agama#1938).
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ agama.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/package/agama-web-ui.changes 
new/agama/package/agama-web-ui.changes
--- old/agama/package/agama-web-ui.changes      2025-01-21 10:57:35.000000000 
+0100
+++ new/agama/package/agama-web-ui.changes      2025-01-24 13:44:51.000000000 
+0100
@@ -1,4 +1,16 @@
 -------------------------------------------------------------------
+Fri Jan 24 09:34:24 UTC 2025 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Use the "finish" to decide whether to navigate to the
+  congratulations screen (gh#agama-project/agama#1616).
+
+-------------------------------------------------------------------
+Fri Jan 24 06:43:52 UTC 2025 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Use the "missing_registration" issue to determine whether to show
+  the registration alert (gh#agama-project/agama#1938).
+
+-------------------------------------------------------------------
 Tue Jan 21 09:44:08 UTC 2025 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
 
 - Do not crash at the end of the installation when using a legacy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/App.test.tsx new/agama/src/App.test.tsx
--- old/agama/src/App.test.tsx  2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/App.test.tsx  2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2022-2024] SUSE LLC
+ * Copyright (c) [2022-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -40,8 +40,8 @@
   updateConfig: jest.fn(),
 }));
 
-const tumbleweed: Product = { id: "openSUSE", name: "openSUSE Tumbleweed", 
registration: "no" };
-const microos: Product = { id: "Leap Micro", name: "openSUSE Micro", 
registration: "no" };
+const tumbleweed: Product = { id: "openSUSE", name: "openSUSE Tumbleweed", 
registration: false };
+const microos: Product = { id: "Leap Micro", name: "openSUSE Micro", 
registration: false };
 
 // list of available products
 let mockProducts: Product[];
@@ -203,10 +203,9 @@
     });
   });
 
-  describe("on the busy installation phase", () => {
+  describe("on the installation phase", () => {
     beforeEach(() => {
       mockClientStatus.phase = InstallationPhase.Install;
-      mockClientStatus.isBusy = true;
       mockSelectedProduct = tumbleweed;
     });
 
@@ -216,10 +215,9 @@
     });
   });
 
-  describe("on the idle installation phase", () => {
+  describe("on the finish phase", () => {
     beforeEach(() => {
-      mockClientStatus.phase = InstallationPhase.Install;
-      mockClientStatus.isBusy = false;
+      mockClientStatus.phase = InstallationPhase.Finish;
       mockSelectedProduct = tumbleweed;
     });
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/App.tsx new/agama/src/App.tsx
--- old/agama/src/App.tsx       2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/App.tsx       2025-01-24 13:44:51.000000000 +0100
@@ -55,11 +55,11 @@
   const Content = () => {
     if (error) return <ServerError />;
 
-    if (phase === InstallationPhase.Install && isBusy) {
+    if (phase === InstallationPhase.Install) {
       return <Navigate to={ROOT.installationProgress} />;
     }
 
-    if (phase === InstallationPhase.Install && !isBusy) {
+    if (phase === InstallationPhase.Finish) {
       return <Navigate to={ROOT.installationFinished} />;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/core/ChangeProductLink.test.tsx 
new/agama/src/components/core/ChangeProductLink.test.tsx
--- old/agama/src/components/core/ChangeProductLink.test.tsx    2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/ChangeProductLink.test.tsx    2025-01-24 
13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -33,14 +33,14 @@
   name: "openSUSE Tumbleweed",
   icon: "tumbleweed.svg",
   description: "Tumbleweed description...",
-  registration: "no",
+  registration: false,
 };
 const microos: Product = {
   id: "MicroOS",
   name: "openSUSE MicroOS",
   icon: "MicroOS.svg",
   description: "MicroOS description",
-  registration: "no",
+  registration: false,
 };
 
 let mockUseProduct: { products: Product[]; selectedProduct?: Product };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/core/InstallButton.test.tsx 
new/agama/src/components/core/InstallButton.test.tsx
--- old/agama/src/components/core/InstallButton.test.tsx        2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/InstallButton.test.tsx        2025-01-24 
13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2022-2024] SUSE LLC
+ * Copyright (c) [2022-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -56,6 +56,7 @@
         [
           {
             description: "Fake Issue",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Fake Issue details",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/core/InstallationFinished.test.tsx 
new/agama/src/components/core/InstallationFinished.test.tsx
--- old/agama/src/components/core/InstallationFinished.test.tsx 2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/InstallationFinished.test.tsx 2025-01-24 
13:44:51.000000000 +0100
@@ -29,7 +29,7 @@
 
 jest.mock("~/queries/status", () => ({
   ...jest.requireActual("~/queries/status"),
-  useInstallerStatus: () => ({ isBusy: false, useIguana: false, phase: 2, 
canInstall: false }),
+  useInstallerStatus: () => ({ isBusy: false, useIguana: false, phase: 3, 
canInstall: false }),
 }));
 
 type storageConfigType = "guided" | "raw";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/core/InstallationFinished.tsx 
new/agama/src/components/core/InstallationFinished.tsx
--- old/agama/src/components/core/InstallationFinished.tsx      2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/InstallationFinished.tsx      2025-01-24 
13:44:51.000000000 +0100
@@ -100,17 +100,13 @@
 }
 
 function InstallationFinished() {
-  const { phase, isBusy, useIguana } = useInstallerStatus({ suspense: true });
+  const { phase, useIguana } = useInstallerStatus({ suspense: true });
   const config = useConfig();
 
-  if (phase !== InstallationPhase.Install) {
+  if (phase !== InstallationPhase.Finish) {
     return <Navigate to={PATHS.root} />;
   }
 
-  if (isBusy) {
-    return <Navigate to={PATHS.installationProgress} />;
-  }
-
   return (
     <Center>
       <Grid hasGutter>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/core/InstallationProgress.test.tsx 
new/agama/src/components/core/InstallationProgress.test.tsx
--- old/agama/src/components/core/InstallationProgress.test.tsx 2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/InstallationProgress.test.tsx 2025-01-24 
13:44:51.000000000 +0100
@@ -27,7 +27,6 @@
 import InstallationProgress from "./InstallationProgress";
 import { ROOT } from "~/routes/paths";
 
-let isBusy = false;
 let phase = InstallationPhase.Install;
 const mockInstallerStatusChanges = jest.fn();
 
@@ -35,7 +34,7 @@
 
 jest.mock("~/queries/status", () => ({
   ...jest.requireActual("~/queries/status"),
-  useInstallerStatus: () => ({ isBusy, phase }),
+  useInstallerStatus: () => ({ phase }),
   useInstallerStatusChanges: () => mockInstallerStatusChanges(),
 }));
 
@@ -56,10 +55,9 @@
     });
   });
 
-  describe("when installer in the installation phase and busy", () => {
+  describe("when installer in the installation phase", () => {
     beforeEach(() => {
       phase = InstallationPhase.Install;
-      isBusy = true;
     });
 
     it("renders progress report", () => {
@@ -67,16 +65,4 @@
       screen.getByText("ProgressReport Mock");
     });
   });
-
-  describe("when installer in the installation phase but not busy", () => {
-    beforeEach(() => {
-      phase = InstallationPhase.Install;
-      isBusy = false;
-    });
-
-    it("redirect to installation finished path", async () => {
-      installerRender(<InstallationProgress />);
-      await screen.findByText(`Navigating to ${ROOT.installationFinished}`);
-    });
-  });
 });
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/core/InstallationProgress.tsx 
new/agama/src/components/core/InstallationProgress.tsx
--- old/agama/src/components/core/InstallationProgress.tsx      2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/InstallationProgress.tsx      2025-01-24 
13:44:51.000000000 +0100
@@ -29,17 +29,13 @@
 import { useInstallerStatus, useInstallerStatusChanges } from 
"~/queries/status";
 
 function InstallationProgress() {
-  const { isBusy, phase } = useInstallerStatus({ suspense: true });
+  const { phase } = useInstallerStatus({ suspense: true });
   useInstallerStatusChanges();
 
   if (phase !== InstallationPhase.Install) {
     return <Navigate to={PATHS.root} replace />;
   }
 
-  if (!isBusy) {
-    return <Navigate to={PATHS.installationFinished} replace />;
-  }
-
   return <ProgressReport title={_("Installing the system, please wait...")} />;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/core/IssuesDrawer.test.tsx 
new/agama/src/components/core/IssuesDrawer.test.tsx
--- old/agama/src/components/core/IssuesDrawer.test.tsx 2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/core/IssuesDrawer.test.tsx 2025-01-24 
13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -63,6 +63,7 @@
         [
           {
             description: "Registration Fake Issue",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Registration Fake Issue details",
@@ -71,6 +72,7 @@
         [
           {
             description: "Software Fake Issue",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Software Fake Issue details",
@@ -79,12 +81,14 @@
         [
           {
             description: "Storage Fake Issue 1",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Storage Fake Issue 1 details",
           },
           {
             description: "Storage Fake Issue 2",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Storage Fake Issue 2 details",
@@ -93,6 +97,7 @@
         [
           {
             description: "Users Fake Issue",
+            kind: "generic",
             source: 0,
             severity: 0,
             details: "Users Fake Issue details",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/layout/Header.test.tsx 
new/agama/src/components/layout/Header.test.tsx
--- old/agama/src/components/layout/Header.test.tsx     2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/layout/Header.test.tsx     2025-01-24 
13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -31,14 +31,14 @@
   id: "Tumbleweed",
   name: "openSUSE Tumbleweed",
   description: "Tumbleweed description...",
-  registration: "no",
+  registration: false,
 };
 
 const microos: Product = {
   id: "MicroOS",
   name: "openSUSE MicroOS",
   description: "MicroOS description",
-  registration: "no",
+  registration: false,
 };
 
 let phase: InstallationPhase;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/layout/Sidebar.test.tsx 
new/agama/src/components/layout/Sidebar.test.tsx
--- old/agama/src/components/layout/Sidebar.test.tsx    2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/layout/Sidebar.test.tsx    2025-01-24 
13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -32,13 +32,13 @@
 const tw: Product = {
   id: "Tumbleweed",
   name: "openSUSE Tumbleweed",
-  registration: "no",
+  registration: false,
 };
 
 const sle: Product = {
   id: "sle",
   name: "SLE",
-  registration: "mandatory",
+  registration: true,
 };
 
 let selectedProduct: Product;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/layout/Sidebar.tsx 
new/agama/src/components/layout/Sidebar.tsx
--- old/agama/src/components/layout/Sidebar.tsx 2025-01-21 10:57:35.000000000 
+0100
+++ new/agama/src/components/layout/Sidebar.tsx 2025-01-24 13:44:51.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -34,7 +34,7 @@
 
   const links = rootRoutes().map((r) => {
     if (!r.handle) return null;
-    if (r.handle.needsRegistrableProduct && product.registration === "no") 
return null;
+    if (r.handle.needsRegistrableProduct && !product.registration) return null;
 
     // eslint-disable-next-line agama-i18n/string-literals
     const name = _(r.handle.name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/components/product/LicenseDialog.test.tsx 
new/agama/src/components/product/LicenseDialog.test.tsx
--- old/agama/src/components/product/LicenseDialog.test.tsx     2025-01-21 
10:57:35.000000000 +0100
+++ new/agama/src/components/product/LicenseDialog.test.tsx     2025-01-24 
13:44:51.000000000 +0100
@@ -32,7 +32,7 @@
   name: "SUSE Linux Enterprise",
   icon: "sle.svg",
   description: "SLE description",
-  registration: "mandatory",
+  registration: true,
   license: "license.sle",
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductRegistrationAlert.test.tsx 
new/agama/src/components/product/ProductRegistrationAlert.test.tsx
--- old/agama/src/components/product/ProductRegistrationAlert.test.tsx  
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductRegistrationAlert.test.tsx  
2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -24,30 +24,30 @@
 import { screen } from "@testing-library/react";
 import { installerRender, mockRoutes } from "~/test-utils";
 import ProductRegistrationAlert from "./ProductRegistrationAlert";
-import { Product, RegistrationInfo } from "~/types/software";
-import { useProduct, useRegistration } from "~/queries/software";
+import { Product } from "~/types/software";
+import { useProduct } from "~/queries/software";
+import { useIssues } from "~/queries/issues";
 import { PRODUCT, REGISTRATION, ROOT, USER } from "~/routes/paths";
+import { Issue } from "~/types/issues";
 
 jest.mock("~/components/core/ChangeProductLink", () => () => 
<div>ChangeProductLink Mock</div>);
 
 const tw: Product = {
   id: "Tumbleweed",
   name: "openSUSE Tumbleweed",
-  registration: "no",
+  registration: false,
 };
 
 const sle: Product = {
   id: "sle",
   name: "SLE",
-  registration: "mandatory",
+  registration: true,
 };
 
 let selectedProduct: Product;
-let registrationInfoMock: RegistrationInfo;
 
 jest.mock("~/queries/software", () => ({
   ...jest.requireActual("~/queries/software"),
-  useRegistration: (): ReturnType<typeof useRegistration> => 
registrationInfoMock,
   useProduct: (): ReturnType<typeof useProduct> => {
     return {
       products: [tw, sle],
@@ -56,6 +56,20 @@
   },
 }));
 
+let issues: Issue[] = [];
+const registrationIssue: Issue = {
+  description: "Product must be registered",
+  details: "",
+  kind: "missing_registration",
+  source: 0,
+  severity: 0,
+};
+
+jest.mock("~/queries/issues", () => ({
+  ...jest.requireActual("~/queries/issues"),
+  useIssues: (): ReturnType<typeof useIssues> => issues,
+}));
+
 const rendersNothingInSomePaths = () => {
   describe.each([
     ["login", ROOT.login],
@@ -77,10 +91,10 @@
 };
 
 describe("ProductRegistrationAlert", () => {
-  describe("when product is registrable and registration code is not set", () 
=> {
+  describe("when the registration is missing", () => {
     beforeEach(() => {
+      issues = [registrationIssue];
       selectedProduct = sle;
-      registrationInfoMock = { key: "", email: "" };
     });
 
     rendersNothingInSomePaths();
@@ -109,21 +123,10 @@
     });
   });
 
-  describe("when product is registrable and registration code is already set", 
() => {
+  describe("when the registration is not needed", () => {
     beforeEach(() => {
+      issues = [];
       selectedProduct = sle;
-      registrationInfoMock = { key: "INTERNAL-USE-ONLY-1234-5678", email: "" };
-    });
-
-    it("renders nothing", () => {
-      const { container } = installerRender(<ProductRegistrationAlert />);
-      expect(container).toBeEmptyDOMElement();
-    });
-  });
-
-  describe("when product is not registrable", () => {
-    beforeEach(() => {
-      selectedProduct = tw;
     });
 
     it("renders nothing", () => {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductRegistrationAlert.tsx 
new/agama/src/components/product/ProductRegistrationAlert.tsx
--- old/agama/src/components/product/ProductRegistrationAlert.tsx       
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductRegistrationAlert.tsx       
2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2023-2024] SUSE LLC
+ * Copyright (c) [2023-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -24,11 +24,11 @@
 import { Alert } from "@patternfly/react-core";
 import { useLocation } from "react-router-dom";
 import { Link } from "~/components/core";
-import { useProduct, useRegistration } from "~/queries/software";
+import { useProduct } from "~/queries/software";
 import { REGISTRATION, SUPPORTIVE_PATHS } from "~/routes/paths";
-import { isEmpty } from "~/utils";
 import { _ } from "~/i18n";
 import { sprintf } from "sprintf-js";
+import { useIssues } from "~/queries/issues";
 
 const LinkToRegistration = () => {
   const location = useLocation();
@@ -45,12 +45,13 @@
 export default function ProductRegistrationAlert() {
   const location = useLocation();
   const { selectedProduct: product } = useProduct();
-  const registration = useRegistration();
+  const issues = useIssues("product");
+  const registrationRequired = issues.find((i) => i.kind === 
"missing_registration");
 
   // NOTE: it shouldn't be mounted in these paths, but let's prevent rendering
   // if so just in case.
   if (SUPPORTIVE_PATHS.includes(location.pathname)) return;
-  if (["no", undefined].includes(product.registration) || 
!isEmpty(registration.key)) return;
+  if (!registrationRequired) return;
 
   return (
     <Alert isInline variant="warning" title={sprintf(_("%s must be 
registered."), product.name)}>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductRegistrationPage.test.tsx 
new/agama/src/components/product/ProductRegistrationPage.test.tsx
--- old/agama/src/components/product/ProductRegistrationPage.test.tsx   
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductRegistrationPage.test.tsx   
2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -30,19 +30,23 @@
 const tw: Product = {
   id: "Tumbleweed",
   name: "openSUSE Tumbleweed",
-  registration: "no",
+  registration: false,
 };
 
 const sle: Product = {
   id: "sle",
   name: "SLE",
-  registration: "mandatory",
+  registration: true,
 };
 
 let selectedProduct: Product;
 let registrationInfoMock: RegistrationInfo;
 const registerMutationMock = jest.fn();
 
+jest.mock("~/components/product/ProductRegistrationAlert", () => () => (
+  <div>ProductRegistrationAlert Mock</div>
+));
+
 jest.mock("~/queries/software", () => ({
   ...jest.requireActual("~/queries/software"),
   useRegisterMutation: () => ({ mutate: registerMutationMock }),
@@ -74,11 +78,6 @@
       registrationInfoMock = { key: "", email: "" };
     });
 
-    it("renders ProductRegistrationAlert component", () => {
-      installerRender(<ProductRegistrationPage />);
-      screen.getByText("Warning alert:");
-    });
-
     it("renders a form to allow user registering the product", async () => {
       const { user } = installerRender(<ProductRegistrationPage />);
       const registrationCodeInput = screen.getByLabelText("Registration code");
@@ -107,11 +106,6 @@
       registrationInfoMock = { key: "INTERNAL-USE-ONLY-1234-5678", email: 
"exam...@company.test" };
     });
 
-    it("does not render ProductRegistrationAlert component", () => {
-      installerRender(<ProductRegistrationPage />);
-      expect(screen.queryByText("Warning alert:")).toBeNull();
-    });
-
     it("renders registration information with code partially hidden", async () 
=> {
       const { user } = installerRender(<ProductRegistrationPage />);
       const visibilityCodeToggler = screen.getByRole("button", { name: "Show" 
});
@@ -125,42 +119,5 @@
       expect(screen.queryByText("INTERNAL-USE-ONLY-1234-5678")).toBeNull();
       screen.getByText(/\*?5678/);
     });
-
-    //   describe("but at registration path already", () => {
-    //     beforeEach(() => {
-    //       mockRoutes(REGISTRATION.root);
-    //     });
-    //
-    //     it("does not render the link to registration", () => {
-    //       installerRender(<ProductRegistrationAlert />);
-    //       screen.getByRole("heading", {
-    //         name: /Warning alert:.*must be registered/,
-    //       });
-    //       expect(screen.queryAllByRole("link")).toEqual([]);
-    //     });
-    //   });
-    // });
-    //
-    // describe("when product is registrable and registration code is already 
set", () => {
-    //   beforeEach(() => {
-    //     selectedProduct = sle;
-    //     registrationInfoMock = { key: "INTERNAL-USE-ONLY-1234-5678", email: 
"" };
-    //   });
-    //
-    //   it("renders nothing", () => {
-    //     const { container } = installerRender(<ProductRegistrationAlert />);
-    //     expect(container).toBeEmptyDOMElement();
-    //   });
-    // });
-    //
-    // describe("when product is not registrable", () => {
-    //   beforeEach(() => {
-    //     selectedProduct = tw;
-    //   });
-    //
-    //   it("renders nothing", () => {
-    //     const { container } = installerRender(<ProductRegistrationAlert />);
-    //     expect(container).toBeEmptyDOMElement();
-    //   });
   });
 });
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductRegistrationPage.tsx 
new/agama/src/components/product/ProductRegistrationPage.tsx
--- old/agama/src/components/product/ProductRegistrationPage.tsx        
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductRegistrationPage.tsx        
2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2023-2024] SUSE LLC
+ * Copyright (c) [2023-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -146,7 +146,7 @@
   const registration = useRegistration();
 
   // TODO: render something meaningful instead? "Product not registrable"?
-  if (product.registration === "no") return;
+  if (!product.registration) return;
 
   return (
     <Page>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductSelectionPage.test.tsx 
new/agama/src/components/product/ProductSelectionPage.test.tsx
--- old/agama/src/components/product/ProductSelectionPage.test.tsx      
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductSelectionPage.test.tsx      
2025-01-24 13:44:51.000000000 +0100
@@ -38,7 +38,7 @@
   name: "openSUSE Tumbleweed",
   icon: "tumbleweed.svg",
   description: "Tumbleweed description...",
-  registration: "no",
+  registration: false,
 };
 
 const microOs: Product = {
@@ -46,7 +46,7 @@
   name: "openSUSE MicroOS",
   icon: "microos.svg",
   description: "MicroOS description",
-  registration: "no",
+  registration: false,
   license: "fake.license",
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/agama/src/components/product/ProductSelectionProgress.test.tsx 
new/agama/src/components/product/ProductSelectionProgress.test.tsx
--- old/agama/src/components/product/ProductSelectionProgress.test.tsx  
2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/components/product/ProductSelectionProgress.test.tsx  
2025-01-24 13:44:51.000000000 +0100
@@ -30,7 +30,7 @@
 jest.mock("~/components/core/ProgressReport", () => () => <div>ProgressReport 
Mock</div>);
 
 let isBusy = false;
-const tumbleweed: Product = { id: "openSUSE", name: "openSUSE Tumbleweed", 
registration: "no" };
+const tumbleweed: Product = { id: "openSUSE", name: "openSUSE Tumbleweed", 
registration: false };
 
 jest.mock("~/queries/status", () => ({
   ...jest.requireActual("~/queries/status"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/types/issues.ts 
new/agama/src/types/issues.ts
--- old/agama/src/types/issues.ts       2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/types/issues.ts       2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -57,6 +57,8 @@
 type Issue = {
   /** Issue description */
   description: string;
+  /** Issue kind **/
+  kind: string;
   /** Issue details. It is not mandatory. */
   details: string | undefined;
   /** Where the issue comes from */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/types/software.ts 
new/agama/src/types/software.ts
--- old/agama/src/types/software.ts     2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/types/software.ts     2025-01-24 13:44:51.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2024] SUSE LLC
+ * Copyright (c) [2024-2025] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -42,7 +42,7 @@
   /** Product icon (e.g., "default.svg") */
   icon?: string;
   /** If product is registrable or not */
-  registration: "no" | "optional" | "mandatory";
+  registration: boolean;
   /** The product license id, if any */
   license?: string;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agama/src/types/status.ts 
new/agama/src/types/status.ts
--- old/agama/src/types/status.ts       2025-01-21 10:57:35.000000000 +0100
+++ new/agama/src/types/status.ts       2025-01-24 13:44:51.000000000 +0100
@@ -27,6 +27,7 @@
   Startup = 0,
   Config = 1,
   Install = 2,
+  Finish = 3,
 }
 
 /*

++++++ agama.obsinfo ++++++
--- /var/tmp/diff_new_pack.6ASGVX/_old  2025-01-25 19:12:30.772735915 +0100
+++ /var/tmp/diff_new_pack.6ASGVX/_new  2025-01-25 19:12:30.776736080 +0100
@@ -1,5 +1,5 @@
 name: agama
-version: 11+65
-mtime: 1737453455
-commit: fa72f8e26aecd94127b0c4c578180e933f1c799b
+version: 11+99
+mtime: 1737722691
+commit: c17204ce3f6b7aa74e670c336581bf8204c8faeb
 

Reply via email to