config_manager 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +34 -0
  5. data/app/assets/javascripts/config_manager/application.js +15 -0
  6. data/app/assets/stylesheets/config_manager/_reset.css.scss +74 -0
  7. data/app/assets/stylesheets/config_manager/application.css +5 -0
  8. data/app/assets/stylesheets/config_manager/generic.css.scss +19 -0
  9. data/app/controllers/config_manager/admins_controller.rb +59 -0
  10. data/app/controllers/config_manager/application_controller.rb +12 -0
  11. data/app/controllers/config_manager/sessions_controller.rb +5 -0
  12. data/app/controllers/config_manager/toggles_controller.rb +57 -0
  13. data/app/helpers/config_manager/application_helper.rb +11 -0
  14. data/app/helpers/config_manager/toggles_helper.rb +7 -0
  15. data/app/models/config_manager/admin.rb +18 -0
  16. data/app/views/config_manager/admins/_errors.html.slim +7 -0
  17. data/app/views/config_manager/admins/_form.html.slim +10 -0
  18. data/app/views/config_manager/admins/edit.html.slim +13 -0
  19. data/app/views/config_manager/admins/index.html.slim +28 -0
  20. data/app/views/config_manager/admins/new.html.slim +10 -0
  21. data/app/views/config_manager/sessions/new.html.slim +23 -0
  22. data/app/views/config_manager/toggles/_form.html.slim +12 -0
  23. data/app/views/config_manager/toggles/index.html.slim +45 -0
  24. data/app/views/layouts/config_manager/application.html.slim +54 -0
  25. data/config/initializers/devise.rb +258 -0
  26. data/config/locales/devise.en.yml +59 -0
  27. data/config/routes.rb +17 -0
  28. data/db/migrate/20140725161636_create_config_manager_admins.rb +41 -0
  29. data/lib/config_manager.rb +6 -0
  30. data/lib/config_manager/engine.rb +20 -0
  31. data/lib/config_manager/toggle.rb +66 -0
  32. data/lib/config_manager/toggles/boolean.rb +21 -0
  33. data/lib/config_manager/toggles/definition.rb +103 -0
  34. data/lib/config_manager/toggles/null.rb +18 -0
  35. data/lib/config_manager/toggles/set.rb +21 -0
  36. data/lib/config_manager/version.rb +3 -0
  37. data/lib/tasks/config_manager_tasks.rake +4 -0
  38. data/spec/dummy/README.rdoc +28 -0
  39. data/spec/dummy/Rakefile +6 -0
  40. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  41. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  42. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  43. data/spec/dummy/app/controllers/dummy_controller.rb +4 -0
  44. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  45. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  46. data/spec/dummy/bin/bundle +3 -0
  47. data/spec/dummy/bin/rails +4 -0
  48. data/spec/dummy/bin/rake +4 -0
  49. data/spec/dummy/config.ru +4 -0
  50. data/spec/dummy/config/application.rb +28 -0
  51. data/spec/dummy/config/bad_toggles.yml +8 -0
  52. data/spec/dummy/config/boot.rb +5 -0
  53. data/spec/dummy/config/config_manager_toggles.yml +7 -0
  54. data/spec/dummy/config/database.yml +21 -0
  55. data/spec/dummy/config/environment.rb +5 -0
  56. data/spec/dummy/config/environments/development.rb +37 -0
  57. data/spec/dummy/config/environments/production.rb +82 -0
  58. data/spec/dummy/config/environments/test.rb +39 -0
  59. data/spec/dummy/config/initializers/assets.rb +8 -0
  60. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  61. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  62. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  63. data/spec/dummy/config/initializers/inflections.rb +16 -0
  64. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  65. data/spec/dummy/config/initializers/redis.rb +12 -0
  66. data/spec/dummy/config/initializers/session_store.rb +3 -0
  67. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  68. data/spec/dummy/config/locales/en.yml +23 -0
  69. data/spec/dummy/config/redis.yml +8 -0
  70. data/spec/dummy/config/routes.rb +5 -0
  71. data/spec/dummy/config/secrets.yml +22 -0
  72. data/spec/dummy/config/toggles.yml +8 -0
  73. data/spec/dummy/db/development.sqlite3 +0 -0
  74. data/spec/dummy/db/schema.rb +31 -0
  75. data/spec/dummy/db/test.sqlite3 +0 -0
  76. data/spec/dummy/log/development.log +9283 -0
  77. data/spec/dummy/log/test.log +557 -0
  78. data/spec/dummy/public/404.html +67 -0
  79. data/spec/dummy/public/422.html +67 -0
  80. data/spec/dummy/public/500.html +66 -0
  81. data/spec/dummy/public/favicon.ico +0 -0
  82. data/spec/dummy/tmp/cache/assets/development/sass/786e38d79a0d3df53e8917152c8f9ebd061f1eac/_reset.css.scssc +0 -0
  83. data/spec/dummy/tmp/cache/assets/development/sass/786e38d79a0d3df53e8917152c8f9ebd061f1eac/generic.css.scssc +0 -0
  84. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  85. data/spec/dummy/tmp/cache/assets/development/sprockets/1d468d61d8002d0709400b7ab8112441 +0 -0
  86. data/spec/dummy/tmp/cache/assets/development/sprockets/259bf4d13dff689b9dbca70a598c3755 +0 -0
  87. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  88. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  89. data/spec/dummy/tmp/cache/assets/development/sprockets/4c700e6b525103954790256e74000237 +0 -0
  90. data/spec/dummy/tmp/cache/assets/development/sprockets/53db5a69412d8243c467b6af17d2f483 +0 -0
  91. data/spec/dummy/tmp/cache/assets/development/sprockets/550cbb5bc745772776097bec6b7ee6db +0 -0
  92. data/spec/dummy/tmp/cache/assets/development/sprockets/6159fbf8e1fca57907de03eef7ed9cdb +0 -0
  93. data/spec/dummy/tmp/cache/assets/development/sprockets/69d29900d66ffd35bf01cae75f4e0fe6 +0 -0
  94. data/spec/dummy/tmp/cache/assets/development/sprockets/6d3f4fe92dd890a8bbdaf3f21eae0615 +0 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/b248de24a4d5454a0dcf2490dc088b8e +0 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/bfdd9543b7b28b65c9d760f854cc387c +0 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/c5471c9026b426e70abbb969df7ba671 +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/c69bf92b5432ae5a1c2044ebc2923c71 +0 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/dbbeb33ef5af4bd661989cf666fde840 +0 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/e808c4872b8e90c978084811080405ee +0 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/ecd5a5f69d121045c4fc39b914215798 +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/f0bf3eb5da8250b91d2179600efef783 +0 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/f318cd7091c78a646f7e5bed19e774bf +0 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/f33a897212fccae3670eab346f4e193e +0 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  108. data/spec/dummy/tmp/pids/server.pid +1 -0
  109. data/spec/dummy/tmp/test.yml +7 -0
  110. data/spec/integration/navigation_test.rb +10 -0
  111. data/spec/lib/config_manager/toggle_spec.rb +110 -0
  112. data/spec/lib/config_manager/toggles/boolean_spec.rb +34 -0
  113. data/spec/lib/config_manager/toggles/definition_spec.rb +130 -0
  114. data/spec/lib/config_manager/toggles/set_spec.rb +34 -0
  115. data/spec/rails_helper.rb +48 -0
  116. data/spec/spec_helper.rb +78 -0
  117. data/spec/support/rspec_redis_helper.rb +28 -0
  118. data/spec/test_helper.rb +15 -0
  119. metadata +486 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1 @@
1
+ 85868
@@ -0,0 +1,7 @@
1
+ ---
2
+ center_mids:
3
+ type: set
4
+ acceptable_values: Kroos,Schwinsteiger
5
+ center_defense:
6
+ type: set
7
+ acceptable_values: Hummel,Boateng
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,110 @@
1
+ require 'rails_helper'
2
+
3
+ module ConfigManager
4
+ describe Toggle, :redis => true do
5
+ describe ".toggles" do
6
+ context "when there are no toggles" do
7
+ it "returns an empty array" do
8
+ Toggle.toggles.should == []
9
+ end
10
+
11
+ it "returns the an array of currently defined toggles" do
12
+ Toggles::Definition.new('d').type = 'set'
13
+ Toggles::Definition.new('d1').type = 'boolean'
14
+ Toggle.toggles.should have(2).toggles
15
+ end
16
+ end
17
+ end
18
+
19
+ describe ".active?" do
20
+ before do
21
+ definition.type = 'set'
22
+ definition.acceptable_values = %w(a b)
23
+ end
24
+ let(:definition) { Toggles::Definition.new('d1') }
25
+
26
+ context "when the challenge is in the acceptable answer test" do
27
+ it "returns true" do
28
+ Toggle.active?('d1', 'a').should be_truthy
29
+ end
30
+ end
31
+
32
+ context "when the challenge is not in the acceptable answer test" do
33
+ it "returns false" do
34
+ Toggle.active?('d1', 'c').should be_falsy
35
+ end
36
+ end
37
+
38
+ context "when the toggle is undefined" do
39
+ it "returns false" do
40
+ Toggle.active?('d2', 'a').should be_falsy
41
+ end
42
+ end
43
+ end
44
+
45
+ describe ".create" do
46
+ let(:definition) { Toggles::Definition.new('ut') }
47
+
48
+ it "creates a new boolean toggle" do
49
+ Toggle.create(:name => 'ut', :type => 'boolean', :formatted_acceptable_values => 'true')
50
+ definition.name.should == 'ut'
51
+ definition.type.should == 'boolean'
52
+ definition.acceptable_values.should == true
53
+ end
54
+
55
+ it "creates a new set toggle" do
56
+ Toggle.create(:name => 'ut', :type => 'set', :formatted_acceptable_values => 'a, b , d')
57
+ definition.name.should == 'ut'
58
+ definition.type.should == 'set'
59
+ definition.acceptable_values.should == %w{a b d}
60
+ end
61
+
62
+ it "returns a toggle definition instance" do
63
+ Toggle.create(:name => 'ut', :type => 'set', :formatted_acceptable_values => 'a, b , d').
64
+ should be_instance_of(Toggles::Definition)
65
+ end
66
+ end
67
+
68
+ describe ".delete" do
69
+ it "deletes the toggle" do
70
+ Toggle.create(:name => 'ut', :type => 'boolean', :formatted_acceptable_values => 'true')
71
+ Toggle.delete('ut')
72
+ d = Toggles::Definition.new('ut')
73
+ d.name.should == 'ut'
74
+ d.type.should == nil
75
+ d.acceptable_values.should == nil
76
+ end
77
+ end
78
+
79
+ describe ".from_yaml" do
80
+ context "when file exists" do
81
+ it "creates toggles (set and boolean) defined in file" do
82
+ Toggle.from_yaml(Rails.root.join('config/toggles.yml'))
83
+ Toggle.toggles.should have(3).toggles
84
+ end
85
+
86
+ it "returns number of created toggles and 0 failed" do
87
+ Toggle.from_yaml(Rails.root.join('config/toggles.yml')).should == [3, 0]
88
+ end
89
+
90
+ context "when file has one bad toggle" do
91
+ it "skips the bad toggle" do
92
+ Toggle.from_yaml(Rails.root.join('config/bad_toggles.yml'))
93
+ Toggle.toggles.should have(2).toggles
94
+ end
95
+
96
+ it "returns number of created toggles and 1 failed" do
97
+ Toggle.from_yaml(Rails.root.join('config/bad_toggles.yml')).should == [2, 1]
98
+ end
99
+ end
100
+ end
101
+
102
+ context "when files doesn't exist" do
103
+ it "raises an ENOENT error" do
104
+ expect { Toggle.from_yaml(Rails.root.join('config/noexist.yml')) }.
105
+ to raise_error(Errno::ENOENT)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,34 @@
1
+ require 'rails_helper'
2
+
3
+ module ConfigManager
4
+ module Toggles
5
+ describe Boolean, :redis => true do
6
+ describe ".active?" do
7
+ before { definition.type = 'boolean' }
8
+ let(:definition) { Definition.new('ut') }
9
+
10
+ context "when the acceptable answer is true" do
11
+ before { definition.acceptable_values = true }
12
+
13
+ it "returns true" do
14
+ Boolean.active?(definition).should be_truthy
15
+ end
16
+ end
17
+
18
+ context "when the acceptable answer is false" do
19
+ before { definition.acceptable_values = false }
20
+
21
+ it "returns false" do
22
+ Boolean.active?(definition).should be_falsy
23
+ end
24
+ end
25
+
26
+ context "when the acceptable answer is not set" do
27
+ it "returns false" do
28
+ Boolean.active?(definition).should be_falsy
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,130 @@
1
+ require 'rails_helper'
2
+
3
+ module ConfigManager
4
+ module Toggles
5
+ describe Definition, :redis => true do
6
+ let(:definition) { Definition.new('ut') }
7
+
8
+ describe "validness" do
9
+ context "when name is blank" do
10
+ let(:definition) { Definition.new(nil) }
11
+
12
+ it "is false" do
13
+ definition.should_not be_valid
14
+ end
15
+
16
+ context "after setting the type" do
17
+ before { definition.type == 'set' }
18
+
19
+ it "is still false" do
20
+ definition.should_not be_valid
21
+ end
22
+
23
+ it "doesn't really set the type" do
24
+ definition.type.should be_nil
25
+ end
26
+ end
27
+ end
28
+
29
+ context "when type is not set" do
30
+ it "is false" do
31
+ definition.should_not be_valid
32
+ end
33
+ end
34
+
35
+ context "when type is set" do
36
+ before { definition.type = 'set' }
37
+
38
+ it "is true" do
39
+ definition.should be_valid
40
+ end
41
+ end
42
+ end
43
+
44
+ describe "#type" do
45
+ context "when not set" do
46
+ it "returns nil" do
47
+ definition.type.should be_nil
48
+ end
49
+ end
50
+
51
+ context "when set" do
52
+ before { definition.type = 'set' }
53
+
54
+ it "returns the stored value" do
55
+ definition.type.should == 'set'
56
+ end
57
+
58
+ it "updates the stored value to a new value" do
59
+ definition.type.should == 'set'
60
+ definition.type = 'boolean'
61
+ definition.type.should == 'boolean'
62
+ end
63
+
64
+ context "when the type is not in the supported list" do
65
+ it "raises an error" do
66
+ expect { definition.type = 'blah' }.to raise_error
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ describe "#acceptable_values" do
73
+
74
+ context "when not set" do
75
+ context" when type is not set" do
76
+ it "returns nil" do
77
+ definition.acceptable_values.should == nil
78
+ end
79
+ end
80
+
81
+ context "when type is set" do
82
+ before { definition.type = 'set' }
83
+
84
+ it "returns an empty array" do
85
+ definition.acceptable_values.should == []
86
+ end
87
+ end
88
+ end
89
+
90
+ context "when set" do
91
+ context "when type is set to 'set'" do
92
+ before do
93
+ definition.type = 'set'
94
+ definition.acceptable_values = %w(a b)
95
+ end
96
+
97
+ it "returns the stored values in set format" do
98
+ definition.acceptable_values.should == %w(a b)
99
+ end
100
+
101
+ it "updates the stored values to a new value" do
102
+ definition.acceptable_values = %w(c d)
103
+ definition.acceptable_values.should == %w(c d)
104
+ end
105
+ end
106
+
107
+ context "when type is boolean" do
108
+ before { definition.type = 'boolean' }
109
+
110
+ it "converts the string to a bool and store it" do
111
+ definition.acceptable_values = 'true'
112
+ definition.acceptable_values.should == true
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ describe "#delete" do
119
+ it "deletes the stored toggle" do
120
+ definition.type = 'set'
121
+ definition.acceptable_values = %w(a b)
122
+ key = definition.instance_variable_get(:@key)
123
+ $redis.exists(key).should be_truthy
124
+ definition.delete
125
+ $redis.exists(key).should be_falsy
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end