diff --git a/src/app/dialogs/shift-change/shift-change.component.spec.ts b/src/app/dialogs/shift-change/shift-change.component.spec.ts
index 7a49955..8535c3f 100644
--- a/src/app/dialogs/shift-change/shift-change.component.spec.ts
+++ b/src/app/dialogs/shift-change/shift-change.component.spec.ts
@@ -22,7 +22,7 @@
 let fixture: ComponentFixture<ShiftChangeComponent>;
 let page: Page;
 
-describe('ShiftChangeComponent', () => {
+describe('ShiftChangeComponent-Post/Plan', () => {
 
   class MockDialogRef extends AbstractMockObservableService {
     close() { }
@@ -265,7 +265,83 @@
     fixture.detectChanges();
 
   }));
+
 });
+
+describe('ShiftChangeComponent-Fetch', () => {
+
+  class MockDialogRef extends AbstractMockObservableService {
+    close() { }
+  }
+
+  class MockUserService extends AbstractMockObservableService {
+    getUsers() {
+      return this;
+    };
+  }
+  let mockUserService: MockUserService;
+
+  class MockResponsibilityService extends AbstractMockObservableService {
+    public fetchCalled = false;
+    getAllResponsibilities() {
+      return this;
+    };
+    fetchResponsibilities(newResponsibility: TerritoryResponsibility[]) {
+      this.fetchCalled = true;
+      return this;
+    };
+  }
+  let mockService: MockResponsibilityService;
+  let sessionContext: SessionContext;
+  let messageService: MessageService;
+
+  beforeEach(async(() => {
+    mockUserService = new MockUserService();
+    mockService = new MockResponsibilityService();
+    sessionContext = new SessionContext();
+    messageService = new MessageService();
+
+    TestBed.configureTestingModule({
+      imports: [FormsModule],
+      declarations: [ShiftChangeComponent,
+        MockComponent({ selector: 'multiselect', inputs: ['data', 'settings'] })
+      ],
+      providers: [
+      { provide: MdDialogRef, useClass: MockDialogRef },
+      { provide: UserService, useValue: mockUserService },
+      { provide: ResponsibilityService, useValue: mockService },
+      { provide: MessageService, useValue: messageService },      
+      { provide: SessionContext, useValue: sessionContext }],
+    }).compileComponents();
+
+
+    fixture = TestBed.createComponent(ShiftChangeComponent);
+    component = fixture.componentInstance;
+    component.isFetchingResp = true;
+  }));
+  it('should init for fetch correctly', async(() => {
+    sessionContext.setAllUsers(USERS);
+    sessionContext.setCurrUser(USERS[1]);    
+
+    mockService.content = RESPONSIBILITIES;
+    mockService.fetchCalled = false;
+    fixture.detectChanges();
+    page = new Page();
+    page.addPageElements();
+    mockService.subscribe(null, null, () => {
+      mockService.content = [];
+      fixture.detectChanges();
+      fixture.whenStable().then(() => {
+        fixture.detectChanges();
+        expect( mockService.fetchCalled ).toBeTruthy();
+      });
+    });
+    click(page.confirmBtn);
+  }));
+});  
+
+
+
 class Page {
   //  gotoSpy:      jasmine.Spy;
   //  navSpy:       jasmine.Spy;
