diff --git a/dspace-angular.iml b/dspace-angular.iml
new file mode 100644
index 0000000000000000000000000000000000000000..580639069383bfd60dcbe5f9b5d8fe56f8a61d1f
--- /dev/null
+++ b/dspace-angular.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="node_modules" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/src/app/object-collection/object-collection.component.spec.ts b/src/app/object-collection/object-collection.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..abbf66e4f1fc6d8bd2012c91b64ac2e5fc53fe7c
--- /dev/null
+++ b/src/app/object-collection/object-collection.component.spec.ts
@@ -0,0 +1,52 @@
+import { ObjectCollectionComponent } from './object-collection.component';
+import { ViewMode } from '../+search-page/search-options.model';
+import { element } from 'protractor';
+import { By } from '@angular/platform-browser';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Config } from '../../config/config.interface';
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { Observable } from 'rxjs/Observable';
+import { RouterStub } from '../shared/testing/router-stub';
+
+describe('ObjectCollectionComponent', () => {
+  let fixture: ComponentFixture<ObjectCollectionComponent>;
+  let objectCollectionComponent: ObjectCollectionComponent;
+  const queryParam = 'test query';
+  const scopeParam = '7669c72a-3f2a-451f-a3b9-9210e7a4c02f';
+  const activatedRouteStub = {
+    queryParams: Observable.of({
+      query: queryParam,
+      scope: scopeParam
+    })
+  };
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ObjectCollectionComponent ],
+      providers: [
+        { provide: ActivatedRoute, useValue: activatedRouteStub },
+        { provide: Router, useClass: RouterStub }
+      ],
+      schemas: [ NO_ERRORS_SCHEMA ]
+    }).compileComponents();  // compile template and css
+  }));
+
+  beforeEach(async(() => {
+    fixture = TestBed.createComponent(ObjectCollectionComponent);
+    objectCollectionComponent = fixture.componentInstance;
+  }));
+  it('should only show the grid component when the viewmode is set to grid', () => {
+    objectCollectionComponent.currentMode = ViewMode.Grid;
+
+    // expect(By.css('ds-object-grid')).toEqual(1);
+    // expect(By.css('ds-object-list')).toEqual(0);
+  });
+
+  it('should only show the list component when the viewmode is set to list', () => {
+    objectCollectionComponent.currentMode = ViewMode.List;
+
+    // expect(By.css('ds-object-list').length).toEqual(1);
+    // expect(By.css('ds-object-grid').length).toEqual(0);
+  })
+
+});
diff --git a/src/app/object-collection/shared/dso-element-decorator.spec.ts b/src/app/object-collection/shared/dso-element-decorator.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..952afb9ac31242b75dbf30851a7ebaa6fbe93744
--- /dev/null
+++ b/src/app/object-collection/shared/dso-element-decorator.spec.ts
@@ -0,0 +1,16 @@
+import { ViewMode } from '../../+search-page/search-options.model';
+import { renderElementsFor } from './dso-element-decorator';
+import { Item } from '../../core/shared/item.model';
+
+describe('ElementDecorator', () => {
+  let gridDecorator = renderElementsFor(Item, ViewMode.Grid);
+  let listDecorator = renderElementsFor(Item, ViewMode.List);
+  it('should have a decorator for both list and grid', () => {
+    expect(listDecorator.length).not.toBeNull();
+    expect(gridDecorator.length).not.toBeNull();
+  });
+  it('should have 2 separate decorators for grid and list', () => {
+    expect(listDecorator).not.toEqual(gridDecorator);
+  });
+
+});
diff --git a/src/app/object-grid/collection-grid-element/collection-grid-element.component.spec.ts b/src/app/object-grid/collection-grid-element/collection-grid-element.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts b/src/app/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts
index f4ca434221eb575791ece1fcb5a2ce18a57d6481..209ac52997d629e883645df4076d321af4724b18 100644
--- a/src/app/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts
+++ b/src/app/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts
@@ -2,24 +2,24 @@ import { ComponentFixture, TestBed, async } from '@angular/core/testing';
 import { By } from '@angular/platform-browser';
 import { DebugElement } from '@angular/core';
 
-import { ThumbnailComponent } from './thumbnail.component';
+import { GridThumbnailComponent } from './grid-thumbnail.component';
 import { Bitstream } from '../../core/shared/bitstream.model';
 import { SafeUrlPipe } from '../../shared/utils/safe-url-pipe';
 
 describe('ThumbnailComponent', () => {
-  let comp: ThumbnailComponent;
-  let fixture: ComponentFixture<ThumbnailComponent>;
+  let comp: GridThumbnailComponent;
+  let fixture: ComponentFixture<GridThumbnailComponent>;
   let de: DebugElement;
   let el: HTMLElement;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ThumbnailComponent, SafeUrlPipe]
+      declarations: [GridThumbnailComponent, SafeUrlPipe]
     }).compileComponents();
   }));
 
   beforeEach(() => {
-    fixture = TestBed.createComponent(ThumbnailComponent);
+    fixture = TestBed.createComponent(GridThumbnailComponent);
     comp = fixture.componentInstance; // BannerComponent test instance
     de = fixture.debugElement.query(By.css('div.thumbnail'));
     el = de.nativeElement;
diff --git a/src/app/object-grid/item-grid-element/item-grid-element.component.spec.ts b/src/app/object-grid/item-grid-element/item-grid-element.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0da99aa6974b32f2d9cbee6fc401454a68de1460
--- /dev/null
+++ b/src/app/object-grid/item-grid-element/item-grid-element.component.spec.ts
@@ -0,0 +1,6 @@
+import { ItemGridElementComponent } from './item-grid-element.component';
+
+describe('ItemGridElementComponent',()=>{
+  let itemGridElementComponent: ItemGridElementComponent;
+
+})
diff --git a/src/app/object-grid/object-grid.component.spec.ts b/src/app/object-grid/object-grid.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.spec.ts b/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391