state_spec.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. require 'api_client'
  2. RSpec.describe 'State' do
  3. before(:all) do
  4. @client = ApiClient.new(ENV.fetch('ESPMH_HOSTNAME'), ENV.fetch('ESPMH_TEST_DEVICE_ID_BASE'))
  5. @client.upload_json('/settings', 'settings.json')
  6. end
  7. before(:each) do
  8. @id_params = {
  9. id: @client.generate_id,
  10. type: 'rgb_cct',
  11. group_id: 1
  12. }
  13. end
  14. context 'persistence' do
  15. it 'should persist parameters' do
  16. desired_state = {
  17. 'status' => 'ON',
  18. 'level' => 100,
  19. 'hue' => 0,
  20. 'saturation' => 100
  21. }
  22. @client.patch_state(desired_state, @id_params)
  23. patched_state = @client.get_state(@id_params)
  24. expect(patched_state.keys).to include(*desired_state.keys)
  25. expect(patched_state.select { |x| desired_state.include?(x) } ).to eq(desired_state)
  26. desired_state = {
  27. 'status' => 'ON',
  28. 'level' => 10,
  29. 'hue' => 49,
  30. 'saturation' => 20
  31. }
  32. @client.patch_state(desired_state, @id_params)
  33. patched_state = @client.get_state(@id_params)
  34. expect(patched_state.keys).to include(*desired_state.keys)
  35. expect(patched_state.select { |x| desired_state.include?(x) } ).to eq(desired_state)
  36. end
  37. it 'should affect member groups when changing group 0' do
  38. group_0_params = @id_params.merge(group_id: 0)
  39. desired_state = {
  40. 'status' => 'ON',
  41. 'level' => 100,
  42. 'hue' => 0,
  43. 'saturation' => 100
  44. }
  45. @client.patch_state(desired_state, group_0_params)
  46. individual_state = desired_state.merge('level' => 10)
  47. patched_state = @client.patch_state(individual_state, @id_params)
  48. expect(patched_state).to_not eq(desired_state)
  49. expect(patched_state.keys).to include(*individual_state.keys)
  50. expect(patched_state.select { |x| individual_state.include?(x) } ).to eq(individual_state)
  51. group_4_state = @client.get_state(group_0_params.merge(group_id: 4))
  52. expect(group_4_state.keys).to include(*desired_state.keys)
  53. expect(group_4_state.select { |x| desired_state.include?(x) } ).to eq(desired_state)
  54. @client.patch_state(desired_state, group_0_params)
  55. group_1_state = @client.get_state(group_0_params.merge(group_id: 1))
  56. expect(group_1_state.keys).to include(*desired_state.keys)
  57. expect(group_1_state.select { |x| desired_state.include?(x) } ).to eq(desired_state)
  58. end
  59. end
  60. end