UNPKG

bem-js

Version:

A small jQuery library that helps to create CSS classes according to the BEM methodology.

91 lines (78 loc) 3.84 kB
describe('$.fn', function () { describe('modifierValue method', function () { it('should return the value of the block\'s modifier', function () { // Arrange. setFixtures('\ <div class="product product_size_xs"></div>\ <div class="product product_size_m"></div>\ <div class="product"></div>\ '); // Act & Assert. expect($('.product').modifierValue('size')).toEqual('xs'); }); it('should return the value of the element\'s modifier', function () { // Arrange. setFixtures('\ <div class="product__name product__name_size_xs"></div>\ <div class="product__name product__name_size_m"></div>\ <div class="product__name"></div>\ '); // Act & Assert. expect($('.product__name').modifierValue('size')).toEqual('xs'); }); it('should return an empty string if the block does not have the modifier', function () { // Arrange. setFixtures('\ <div class="product"></div>\ <div class="product product__name_size_xs"></div>\ '); // Act & Assert. expect($('.product').modifierValue('size')).toEqual(''); }); it('should return an empty string if the element does not have the modifier', function () { // Arrange. setFixtures('\ <div class="product__name"></div>\ <div class="product__name product__name_size_xs"></div>\ '); // Act & Assert. expect($('.product__name').modifierValue('size')).toEqual(''); }); it('should set the value of the modifier of a set of blocks and retain chaining', function () { // Arrange. setFixtures('\ <div id="product1" class="product"></div>\ <div id="product2" class="product product_size_xs"></div>\ <div id="product3" class="product product_size_xs"></div>\ '); // Act. var $products = $('.product').modifierValue('size', 'm'); // Assert. expect($products.length).toEqual(3); expect($products[0].id).toEqual('product1'); expect($products[1].id).toEqual('product2'); expect($products[2].id).toEqual('product3'); expect($products.eq(0).attr('class')).toEqual('product'); expect($products.eq(1).attr('class')).toEqual('product product_size_m'); expect($products.eq(2).attr('class')).toEqual('product product_size_m'); }); it('should set the value of the modifier of a set of elements and retain chaining', function () { // Arrange. setFixtures('\ <div id="name1" class="product_name"></div>\ <div id="name2" class="product_name product_name_size_xs"></div>\ <div id="name3" class="product_name product_name_size_xs"></div>\ '); // Act. var $products = $('.product_name').modifierValue('size', 'm'); // Assert. expect($products.length).toEqual(3); expect($products[0].id).toEqual('name1'); expect($products[1].id).toEqual('name2'); expect($products[2].id).toEqual('name3'); expect($products.eq(0).attr('class')).toEqual('product_name'); expect($products.eq(1).attr('class')).toEqual('product_name product_name_size_m'); expect($products.eq(2).attr('class')).toEqual('product_name product_name_size_m'); }); }); });