No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

5D
20H
3M
28S

Pruebas para POST

18/25
Recursos

Aportes 5

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Reto

  describe('Test for update product', () => {
    it('#update, should update a product', (doneFn) => {
      // Arrange
      const mockData = generateOneProduct();
      const productId = '1';
      const dto: UpdateProductDTO = {
        title: 'Product edited',
        price: 1000,
        images: ['img'],
        description: 'This is a product edited',
        categoryId: 12,
      };
      // Act
      service.update(productId, { ...dto }).subscribe((data) => {
        // Assert
        expect(data).toEqual(mockData);
        doneFn();
      });
      // Http Config
      const url = `${environment.API_URL}/api/v1/products/${productId}`;
      const req = httpController.expectOne(`${url}`);
      req.flush(mockData);
      expect(req.request.body).toEqual(dto);
      expect(req.request.method).toEqual('PUT');
    });
  });

  describe('Test for delete product', () => {
    it('#Delete, should delete a product', (doneFn) => {
      // Arrange
      const productId = '1';
      // Act
      service.delete(productId).subscribe((data) => {
        // Assert
        expect(data).toBe(true);
        doneFn();
      });
      // Http Config
      const url = `${environment.API_URL}/api/v1/products/${productId}`;
      const req = httpController.expectOne(`${url}`);
      req.flush(true);
      expect(req.request.method).toEqual('DELETE');
    });
  });

Sugerencia

Que bueno ser铆a poder chatear con el profe en un horario x, presolicitando una entrada en el chat para cuestiones varias, dudas preguntas, sobre el tema que 茅l proponga, 鈥

Los cursos online de todas las plataformas mundiales no tienen ese acercamiento del profe hacia sus alumnos, hacemos preguntas y son o no contestadas en un tiempo X, si a alguna de estas plataformas se le courriera hacer esto, ser铆a un producto diferenciador del resto, ah铆 lo dejo, 鈥

No se si esa l贸gica de los par谩metros es totalmente correcta, pero despu茅s de hacer tests para casos como limit=0, y viendo que te devuelve todos los productos sin offset,

probarlo

llegu茅 a la conclusi贸n que los if que tenemos hasta ahora no limitan demasiado, por tanto creo que deber铆a de ser en vez de esta forma:

if (limit && offset != null) {
        params = params.set('limit', limit);
        params = params.set('offset', offset);
    }

de esta otra:

if (limit != null && offset != null) {
      if(limit > 0){
        params = params.set('limit', limit);
        params = params.set('offset', offset);
      }
    }

驴Est谩is de acuerdo?

Reto cumplido!

describe('test for update', () => {
    it('should return a update product', (doneFn) => {
      const returnProduct = generateOneProduct();
      const id = 'product-1';
      const dto: UpdateProductDTO = {
        title: 'update product',
        price: 500,
      };

      productsService.update(id, { ...dto }).subscribe((data) => {
        expect(data).toEqual(returnProduct);
        doneFn();
      });

      const req = httpController.expectOne(`${apiUrl}/products/${id}`);
      req.flush(returnProduct);
      expect(req.request.body).toEqual(dto);
      expect(req.request.url).toContain(id);
      expect(req.request.method).toEqual('PUT');
    });
  });

  describe('test for delete', () => {
    it('should return a delete product', (doneFn) => {
      const response = true;
      const id = 'product-1';

      productsService.delete(id).subscribe((data) => {
        expect(data).toEqual(response);
        doneFn();
      });

      const req = httpController.expectOne(`${apiUrl}/products/${id}`);
      req.flush(response);
      expect(req.request.url).toContain(id);
      expect(req.request.method).toEqual('DELETE');
    });
  });

Ahora veremos pruebas en post, put y delete.

product.service.spec.ts

afterEach(() => {
聽 聽 httpController.verify();
聽 });
聽 
聽describe('test for create', () => {
聽 聽 聽 it('should return a new product', (doneFn) => {
聽 聽 聽 聽 // Arrange
聽 聽 聽 聽 const mockData = generateOneProduct();
聽 聽 聽 聽 const dto: CreateProductDTO = {
聽 聽 聽 聽 聽 title: 'new Product',
聽 聽 聽 聽 聽 price: 100,
聽 聽 聽 聽 聽 images: ['img'],
聽 聽 聽 聽 聽 description: 'bla bla bla',
聽 聽 聽 聽 聽 categoryId: 12,
聽 聽 聽 聽 };
聽 聽 聽 聽 // Act
聽 聽 聽 聽 productsService.create({...dto}).subscribe((data) => {
聽 聽 聽 聽 聽 // Assert
聽 聽 聽 聽 聽 expect(data).toEqual(mockData);
聽 聽 聽 聽 聽 doneFn();
聽 聽 聽 聽 });
聽 聽 聽 聽 //http config
聽 聽 聽 聽 const url = `${environment.API_URL}/api/v1/products`;
聽 聽 聽 聽 const req = httpController.expectOne(url);
聽 聽 聽 聽 req.flush(mockData);
聽 聽 聽 聽 expect(req.request.body).toEqual(dto);
聽 聽 聽 聽 expect(req.request.method).toEqual('POST');
聽 聽 聽 });
聽 });

聽 聽 describe('test for update', () => {
聽 聽 聽 it('should return an updated product', (doneFn) => {
聽 聽 聽 聽 // Arrange
聽 聽 聽 聽 const mockData = generateOneProduct();
聽 聽 聽 聽 const id = '1';
聽 聽 聽 聽 const dto: UpdateProductDTO = {
聽 聽 聽 聽 聽 title: 'update Product',
聽 聽 聽 聽 聽 price: 200,
聽 聽 聽 聽 聽 images: ['img'],
聽 聽 聽 聽 聽 description: 'bla bla bla bla',
聽 聽 聽 聽 聽 categoryId: 12,
聽 聽 聽 聽 };
聽 聽 聽 聽 // Act
聽 聽 聽 聽 productsService.update(id, {...dto}).subscribe((data) => {
聽 聽 聽 聽 聽 // Assert
聽 聽 聽 聽 聽 expect(data).toEqual(mockData);
聽 聽 聽 聽 聽 doneFn();
聽 聽 聽 聽 });
聽 聽 聽 聽 //http config
聽 聽 聽 聽 const url = `${environment.API_URL}/api/v1/products/${id}`;
聽 聽 聽 聽 const req = httpController.expectOne(url);
聽 聽 聽 聽 req.flush(mockData);
聽 聽 聽 聽 expect(req.request.body).toEqual(dto);
聽 聽 聽 聽 expect(req.request.method).toEqual('PUT');
聽 聽 聽 });
聽 });

聽 聽 describe('test for delete', () => {
聽 聽 聽 it('should delete a product', (doneFn) => {
聽 聽 聽 聽 // Arrange
聽 聽 聽 聽 const id = '1';
聽 聽 聽 聽 // Act
聽 聽 聽 聽 productsService.delete(id).subscribe((data) => {
聽 聽 聽 聽 聽 // Assert
聽 聽 聽 聽 聽 expect(data).toBe(true);
聽 聽 聽 聽 聽 doneFn();
聽 聽 聽 聽 });
聽 聽 聽 聽 //http config
聽 聽 聽 聽 const url = `${environment.API_URL}/api/v1/products/${id}`;
聽 聽 聽 聽 const req = httpController.expectOne(url);
聽 聽 聽 聽 req.flush(true);
聽 聽 聽 聽 expect(req.request.method).toEqual('DELETE');
聽 聽 聽 });
聽 });