Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: TT-314 Add suggestions made in the PR
  • Loading branch information
jcalarcon98 committed Aug 21, 2021
commit 850c43870307af79ce9d4ad39a25029504ffc53b
47 changes: 20 additions & 27 deletions src/app/modules/shared/utils/project-storage.util.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,28 @@ describe('Project Storage', () => {
let storageProjects: Project[];
let projectsIdentifier: string;
let serverProjects: Project[];
let testProject: Project;
let localStorageGetItemMock;

beforeEach(() => {
projectsIdentifier = 'projectsSelected';

testProject = {
customer: {
name: 'ioet Inc. (was E&Y)',
},
id: 'f3630e59-9408-497e-945b-848112bd5a44',
name: 'Time Tracker',
customer_id: '20c96c4d-5e26-4426-a704-8bdd98c83319',
status: 'active',
};

storageProjects = [
{
customer: {
name: 'ioet Inc. (was E&Y)',
},
id: 'f3630e59-9408-497e-945b-848112bd5a44',
name: 'Time Tracker',
customer_id: '20c96c4d-5e26-4426-a704-8bdd98c83319',
status: 'active',
}
testProject
];

serverProjects = [
{
customer: {
name: 'ioet Inc. (was E&Y)',
},
id: 'f3630e59-9408-497e-945b-848112bd5a44',
name: 'Time Tracker',
customer_id: '20c96c4d-5e26-4426-a704-8bdd98c83319',
status: 'active',
},
testProject,
{
customer: {
name: 'No Matter Name',
Expand All @@ -43,21 +39,19 @@ describe('Project Storage', () => {
}
];

localStorageGetItemMock = spyOn(localStorage, 'getItem').and.returnValue(JSON.stringify(storageProjects));
spyOn(localStorage, 'setItem');

});

it('If exists projects in localStorage and the server returns the same project, should keep the same localStorage variables', () => {
spyOn(localStorage, 'getItem').and.returnValue(JSON.stringify(storageProjects));
spyOn(localStorage, 'setItem');

updateProjectStorage(serverProjects);

expect(localStorage.setItem).toHaveBeenCalledWith(projectsIdentifier, JSON.stringify(storageProjects));
});

it('If exists projects in localStorage and the server does not return that project, should update the localStorage variable', () => {
serverProjects.shift();
spyOn(localStorage, 'getItem').and.returnValue(JSON.stringify(storageProjects));
spyOn(localStorage, 'setItem');

updateProjectStorage(serverProjects);

Expand All @@ -66,8 +60,6 @@ describe('Project Storage', () => {

it('If Server projects is empty, should not update the localStorage', () => {
serverProjects = [];
spyOn(localStorage, 'getItem').and.returnValue(JSON.stringify(storageProjects));
spyOn(localStorage, 'setItem');

updateProjectStorage(serverProjects);

Expand All @@ -76,7 +68,8 @@ describe('Project Storage', () => {

it('If variables does not exists on localStorage, getProjectsOnStorage should return undefined', () => {
projectsIdentifier = 'no-matter-identifier';
spyOn(localStorage, 'getItem').and.returnValue(undefined);

localStorageGetItemMock.and.returnValue(undefined);

const projects = getProjectsOnStorage(projectsIdentifier);

Expand All @@ -85,7 +78,7 @@ describe('Project Storage', () => {

it('If variables not exists on localStorage, getProjectsOnStorage should return an array of Projects', () => {
const storageProjectsString = JSON.stringify(storageProjects);
spyOn(localStorage, 'getItem').and.returnValue(storageProjectsString);
localStorageGetItemMock.and.returnValue(storageProjectsString);

const projects = getProjectsOnStorage(projectsIdentifier);

Expand Down
9 changes: 4 additions & 5 deletions src/app/modules/shared/utils/project-storage.util.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { Project } from '../models/project.model';
import { PROJECTS_KEY_FOR_LOCAL_STORAGE } from '../../../../environments/environment';

const projectsKey = PROJECTS_KEY_FOR_LOCAL_STORAGE;
import { PROJECTS_KEY_FOR_LOCAL_STORAGE as projectsKey } from '../../../../environments/environment';
import { isEmpty } from 'lodash';

export function updateProjectStorage(serverProjects: Project[]): void {
const storageProjects: Project[] = getProjectsOnStorage(projectsKey);
const isServerProjectsNotEmpty = serverProjects && serverProjects.length !== 0;
const isServerProjectsEmpty = isEmpty(serverProjects);
const updatedStorageProjects: Project[] = [];

if (serverProjects && isServerProjectsNotEmpty && storageProjects) {
if (!isServerProjectsEmpty && storageProjects) {
storageProjects.forEach((storageProject: Project) => {
const project = serverProjects.find((serverProject) => serverProject.id === storageProject.id);

Expand Down