diff --git a/client/src/app/admin/instance/dataset/components/output-category/output-category-form.component.spec.ts b/client/src/app/admin/instance/dataset/components/output-category/output-category-form.component.spec.ts
index 6689a827a220ccba3a43a78cdf769a2b93c39f4a..a6a87694784a0513156189485772f0124ec8d44d 100644
--- a/client/src/app/admin/instance/dataset/components/output-category/output-category-form.component.spec.ts
+++ b/client/src/app/admin/instance/dataset/components/output-category/output-category-form.component.spec.ts
@@ -10,7 +10,6 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { FileInfo } from 'src/app/admin/store/models';
 import { OutputCategoryFormComponent } from './output-category-form.component';
 
 describe('[admin][instance][dataset][components][output-category] OutputCategoryFormComponent', () => {
diff --git a/client/src/app/admin/instance/dataset/components/output-family/add-output-family.component.spec.ts b/client/src/app/admin/instance/dataset/components/output-family/add-output-family.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..90a0fb0881d1160582a1a7440b0ea778b6d5c23d
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/output-family/add-output-family.component.spec.ts
@@ -0,0 +1,56 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { TemplateRef } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
+import { AddOutputFamilyComponent } from './add-output-family.component';
+
+describe('[admin][instance][dataset][components][output-family] AddOutputFamilyComponent', () => {
+    let component: AddOutputFamilyComponent;
+    let fixture: ComponentFixture<AddOutputFamilyComponent>;
+    const modalServiceStub = {
+        show: jest.fn(),
+    };
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                AddOutputFamilyComponent,
+            ],
+            providers: [
+                BsModalRef,
+                { provide: BsModalService, useValue: modalServiceStub }
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(AddOutputFamilyComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('should call modalRef.show(template)', () => {
+        let template: TemplateRef<any> = null;
+        let spy = jest.spyOn(modalServiceStub, 'show');
+        component.openModal(template);
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(template);
+    });
+
+});
+
diff --git a/client/src/app/admin/instance/dataset/components/output-family/edit-output-family.component.spec.ts b/client/src/app/admin/instance/dataset/components/output-family/edit-output-family.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..01627cc2fdd74c1b2fff8502fbfe0611b75ede9b
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/output-family/edit-output-family.component.spec.ts
@@ -0,0 +1,57 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+ import { TemplateRef } from '@angular/core';
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
+ import { ReactiveFormsModule } from '@angular/forms';
+ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+ import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
+import { EditOutputFamilyComponent } from './edit-output-family.component';
+
+ describe('[admin][instance][dataset][components][output-family] EditOutputFamilyComponent', () => {
+     let component: EditOutputFamilyComponent;
+     let fixture: ComponentFixture<EditOutputFamilyComponent>;
+     const modalServiceStub = {
+         show: jest.fn(),
+     };
+ 
+     beforeEach(() => {
+         TestBed.configureTestingModule({
+             declarations: [
+                EditOutputFamilyComponent,
+             ],
+             providers: [
+                 BsModalRef,
+                 { provide: BsModalService, useValue: modalServiceStub }
+             ],
+             imports: [
+                 BrowserAnimationsModule,
+                 ReactiveFormsModule
+             ],
+         });
+         fixture = TestBed.createComponent(EditOutputFamilyComponent);
+         component = fixture.componentInstance;
+         fixture.detectChanges();
+     });
+ 
+     it('should create the component', () => {
+         expect(component).toBeTruthy();
+     });
+ 
+     it('should call modalRef.show(template)', () => {
+         let template: TemplateRef<any> = null;
+         let spy = jest.spyOn(modalServiceStub, 'show');
+         component.openModal(template);
+         expect(spy).toHaveBeenCalledTimes(1);
+         expect(spy).toHaveBeenCalledWith(template);
+     });
+ 
+ });
+ 
+ 
\ No newline at end of file
diff --git a/client/src/app/admin/instance/dataset/components/output-family/index.spec.ts b/client/src/app/admin/instance/dataset/components/output-family/index.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ba5cb82eb46c5889f8505b43ac5f9f6c0ecfc2ea
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/output-family/index.spec.ts
@@ -0,0 +1,19 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { outputFamilyComponents } from './index';
+
+describe('[admin][instance][dataset][components][output-family] index', () => {
+    it('should test output-family index components', () => {
+        expect(outputFamilyComponents.length).toEqual(4);
+    });
+});
+
+
+
diff --git a/client/src/app/admin/instance/dataset/components/output-family/output-family-form.component.spec.ts b/client/src/app/admin/instance/dataset/components/output-family/output-family-form.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7a6b1c989682f3a07b2cb7e680f2860a28afd1a0
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/output-family/output-family-form.component.spec.ts
@@ -0,0 +1,59 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { OutputFamilyFormComponent } from './output-family-form.component';
+
+describe('[admin][instance][dataset][components][output-family] OutputFamilyFormComponent', () => {
+    let component: OutputFamilyFormComponent;
+    let fixture: ComponentFixture<OutputFamilyFormComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                OutputFamilyFormComponent,
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(OutputFamilyFormComponent);
+        component = fixture.componentInstance;
+        component.outputFamily = {
+            display: 10,
+            id: 1,
+            label: 'test',
+            opened: false
+        };
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('submit() should emit outputCategory and form.value()', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.outputFamily, ...component.form.value });
+    });
+    it('submit() should emit only form.value()', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.outputFamily = null;
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.form.value });
+    })
+
+});
+
diff --git a/client/src/app/admin/instance/dataset/components/output-family/output-family-list.component.spec.ts b/client/src/app/admin/instance/dataset/components/output-family/output-family-list.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7ed4cd443673e00aa07eb54806e80eddc96a15e5
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/output-family/output-family-list.component.spec.ts
@@ -0,0 +1,45 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+import { Component } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { OutputFamilyListComponent } from './output-family-list.component';
+@Component({
+    selector: 'app-add-output-family',
+
+})
+class AddOutputFamilyComponent { }
+
+describe('[admin][instance][dataset][components][output-family] OutputFamilyListComponent', () => {
+    let component: OutputFamilyListComponent;
+    let fixture: ComponentFixture<OutputFamilyListComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                OutputFamilyListComponent,
+                AddOutputFamilyComponent
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(OutputFamilyListComponent);
+        component = fixture.componentInstance;
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+});
+
+