You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

123 rivejä
3.8 KiB

  1. /* eslint-env mocha */
  2. import React from "react"
  3. import expect, { createSpy } from "expect"
  4. import { shallow } from "enzyme"
  5. import ModelExample from "components/model-example"
  6. import ModelComponent from "components/model-wrapper"
  7. describe("<ModelExample/>", function(){
  8. let components, props
  9. let exampleSelectedTestInputs = [
  10. { defaultModelRendering: "model", isExecute: true },
  11. { defaultModelRendering: "example", isExecute: true },
  12. { defaultModelRendering: "example", isExecute: false },
  13. { defaultModelRendering: "othervalue", isExecute: true },
  14. { defaultModelRendering: "othervalue", isExecute: false }
  15. ]
  16. let modelSelectedTestInputs = [
  17. { defaultModelRendering: "model", isExecute: false }
  18. ]
  19. beforeEach(() => {
  20. components = {
  21. ModelWrapper: ModelComponent
  22. }
  23. props = {
  24. getComponent: (c) => {
  25. return components[c]
  26. },
  27. specSelectors: {},
  28. schema: {},
  29. example: "{\"example\": \"value\"}",
  30. isExecute: false,
  31. getConfigs: () => ({
  32. defaultModelRendering: "model",
  33. defaultModelExpandDepth: 1
  34. })
  35. }
  36. })
  37. it("renders model and example tabs", function(){
  38. // When
  39. let wrapper = shallow(<ModelExample {...props}/>)
  40. // Then should render tabs
  41. expect(wrapper.find("div > ul.tab").length).toEqual(1)
  42. let tabs = wrapper.find("div > ul.tab").children()
  43. expect(tabs.length).toEqual(2)
  44. tabs.forEach((node) => {
  45. expect(node.length).toEqual(1)
  46. expect(node.name()).toEqual("li")
  47. expect(node.hasClass("tabitem")).toEqual(true)
  48. })
  49. expect(tabs.at(0).text()).toEqual("Example Value")
  50. expect(tabs.at(1).text()).toEqual("Model")
  51. })
  52. exampleSelectedTestInputs.forEach(function(testInputs) {
  53. it("example tab is selected if isExecute = " + testInputs.isExecute + " and defaultModelRendering = " + testInputs.defaultModelRendering, function(){
  54. // When
  55. props.isExecute = testInputs.isExecute
  56. props.getConfigs = () => ({
  57. defaultModelRendering: testInputs.defaultModelRendering,
  58. defaultModelExpandDepth: 1
  59. })
  60. let wrapper = shallow(<ModelExample {...props}/>)
  61. // Then
  62. let tabs = wrapper.find("div > ul.tab").children()
  63. let exampleTab = tabs.at(0)
  64. expect(exampleTab.hasClass("active")).toEqual(true)
  65. let modelTab = tabs.at(1)
  66. expect(modelTab.hasClass("active")).toEqual(false)
  67. expect(wrapper.find("div > div").length).toEqual(1)
  68. expect(wrapper.find("div > div").text()).toEqual(props.example)
  69. })
  70. })
  71. modelSelectedTestInputs.forEach(function(testInputs) {
  72. it("model tab is selected if isExecute = " + testInputs.isExecute + " and defaultModelRendering = " + testInputs.defaultModelRendering, function(){
  73. // When
  74. props.isExecute = testInputs.isExecute
  75. props.getConfigs = () => ({
  76. defaultModelRendering: testInputs.defaultModelRendering,
  77. defaultModelExpandDepth: 1
  78. })
  79. let wrapper = shallow(<ModelExample {...props}/>)
  80. // Then
  81. let tabs = wrapper.find("div > ul.tab").children()
  82. let exampleTab = tabs.at(0)
  83. expect(exampleTab.hasClass("active")).toEqual(false)
  84. let modelTab = tabs.at(1)
  85. expect(modelTab.hasClass("active")).toEqual(true)
  86. expect(wrapper.find("div > div").length).toEqual(1)
  87. expect(wrapper.find("div > div").find(ModelComponent).props().expandDepth).toBe(1)
  88. })
  89. })
  90. it("passes defaultModelExpandDepth to ModelComponent", function(){
  91. // When
  92. let expandDepth = 0
  93. props.isExecute = false
  94. props.getConfigs = () => ({
  95. defaultModelRendering: "model",
  96. defaultModelExpandDepth: expandDepth
  97. })
  98. let wrapper = shallow(<ModelExample {...props}/>)
  99. // Then
  100. expect(wrapper.find("div > div").find(ModelComponent).props().expandDepth).toBe(expandDepth)
  101. })
  102. })