Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

257 строки
7.5 KiB

  1. 'use strict';
  2. var _expect = require('expect.js');
  3. var _expect2 = _interopRequireDefault(_expect);
  4. var _jss = require('jss');
  5. var _jssNested = require('jss-nested');
  6. var _jssNested2 = _interopRequireDefault(_jssNested);
  7. var _index = require('./index');
  8. var _index2 = _interopRequireDefault(_index);
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  10. var settings = {
  11. createGenerateClassName: function createGenerateClassName() {
  12. return function (rule) {
  13. return rule.key + '-id';
  14. };
  15. }
  16. };
  17. describe('jss-global', function () {
  18. var jss = void 0;
  19. beforeEach(function () {
  20. jss = (0, _jss.create)(settings).use((0, _index2['default'])());
  21. });
  22. describe('@global root container', function () {
  23. var sheet = void 0;
  24. beforeEach(function () {
  25. sheet = jss.createStyleSheet({
  26. '@global': {
  27. a: { color: 'red' },
  28. body: { color: 'green' }
  29. }
  30. });
  31. });
  32. it('should add rules', function () {
  33. (0, _expect2['default'])(sheet.getRule('@global')).to.not.be(undefined);
  34. (0, _expect2['default'])(sheet.getRule('a')).to.be(undefined);
  35. (0, _expect2['default'])(sheet.getRule('body')).to.be(undefined);
  36. });
  37. it('should generate correct CSS', function () {
  38. (0, _expect2['default'])(sheet.toString()).to.be('a {\n' + ' color: red;\n' + '}\n' + 'body {\n' + ' color: green;\n' + '}');
  39. });
  40. });
  41. describe('@global root prefix', function () {
  42. var sheet = void 0;
  43. beforeEach(function () {
  44. sheet = jss.createStyleSheet({
  45. '@global body': {
  46. color: 'red'
  47. }
  48. });
  49. });
  50. it('should add rules', function () {
  51. (0, _expect2['default'])(sheet.getRule('body')).to.be(undefined);
  52. });
  53. it('should generate correct CSS', function () {
  54. (0, _expect2['default'])(sheet.toString()).to.be('body {\n' + ' color: red;\n' + '}');
  55. });
  56. });
  57. describe('@global scoped container', function () {
  58. var sheet = void 0;
  59. beforeEach(function () {
  60. sheet = jss.createStyleSheet({
  61. button: {
  62. float: 'left',
  63. '@global': {
  64. span: { color: 'red' }
  65. }
  66. }
  67. });
  68. });
  69. it('should add rules', function () {
  70. (0, _expect2['default'])(sheet.getRule('button')).to.not.be(undefined);
  71. (0, _expect2['default'])(sheet.getRule('.button-id span')).to.not.be(undefined);
  72. });
  73. it('should generate correct CSS', function () {
  74. (0, _expect2['default'])(sheet.toString()).to.be('.button-id {\n' + ' float: left;\n' + '}\n' + '.button-id span {\n' + ' color: red;\n' + '}');
  75. });
  76. });
  77. describe('@global scoped container with comma separate selectors', function () {
  78. var sheet = void 0;
  79. beforeEach(function () {
  80. sheet = jss.createStyleSheet({
  81. button: {
  82. float: 'left',
  83. '@global': {
  84. 'a, b': { color: 'red' }
  85. }
  86. }
  87. });
  88. });
  89. it('should add rules', function () {
  90. (0, _expect2['default'])(sheet.getRule('button')).to.not.be(undefined);
  91. (0, _expect2['default'])(sheet.getRule('.button-id a, .button-id b')).to.not.be(undefined);
  92. });
  93. it('should generate correct CSS', function () {
  94. (0, _expect2['default'])(sheet.toString()).to.be('.button-id {\n' + ' float: left;\n' + '}\n' + '.button-id a, .button-id b {\n' + ' color: red;\n' + '}');
  95. });
  96. });
  97. describe('@global prefixed scoped rule', function () {
  98. var sheet = void 0;
  99. beforeEach(function () {
  100. sheet = jss.createStyleSheet({
  101. button: {
  102. float: 'left',
  103. '@global span': {
  104. color: 'red'
  105. }
  106. }
  107. });
  108. });
  109. it('should add rules', function () {
  110. (0, _expect2['default'])(sheet.getRule('button')).to.not.be(undefined);
  111. (0, _expect2['default'])(sheet.getRule('.button-id span')).to.not.be(undefined);
  112. });
  113. it('should generate correct CSS', function () {
  114. (0, _expect2['default'])(sheet.toString()).to.be('.button-id {\n' + ' float: left;\n' + '}\n' + '.button-id span {\n' + ' color: red;\n' + '}');
  115. });
  116. });
  117. describe('@global prefixed scoped rule with comma separate selectors', function () {
  118. var sheet = void 0;
  119. beforeEach(function () {
  120. sheet = jss.createStyleSheet({
  121. button: {
  122. float: 'left',
  123. '@global a, b': {
  124. color: 'red'
  125. }
  126. }
  127. });
  128. });
  129. it('should add rules', function () {
  130. (0, _expect2['default'])(sheet.getRule('button')).to.not.be(undefined);
  131. (0, _expect2['default'])(sheet.getRule('.button-id a, .button-id b')).to.not.be(undefined);
  132. });
  133. it('should generate correct CSS', function () {
  134. (0, _expect2['default'])(sheet.toString()).to.be('.button-id {\n' + ' float: left;\n' + '}\n' + '.button-id a, .button-id b {\n' + ' color: red;\n' + '}');
  135. });
  136. });
  137. describe('@global with nested rules inside', function () {
  138. var jss2 = void 0;
  139. beforeEach(function () {
  140. jss2 = (0, _jss.create)({ plugins: [(0, _index2['default'])(), (0, _jssNested2['default'])()] });
  141. });
  142. it('should handle regular nested rules', function () {
  143. var sheet = jss2.createStyleSheet({
  144. '@global': {
  145. button: {
  146. color: 'red',
  147. '& span': {
  148. color: 'green'
  149. }
  150. }
  151. }
  152. });
  153. (0, _expect2['default'])(sheet.toString()).to.be('button {\n' + ' color: red;\n' + '}\n' + 'button span {\n' + ' color: green;\n' + '}');
  154. });
  155. it('should handle nested rules inside of a rule with comma separated selector', function () {
  156. var sheet = jss2.createStyleSheet({
  157. '@global': {
  158. 'button, a': {
  159. color: 'red',
  160. '& span': {
  161. color: 'green'
  162. }
  163. }
  164. }
  165. });
  166. (0, _expect2['default'])(sheet.toString()).to.be('button, a {\n' + ' color: red;\n' + '}\n' + 'button span, a span {\n' + ' color: green;\n' + '}');
  167. });
  168. it('should handle regular deep nested rules', function () {
  169. var sheet = jss2.createStyleSheet({
  170. '@global': {
  171. button: {
  172. color: 'red',
  173. '& span': {
  174. color: 'green',
  175. '& b': {
  176. color: 'blue'
  177. }
  178. }
  179. }
  180. }
  181. });
  182. (0, _expect2['default'])(sheet.toString()).to.be('button {\n' + ' color: red;\n' + '}\n' + 'button span {\n' + ' color: green;\n' + '}\n' + 'button span b {\n' + ' color: blue;\n' + '}');
  183. });
  184. it('should handle nested conditional rules', function () {
  185. var sheet = jss2.createStyleSheet({
  186. '@global': {
  187. html: {
  188. color: 'red',
  189. '@media (max-width: 767px)': {
  190. color: 'green'
  191. }
  192. }
  193. }
  194. });
  195. (0, _expect2['default'])(sheet.toString()).to.be('html {\n' + ' color: red;\n' + '}\n' + '@media (max-width: 767px) {\n' + ' html {\n' + ' color: green;\n' + ' }\n' + '}');
  196. });
  197. it('should handle conditionals with nesting inside', function () {
  198. var sheet = jss2.createStyleSheet({
  199. '@global': {
  200. '@media (max-width: 767px)': {
  201. html: {
  202. color: 'red',
  203. '& button': {
  204. color: 'green'
  205. }
  206. }
  207. }
  208. }
  209. });
  210. (0, _expect2['default'])(sheet.toString()).to.be('@media (max-width: 767px) {\n' + ' html {\n' + ' color: red;\n' + ' }\n' + ' html button {\n' + ' color: green;\n' + ' }\n' + '}');
  211. });
  212. });
  213. });