From 8544e34fd8e417e7feeb4e138d69d8f2cc8c5833 Mon Sep 17 00:00:00 2001 From: tejaskh3 Date: Sun, 5 Jan 2025 19:03:38 +0530 Subject: [PATCH 1/4] feat: add test cases for getstarted and step1 --- app/components/identity/blocked.hbs | 8 +++ app/components/identity/verified.hbs | 6 ++ app/templates/identity.hbs | 2 + .../components/identity/get-started.js | 52 ++++++++++++++ .../integration/components/identity/step1.js | 71 +++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 app/components/identity/blocked.hbs create mode 100644 app/components/identity/verified.hbs create mode 100644 tests/integration/components/identity/get-started.js create mode 100644 tests/integration/components/identity/step1.js diff --git a/app/components/identity/blocked.hbs b/app/components/identity/blocked.hbs new file mode 100644 index 00000000..1a3d68fe --- /dev/null +++ b/app/components/identity/blocked.hbs @@ -0,0 +1,8 @@ +
Status Blocked
+
The system failed to link + your profile service with the Identity service, + Please try again!
+ \ No newline at end of file diff --git a/app/components/identity/verified.hbs b/app/components/identity/verified.hbs new file mode 100644 index 00000000..ebad1442 --- /dev/null +++ b/app/components/identity/verified.hbs @@ -0,0 +1,6 @@ +
Verified
+
Congratulations!!! + You did it, go ahead and tell in the community that you verified your profile + service.
\ No newline at end of file diff --git a/app/templates/identity.hbs b/app/templates/identity.hbs index a9511781..ebe9143f 100644 --- a/app/templates/identity.hbs +++ b/app/templates/identity.hbs @@ -25,6 +25,8 @@ {{else if (eq this.state 'reload')}} + {{else if (eq this.state 'verified')}} + {{/if}} diff --git a/tests/integration/components/identity/get-started.js b/tests/integration/components/identity/get-started.js new file mode 100644 index 00000000..05de06db --- /dev/null +++ b/tests/integration/components/identity/get-started.js @@ -0,0 +1,52 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/get-started', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the get started component correctly', async function (assert) { + this.set('setState', () => {}); + await render(hbs` + + `); + + assert.dom('[data-test-getStarted-heading]').exists(); + assert + .dom('[data-test-getStarted-heading]') + .hasText('Qualification Criteria'); + + assert.dom('[data-test-getStarted-desc]').exists(); + assert + .dom('[data-test-getStarted-desc]') + .containsText('To update your profile details'); + assert + .dom('[data-test-getStarted-desc] a') + .hasAttribute( + 'href', + 'https://github.com/Real-Dev-Squad/sample-profile-service', + ); + + assert.dom('[data-test-getStarted-button]').exists(); + assert.dom('[data-test-getStarted-button]').hasText('Get Started'); + }); + + test('clicking get started button triggers setState action with step1', async function (assert) { + assert.expect(1); + + this.set('setState', (state) => { + assert.strictEqual( + state, + 'step1', + 'setState action is called with step1', + ); + }); + + await render(hbs` + + `); + + await click('[data-test-getStarted-button]'); + }); +}); diff --git a/tests/integration/components/identity/step1.js b/tests/integration/components/identity/step1.js new file mode 100644 index 00000000..197c5b4b --- /dev/null +++ b/tests/integration/components/identity/step1.js @@ -0,0 +1,71 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click, waitFor } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step1', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + assert + .dom('[data-test-step1-heading]') + .hasText('Step 1: Chaincode Generation'); + assert.dom('[data-test-step1-desc]').exists(); + assert.dom('[data-test-step1-button]').hasText('Generate Chaincode'); + assert.dom('[data-test-step1-next-button]').doesNotExist(); + }); + + test('it handles chaincode generation', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('.identity-chaincode-box'); + + assert.dom('[data-test-step1-chaincode]').hasText('********************'); + assert.dom('[data-test-step1-next-button]').exists(); + assert.dom('[data-test-step1-button]').doesNotExist(); + }); + + test('it toggles chaincode visibility', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('.identity-chaincode-box'); + + const initialText = await document + .querySelector('[data-test-step1-chaincode]') + .textContent.trim(); + await click('[data-test-step1-eye]'); + const visibleText = await document + .querySelector('[data-test-step1-chaincode]') + .textContent.trim(); + + assert.notEqual( + initialText, + visibleText, + 'Chaincode visibility should toggle', + ); + assert.notEqual( + visibleText, + '********************', + 'Chaincode should be visible', + ); + }); + + test('it handles next button click', async function (assert) { + let nextClicked = false; + this.set('setState', () => (nextClicked = true)); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('[data-test-step1-next-button]'); + await click('[data-test-step1-next-button]'); + + assert.true(nextClicked, 'Next button should trigger setState'); + }); +}); From 30213c32085a3f18c13138046d1ee033635c7796 Mon Sep 17 00:00:00 2001 From: tejaskh3 Date: Sun, 5 Jan 2025 19:17:13 +0530 Subject: [PATCH 2/4] feat: add test case for step2 --- .../integration/components/identity/step2.js | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tests/integration/components/identity/step2.js diff --git a/tests/integration/components/identity/step2.js b/tests/integration/components/identity/step2.js new file mode 100644 index 00000000..68b90ad6 --- /dev/null +++ b/tests/integration/components/identity/step2.js @@ -0,0 +1,74 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click, fillIn } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step2', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + this.set('setState', () => {}); + this.set('profileURL', ''); + await render( + hbs``, + ); + + assert + .dom('[data-test-step2-heading]') + .hasText('Step 2: Profile Service URL'); + assert.dom('[data-test-step2-desc]').exists(); + assert.dom('[data-test-step2-input]').exists(); + assert.dom('[data-test-step2-next-button]').doesNotExist(); + }); + + test('it shows next button when URL is entered', async function (assert) { + this.set('setState', () => {}); + this.set('profileURL', ''); + await render( + hbs``, + ); + + assert.dom('[data-test-step2-next-button]').doesNotExist(); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + + assert.dom('[data-test-step2-next-button]').exists(); + assert.dom('[data-test-step2-next-button]').hasText('Next'); + }); + + test('it handles next button click and shows loader', async function (assert) { + let nextClicked = false; + this.set('setState', () => (nextClicked = true)); + this.set('profileURL', ''); + await render( + hbs``, + ); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + await click('[data-test-step2-next-button]'); + + assert.true(nextClicked, 'Next button should trigger setState'); + }); + + test('it shows loader while saving URL', async function (assert) { + this.set('setState', () => {}); + this.set('savingURL', true); + this.set('profileURL', ''); + await render(hbs` + `); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + + assert.dom('.loader').exists('Loader should be visible when saving'); + assert + .dom('[data-test-step2-next-button]') + .doesNotContainText( + 'Next', + 'Next text should not be visible while loading', + ); + }); +}); From 1fa406c1898b23bb644f66304c06971a9f809e54 Mon Sep 17 00:00:00 2001 From: tejaskh3 Date: Sun, 5 Jan 2025 19:23:44 +0530 Subject: [PATCH 3/4] feat: add test case for step3 --- .../integration/components/identity/step3.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tests/integration/components/identity/step3.js diff --git a/tests/integration/components/identity/step3.js b/tests/integration/components/identity/step3.js new file mode 100644 index 00000000..2357d921 --- /dev/null +++ b/tests/integration/components/identity/step3.js @@ -0,0 +1,41 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step3', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + await render(hbs``); + + assert + .dom('[data-test-step3-heading]') + .hasText('Step 3: Link Profile Service'); + assert.dom('[data-test-step3-desc]').exists(); + assert.dom('[data-test-step3-button]').hasText('Link'); + }); + + test('it shows loader while linking', async function (assert) { + this.set('linking', true); + await render(hbs``); + + assert.dom('.loader').exists('Loader should be visible when linking'); + assert + .dom('[data-test-step3-button]') + .doesNotContainText( + 'Link', + 'Link text should not be visible while loading', + ); + }); + + test('it handles link button click', async function (assert) { + let linkClicked = false; + this.set('handleLink', () => (linkClicked = true)); + await render(hbs``); + + await click('[data-test-step3-button]'); + + assert.true(linkClicked, 'Link button should trigger handleLink action'); + }); +}); From be98300d9a166339f7d9f85f88d29261ee3a11ce Mon Sep 17 00:00:00 2001 From: tejaskh3 Date: Sun, 5 Jan 2025 19:27:13 +0530 Subject: [PATCH 4/4] feat: add test case for verified and bloceed stage --- .../components/identity/blocked.js | 26 +++++++++++++++++++ .../components/identity/verified.js | 19 ++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/integration/components/identity/blocked.js create mode 100644 tests/integration/components/identity/verified.js diff --git a/tests/integration/components/identity/blocked.js b/tests/integration/components/identity/blocked.js new file mode 100644 index 00000000..83b9051c --- /dev/null +++ b/tests/integration/components/identity/blocked.js @@ -0,0 +1,26 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/blocked', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + await render(hbs``); + + assert.dom('[data-test-blocked-heading]').hasText('Status Blocked'); + assert.dom('[data-test-blocked-desc]').exists(); + assert.dom('[data-test-blocked-button]').hasText('Retry'); + }); + + test('it handles retry button click', async function (assert) { + let retryClicked = false; + this.set('setState', () => (retryClicked = true)); + await render(hbs``); + + await click('[data-test-blocked-button]'); + + assert.true(retryClicked, 'Retry button should trigger setState'); + }); +}); diff --git a/tests/integration/components/identity/verified.js b/tests/integration/components/identity/verified.js new file mode 100644 index 00000000..da908c34 --- /dev/null +++ b/tests/integration/components/identity/verified.js @@ -0,0 +1,19 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/verified', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the success message correctly', async function (assert) { + await render(hbs``); + + assert.dom('[data-test-verified-heading]').hasText('Verified'); + assert.dom('[data-test-verified-desc]').exists(); + assert + .dom('[data-test-verified-desc] span') + .hasClass('identity-box-desc-bold'); + assert.dom('[data-test-verified-desc] span').hasText('Congratulations!!!'); + }); +});