From 74c067dd6aa092e624c1cc9db7d16ffae91a90fc Mon Sep 17 00:00:00 2001
From: heikkkk <henrik.teksle.sandok@hotmail.no>
Date: Wed, 1 May 2024 14:18:25 +0200
Subject: [PATCH] test: add e2e test for updating email

---
 .../e2e/Settings/SettingsAccountView.cy.ts    | 35 +++++++++++++++++++
 src/views/Settings/SettingsAccountView.vue    | 10 +++---
 2 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 cypress/e2e/Settings/SettingsAccountView.cy.ts

diff --git a/cypress/e2e/Settings/SettingsAccountView.cy.ts b/cypress/e2e/Settings/SettingsAccountView.cy.ts
new file mode 100644
index 0000000..f24d8df
--- /dev/null
+++ b/cypress/e2e/Settings/SettingsAccountView.cy.ts
@@ -0,0 +1,35 @@
+describe('SettingsAccount Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/account')
+    cy.wait(1000)
+  });
+
+  it('update email of user', () => {
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]')
+    .should('have.value','user@example.com')
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').type('NewEmailforUser@NewExample.com')
+    cy.get('[data-cy="change-email-btn"]').click()
+    cy.wait(1000)
+    cy.get('[data-cy="change-email-msg-confirm"]').should('include.text', 'Email updated successfully!')
+
+    cy.get('[data-cy="menu"]').get('[data-cy="user"]').click();
+    cy.get('[data-testid="logout"]').click();
+
+    cy.get('#emailInput input').type('NewEmailforUser@NewExample.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/account')
+    cy.wait(1000)
+
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').type('user@example.com')
+    cy.get('[data-cy="change-email-btn"]').click()
+  })
+})
\ No newline at end of file
diff --git a/src/views/Settings/SettingsAccountView.vue b/src/views/Settings/SettingsAccountView.vue
index 50c2bfe..51b570c 100644
--- a/src/views/Settings/SettingsAccountView.vue
+++ b/src/views/Settings/SettingsAccountView.vue
@@ -55,14 +55,16 @@ onMounted(() => {
       <hr>
       <form  @submit.prevent="handleSubmit">
           <div class="form-group">
-              <BaseInput :model-value="emailRef" @input-change-event="handleEmailInputEvent" id="emailInput-change"
+              <BaseInput data-cy="email-input" :model-value="emailRef"
+                         @input-change-event="handleEmailInputEvent" id="emailInput-change"
                   input-id="email-new" type="email" label="E-post" placeholder="Skriv inn din e-post"
                   invalid-message="Ugyldig e-post"/>
           </div>
-          <p class="text-danger">{{ errorMsg }}</p>
-          <p class="text-success">{{ confirmationMsg }}</p>
+          <p data-cy="change-email-msg-error" class="text-danger">{{ errorMsg }}</p>
+          <p data-cy="change-email-msg-confirm" class="text-success">{{ confirmationMsg }}</p>
           <br>
-          <button type="submit" class="btn btn-primary">Endre Informasjon</button>
+          <button data-cy="change-email-btn" type="submit" class="btn btn-primary">Endre
+            Informasjon</button>
           <hr>
           <div class="form-group">
               <label class="d-block text-danger">Slett Bruker</label>
-- 
GitLab