🎨 Service structure changes

master
Alexis Feron 5 days ago
parent ec73968949
commit 275e0cfc34

@ -3,7 +3,7 @@ import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { HomeNavbarComponent } from './components/home-navbar/home-navbar.component';
import { NavbarComponent } from './components/navbar/navbar.component';
import { LocalStorageService } from './services/localstorage.service';
import { LocalStorageService } from './services/local-storage/local-storage.service';
@Component({
selector: 'app-root',

@ -1,17 +1,49 @@
import { TestBed } from '@angular/core/testing';
import { CanActivateFn } from '@angular/router';
import { Router } from '@angular/router';
import { AuthGuard } from './auth.guard';
import { LocalStorageService } from './services/local-storage/local-storage.service';
import { LoginModalService } from './services/login-modal/login-modal.service';
describe('authGuard', () => {
const executeGuard: CanActivateFn = (...guardParameters) =>
TestBed.runInInjectionContext(() => AuthGuard(...guardParameters));
describe('AuthGuard', () => {
let guard: AuthGuard;
let localStorageServiceSpy: jasmine.SpyObj<LocalStorageService>;
let routerSpy: jasmine.SpyObj<Router>;
let loginModalServiceSpy: jasmine.SpyObj<LoginModalService>;
beforeEach(() => {
TestBed.configureTestingModule({});
localStorageServiceSpy = jasmine.createSpyObj('LocalStorageService', [
'getToken',
]);
routerSpy = jasmine.createSpyObj('Router', ['navigate']);
loginModalServiceSpy = jasmine.createSpyObj('LoginModalService', [
'openModal',
]);
TestBed.configureTestingModule({
providers: [
AuthGuard,
{ provide: LocalStorageService, useValue: localStorageServiceSpy },
{ provide: Router, useValue: routerSpy },
{ provide: LoginModalService, useValue: loginModalServiceSpy },
],
});
guard = TestBed.inject(AuthGuard);
});
it('should be created', () => {
expect(executeGuard).toBeTruthy();
it('should allow activation when token exists', () => {
localStorageServiceSpy.getToken.and.returnValue('valid-token');
const result = guard.canActivate();
expect(result).toBeTrue();
});
it('should deny activation and trigger redirect and modal when token is missing', async () => {
localStorageServiceSpy.getToken.and.returnValue(null);
routerSpy.navigate.and.returnValue(Promise.resolve(true));
const result = guard.canActivate();
expect(result).toBeFalse();
expect(routerSpy.navigate).toHaveBeenCalledWith(['/']);
expect(loginModalServiceSpy.openModal).toHaveBeenCalled();
});
});

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { LocalStorageService } from './services/localstorage.service';
import { LoginModalService } from './services/login-modal.service';
import { LocalStorageService } from './services/local-storage/local-storage.service';
import { LoginModalService } from './services/login-modal/login-modal.service';
@Injectable({
providedIn: 'root',

@ -13,10 +13,10 @@ import {
distinctUntilChanged,
switchMap,
} from 'rxjs/operators';
import { AutocompleteService } from '../../services/auto-complete.service';
import { PinService } from '../../services/pin.service';
import { AutocompleteService } from '../../services/auto-complete/auto-complete.service';
import { ExifService } from '../../services/exif/exif.service';
import { PinService } from '../../services/pin/pin.service';
import { DragDropComponent } from '../drag-drop/drag-drop.component';
import { ExifService } from '../../exif.service';
@Component({
selector: 'app-add-pin-popup',
@ -94,15 +94,17 @@ export class AddPinPopupComponent implements OnInit {
try {
const data = await this.exifService.getLocation(this.files[i]);
if (data.latitude !== undefined && data.longitude !== undefined) {
const address = await this.autocompleteService.getAddressFromCoordinates(data.latitude, data.longitude).toPromise();
const address = await this.autocompleteService
.getAddressFromCoordinates(data.latitude, data.longitude)
.toPromise();
if (address) {
console.error("Data : " + JSON.stringify(address));
console.error('Data : ' + JSON.stringify(address));
this.form.get('location')?.setValue(address.display_name);
break;
}
}
} catch (error) {
console.error("Error : " + error);
console.error('Error : ' + error);
}
}
}

@ -301,7 +301,7 @@
</li>
</ul>
<a
href="/map"
(click)="openLogin()"
class="text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:ring-blue-200 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-800 dark:hover:bg-blue-900 dark:focus:ring-blue-900"
>Commencez</a
>

@ -1,5 +1,5 @@
import { Component } from '@angular/core';
import { LoginModalService } from '../../services/login-modal.service';
import { LoginModalService } from '../../services/login-modal/login-modal.service';
@Component({
selector: 'app-home-page',

@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router';
import * as L from 'leaflet';
import 'leaflet/dist/leaflet.css';
import { Pin } from '../../model/Pin';
import { PinService } from '../../services/pin.service';
import { PinService } from '../../services/pin/pin.service';
import { PinMarkerComponent } from '../pin-marker/pin-marker.component';
@Component({

@ -10,9 +10,9 @@ import {
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { User } from '../../model/User';
import { LocalStorageService } from '../../services/localstorage.service';
import { LoginModalService } from '../../services/login-modal.service';
import { LoginService } from '../../services/login.service';
import { LocalStorageService } from '../../services/local-storage/local-storage.service';
import { LoginModalService } from '../../services/login-modal/login-modal.service';
import { LoginService } from '../../services/login/login.service';
@Component({
selector: 'app-login-page',

@ -20,8 +20,8 @@ import {
switchMap,
} from 'rxjs';
import { Pin } from '../../model/Pin';
import { LocalStorageService } from '../../services/localstorage.service';
import { PinService } from '../../services/pin.service';
import { LocalStorageService } from '../../services/local-storage/local-storage.service';
import { PinService } from '../../services/pin/pin.service';
import { AddPinPopupComponent } from '../add-pin-popup/add-pin-popup.component';
import { FriendPageComponent } from '../friend-page/friend-page.component';

@ -25,7 +25,7 @@
'opacity-0 scale-0 pointer-events-none': !isRegisterModalOpen,
'opacity-100 scale-100': isRegisterModalOpen
}"
class="fixed top-0 right-0 left-0 z-50 flex justify-center items-center w-full h-full transition-opacity transition-transform duration-300 ease-in-out"
class="fixed top-0 right-0 left-0 z-50 flex justify-center items-center w-full h-full transition-transform duration-300 ease-in-out"
>
<div class="relative p-4 w-full max-w-md max-h-full">
<!-- Modal content -->
@ -63,9 +63,7 @@
</button>
</div>
<!-- Modal body -->
<div
class="p-4 md:p-5"
*ngIf="isRegisterModalOpen">
<div class="p-4 md:p-5" *ngIf="isRegisterModalOpen">
<form [formGroup]="userForm" class="space-y-4">
<div>
<label

@ -9,8 +9,8 @@ import {
} from '@angular/forms';
import { Router } from '@angular/router';
import { User } from '../../model/User';
import { LocalStorageService } from '../../services/localstorage.service';
import { RegisterService } from '../../services/register.service';
import { LocalStorageService } from '../../services/local-storage/local-storage.service';
import { RegisterService } from '../../services/register/register.service';
@Component({
selector: 'app-register-page',

@ -1,13 +1,13 @@
import { TestBed } from '@angular/core/testing';
import { AutoCompleteService } from './auto-complete.service';
import { AutocompleteService } from './auto-complete.service';
describe('AutoCompleteService', () => {
let service: AutoCompleteService;
describe('AutocompleteService', () => {
let service: AutocompleteService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(AutoCompleteService);
service = TestBed.inject(AutocompleteService);
});
it('should be created', () => {

@ -1,7 +1,7 @@
import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment';
import { environment } from '../../../environments/environment';
@Injectable({
providedIn: 'root',

@ -1,9 +1,9 @@
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { switchMap } from 'rxjs';
import { environment } from '../../environments/environment';
import { AutocompleteService } from './auto-complete.service';
import { Pin } from '../model/Pin';
import { environment } from '../../../environments/environment';
import { Pin } from '../../model/Pin';
import { AutocompleteService } from '../auto-complete/auto-complete.service';
@Injectable({
providedIn: 'root',

@ -1,7 +1,7 @@
import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment';
import { environment } from '../../../environments/environment';
@Injectable({
providedIn: 'root',
Loading…
Cancel
Save