Advertisement
Aliendreamer

warehouse unit tests 09

Feb 23rd, 2019
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const expect=require('chai').expect;
  2. const Warehouse=require('../Warehouse').Warehouse;
  3.  
  4. describe('warehouse constructor tests',function(){
  5.  
  6.     it('constructor should throw error on initialization with negative number',function(){
  7.  
  8.         expect(function(){
  9.              return warehouse=new  Warehouse(-1);
  10.         }).throw('Invalid given warehouse space');
  11.     });
  12.  
  13.     it('constructor should throw error on initialization with string',function(){
  14.  
  15.         expect(function(){
  16.              return warehouse=new  Warehouse('adada');
  17.         }).throw('Invalid given warehouse space');
  18.     });
  19. });
  20.  
  21. describe('warehouse add products tests',function(){
  22.  
  23.         it('add product should add product and return it\'s name',function(){
  24.             let capacity=10;
  25.             let warehouse=new Warehouse(capacity);
  26.             let product='rice';
  27.             let type='Food';
  28.             let quantity=5;
  29.             let productObject={
  30.                 'rice':quantity
  31.             }
  32.             let result=warehouse.addProduct(type,product,quantity);
  33.             expect(productObject).to.deep.equal(result);
  34.         });
  35.  
  36.         it('add product should take right amount of capacity',function(){
  37.             let capacity=10;
  38.             let warehouse=new Warehouse(capacity);
  39.             let product='rice';
  40.             let type='Food';
  41.             let quantity=5;
  42.            
  43.             warehouse.addProduct(type,product,quantity);
  44.             let takenSpace=warehouse.occupiedCapacity();
  45.             let spaceThatShouldBeTaken=capacity-quantity;
  46.             expect(takenSpace).to.equal(spaceThatShouldBeTaken);
  47.         });
  48.  
  49.         it('add product should add product and increase its quantity if exists',function(){
  50.             let capacity=20;
  51.             let warehouse=new Warehouse(capacity);
  52.             let product='rice';
  53.             let type='Food';
  54.             let quantity=5;      
  55.      
  56.             warehouse.addProduct(type,product,quantity);
  57.             warehouse.addProduct(type,product,quantity);
  58.             let riceQuantity=warehouse.availableProducts.Food[product];
  59.             let expectedQuantity=quantity*2;
  60.             expect(riceQuantity).to.equal(expectedQuantity);
  61.         });
  62.  
  63.         it('add product should throw string if not enough capacity',function(){
  64.  
  65.             expect(function(){
  66.                 let capacity=5;
  67.                 let warehouse=new Warehouse(capacity);
  68.                 let product='rice';
  69.                 let type='Food';
  70.                 let quantity=10;
  71.                
  72.                 warehouse.addProduct(type,product,quantity);
  73.             }).throw('There is not enough space or the warehouse is already full');
  74.         });
  75. });
  76.  
  77. describe('warehouse sort products test',function(){
  78.  
  79.         it('sort products should sort products of the type ascending',function(){
  80.             let warehouse=new Warehouse(20);
  81.             let productOne='rice';
  82.             let productType='Food';
  83.             let productOneQuantity=10;
  84.             let productTwo='bread';
  85.             let productTwoQuantity=5;
  86.             warehouse.addProduct(productType,productOne,productOneQuantity);
  87.             warehouse.addProduct(productType,productTwo,productTwoQuantity);
  88.             let result=warehouse.orderProducts(productType);
  89.             let expectedOrder={'rice':10,'bread':5};
  90.             expect(result).to.deep.equal(expectedOrder);    
  91.         });
  92. });
  93.  
  94. describe('warehouse occupied capacity test',function(){
  95.  
  96.     it('occupied capacity should return correct number',function(){
  97.         let warehouse=new Warehouse(20);
  98.         let productOne='rice';
  99.         let productType='Food';
  100.         let productOneQuantity=10;
  101.         let productTwo='bread';
  102.         let productTwoQuantity=5;
  103.         warehouse.addProduct(productType,productOne,productOneQuantity);
  104.         warehouse.addProduct(productType,productTwo,productTwoQuantity);
  105.         let totalStorageTaken=warehouse.occupiedCapacity();
  106.         let expectedStorage=productOneQuantity+productTwoQuantity;
  107.         expect(totalStorageTaken).to.equal(expectedStorage);    
  108.     });
  109. });
  110.  
  111. describe('warehouse revision tests',function(){
  112.  
  113.     it('revision should return empty warehouse message',function(){
  114.         let warehouse=new Warehouse(10);
  115.         let revision=warehouse.revision();
  116.         let expectedOutput = 'The warehouse is empty';
  117.         expect(revision).to.equal(expectedOutput);
  118.     });
  119.  
  120.     it('revision should return  ordered list',function(){
  121.         let warehouse=new Warehouse(20);
  122.         let productOne='rice';
  123.         let productType='Food';
  124.         let productTypeTwo='Drink';
  125.         let productOneQuantity=10;
  126.         let productTwo='bread';
  127.         let productTwoQuantity=5;
  128.         warehouse.addProduct(productType,productOne,productOneQuantity);
  129.         warehouse.addProduct(productType,productTwo,productTwoQuantity);
  130.         let revision=warehouse.revision();
  131.         let expectedOutput =`Product type - [${productType}]\n`+
  132.         `- ${productOne} ${productOneQuantity}\n`+
  133.         `- ${productTwo} ${productTwoQuantity}\n`+
  134.         `Product type - [${productTypeTwo}]\n`;
  135.         let expected=expectedOutput.trim();
  136.         expect(revision).to.equal(expected);
  137.     });
  138. });
  139.  
  140. describe('warehouse scrape a product tests',function(){
  141.  
  142.     it('it should return nonexisting product',function(){
  143.         const noneExistingType="wine";
  144.         let expectedResult=`${noneExistingType} do not exists`;      
  145.         expect(function(){
  146.             let warehouse=new Warehouse(20);
  147.             let productOne='rice';
  148.             let productType='Food';
  149.             let productOneQuantity=10;
  150.             let productTwo='bread';
  151.             let productTwoQuantity=5;          
  152.             warehouse.addProduct(productType,productOne,productOneQuantity);
  153.             warehouse.addProduct(productType,productTwo,productTwoQuantity);
  154.             warehouse.scrapeAProduct(noneExistingType,5);          
  155.         }).throw(expectedResult)
  156.  
  157.     });
  158.  
  159.     it('it should reset amount of the product with not enough quantity',function(){
  160.         let warehouse=new Warehouse(20);
  161.         let product='rice';
  162.         let productType='Food';
  163.         let productQuantity=5;
  164.         let productWantedQuantity=10;          
  165.         warehouse.addProduct(productType,product,productQuantity);
  166.         warehouse.scrapeAProduct(product,productWantedQuantity);
  167.         let currentCountProduct=warehouse.availableProducts.Food[product];
  168.         const expectedCount=0;
  169.         expect(currentCountProduct).to.equal(expectedCount);          
  170.     });
  171.  
  172.     it('it should return correct quantity of the product',function(){
  173.         let warehouse=new Warehouse(20);
  174.         let product='rice';
  175.         let productType='Food';
  176.         let productQuantity=10;
  177.         let productWantedQuantity=5;          
  178.         warehouse.addProduct(productType,product,productQuantity);
  179.         warehouse.scrapeAProduct(product,productWantedQuantity);
  180.         let currentCountProduct=warehouse.availableProducts.Food[product];
  181.         const expectedCount=5;
  182.         expect(currentCountProduct).to.equal(expectedCount);          
  183.     });
  184. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement