From f9c0135d3ae1b92857f00e2d7566da1b9814580d Mon Sep 17 00:00:00 2001
From: Tom Quirk <tquirk@gitlab.com>
Date: Thu, 15 Jul 2021 14:22:47 +0930
Subject: [PATCH] Add specs for ide_project_header.vue

---
 .../ide/components/ide_project_header.vue     |  2 +-
 .../ide/components/ide_project_header_spec.js | 44 +++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 spec/frontend/ide/components/ide_project_header_spec.js

diff --git a/app/assets/javascripts/ide/components/ide_project_header.vue b/app/assets/javascripts/ide/components/ide_project_header.vue
index 2d8a171661adc..1c25a8e634d7a 100644
--- a/app/assets/javascripts/ide/components/ide_project_header.vue
+++ b/app/assets/javascripts/ide/components/ide_project_header.vue
@@ -16,7 +16,7 @@ export default {
 
 <template>
   <div class="context-header ide-context-header">
-    <a :href="project.web_url" :title="s__('IDE|Go to project')">
+    <a :href="project.web_url" :title="s__('IDE|Go to project')" data-testid="go-to-project-link">
       <project-avatar
         :project-name="project.name"
         :project-avatar-url="project.avatar_url"
diff --git a/spec/frontend/ide/components/ide_project_header_spec.js b/spec/frontend/ide/components/ide_project_header_spec.js
new file mode 100644
index 0000000000000..fc39651c661fa
--- /dev/null
+++ b/spec/frontend/ide/components/ide_project_header_spec.js
@@ -0,0 +1,44 @@
+import { shallowMount } from '@vue/test-utils';
+import IDEProjectHeader from '~/ide/components/ide_project_header.vue';
+import ProjectAvatar from '~/vue_shared/components/project_avatar.vue';
+
+const mockProject = {
+  name: 'test proj',
+  avatar_url: 'https://gitlab.com',
+  path_with_namespace: 'path/with-namespace',
+  web_url: 'https://gitlab.com/project',
+};
+
+describe('IDE project header', () => {
+  let wrapper;
+
+  const findProjectAvatar = () => wrapper.findComponent(ProjectAvatar);
+  const findProjectLink = () => wrapper.find('[data-testid="go-to-project-link"');
+
+  const createComponent = () => {
+    wrapper = shallowMount(IDEProjectHeader, { propsData: { project: mockProject } });
+  };
+
+  afterEach(() => {
+    wrapper.destroy();
+  });
+
+  describe('template', () => {
+    beforeEach(() => {
+      createComponent();
+    });
+
+    it('renders ProjectAvatar with correct props', () => {
+      expect(findProjectAvatar().props()).toMatchObject({
+        projectName: mockProject.name,
+        projectAvatarUrl: mockProject.avatar_url,
+      });
+    });
+
+    it('renders a link to the project URL', () => {
+      const link = findProjectLink();
+      expect(link.exists()).toBe(true);
+      expect(link.attributes('href')).toBe(mockProject.web_url);
+    });
+  });
+});
-- 
GitLab