rollout_ui 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/README.markdown +70 -0
  2. data/Rakefile +12 -0
  3. data/lib/rollout_ui.rb +25 -0
  4. data/lib/rollout_ui/engine/Rakefile +12 -0
  5. data/lib/rollout_ui/engine/app/assets/images/rollout_ui/dark_brick_wall.png +0 -0
  6. data/lib/rollout_ui/engine/app/assets/images/rollout_ui/rollout.png +0 -0
  7. data/lib/rollout_ui/engine/app/assets/javascripts/rollout_ui/application.js +9 -0
  8. data/lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/application.css +9 -0
  9. data/lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/layout.css +108 -0
  10. data/lib/rollout_ui/engine/app/controllers/rollout_ui/application_controller.rb +4 -0
  11. data/lib/rollout_ui/engine/app/controllers/rollout_ui/features_controller.rb +25 -0
  12. data/lib/rollout_ui/engine/app/helpers/rollout_ui/application_helper.rb +4 -0
  13. data/lib/rollout_ui/engine/app/views/layouts/rollout_ui/application.html.erb +29 -0
  14. data/lib/rollout_ui/engine/app/views/rollout_ui/features/_feature.html.erb +34 -0
  15. data/lib/rollout_ui/engine/app/views/rollout_ui/features/index.html.erb +14 -0
  16. data/lib/rollout_ui/engine/config/routes.rb +5 -0
  17. data/lib/rollout_ui/engine/lib/rollout_ui/engine.rb +5 -0
  18. data/lib/rollout_ui/engine/lib/tasks/rollout_ui_tasks.rake +4 -0
  19. data/lib/rollout_ui/engine/script/rails +6 -0
  20. data/lib/rollout_ui/engine/vendor/assets/images/rollout_ui/chosen-sprite.png +0 -0
  21. data/lib/rollout_ui/engine/vendor/assets/javascripts/chosen.jquery.js +1011 -0
  22. data/lib/rollout_ui/engine/vendor/assets/javascripts/jquery-ujs.js +367 -0
  23. data/lib/rollout_ui/engine/vendor/assets/stylesheets/chosen.css +369 -0
  24. data/lib/rollout_ui/engine/vendor/assets/stylesheets/normalize.css +431 -0
  25. data/lib/rollout_ui/feature.rb +50 -0
  26. data/lib/rollout_ui/monkey_patch.rb +8 -0
  27. data/lib/rollout_ui/server.rb +71 -0
  28. data/lib/rollout_ui/server/public/rollout_ui/application.css +916 -0
  29. data/lib/rollout_ui/server/public/rollout_ui/application.js +45 -0
  30. data/lib/rollout_ui/server/public/rollout_ui/chosen-sprite.png +0 -0
  31. data/lib/rollout_ui/server/public/rollout_ui/dark_brick_wall.png +0 -0
  32. data/lib/rollout_ui/server/public/rollout_ui/rollout.png +0 -0
  33. data/lib/rollout_ui/server/views/feature.erb +34 -0
  34. data/lib/rollout_ui/server/views/index.erb +5 -0
  35. data/lib/rollout_ui/server/views/layout.erb +32 -0
  36. data/lib/rollout_ui/version.rb +3 -0
  37. data/lib/rollout_ui/wrapper.rb +28 -0
  38. data/spec/dummy/Rakefile +7 -0
  39. data/spec/dummy/app/assets/javascripts/application.js +7 -0
  40. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  41. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  42. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  43. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  44. data/spec/dummy/config.ru +12 -0
  45. data/spec/dummy/config/application.rb +45 -0
  46. data/spec/dummy/config/boot.rb +10 -0
  47. data/spec/dummy/config/database.yml +14 -0
  48. data/spec/dummy/config/environment.rb +5 -0
  49. data/spec/dummy/config/environments/development.rb +30 -0
  50. data/spec/dummy/config/environments/production.rb +60 -0
  51. data/spec/dummy/config/environments/test.rb +39 -0
  52. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  53. data/spec/dummy/config/initializers/inflections.rb +10 -0
  54. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  55. data/spec/dummy/config/initializers/rollout.rb +6 -0
  56. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  57. data/spec/dummy/config/initializers/session_store.rb +8 -0
  58. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  59. data/spec/dummy/config/locales/en.yml +5 -0
  60. data/spec/dummy/config/routes.rb +5 -0
  61. data/spec/dummy/log/development.log +15639 -0
  62. data/spec/dummy/log/production.log +19 -0
  63. data/spec/dummy/log/stdout.log +3186 -0
  64. data/spec/dummy/log/test.log +11115 -0
  65. data/spec/dummy/public/404.html +26 -0
  66. data/spec/dummy/public/422.html +26 -0
  67. data/spec/dummy/public/500.html +26 -0
  68. data/spec/dummy/public/favicon.ico +0 -0
  69. data/spec/dummy/script/rails +6 -0
  70. data/spec/dummy/tmp/cache/assets/C44/C60/sprockets%2F32619064c16276c9031bc469f111b6f1 +369 -0
  71. data/spec/dummy/tmp/cache/assets/CA9/290/sprockets%2Ffde33cd38c83e40045112ef236908326 +1012 -0
  72. data/spec/dummy/tmp/cache/assets/CB1/0F0/sprockets%2F097929f05538ada1621d2b34d0748fb8 +0 -0
  73. data/spec/dummy/tmp/cache/assets/D0C/460/sprockets%2Fbf6917215d0871b152f3d3ec4ece0486 +0 -0
  74. data/spec/dummy/tmp/cache/assets/D1E/9E0/sprockets%2Fb92e466db7d4e78f107d8386ea19560a +0 -0
  75. data/spec/dummy/tmp/cache/assets/D22/D60/sprockets%2F6c1d9d3c966b8286c00d8dd46bd54598 +371 -0
  76. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  77. data/spec/dummy/tmp/cache/assets/D3E/870/sprockets%2F82e617ed3b33c78bb8340cdbd603d189 +1015 -0
  78. data/spec/dummy/tmp/cache/assets/D45/1B0/sprockets%2F89743b2dcefe650c86e16c60dc248a26 +0 -0
  79. data/spec/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
  80. data/spec/dummy/tmp/cache/assets/D62/900/sprockets%2F4d745068b58dab09efc05fd3bd030c05 +1387 -0
  81. data/spec/dummy/tmp/cache/assets/D71/220/sprockets%2Fd07f8aed535b53034c9a4489bd6cb45d +374 -0
  82. data/spec/dummy/tmp/cache/assets/D74/0C0/sprockets%2F28c2d3c4b8de13fe5b746c94d96042dd +0 -0
  83. data/spec/dummy/tmp/cache/assets/D7D/C20/sprockets%2Ff5f71be7464ea98757bc8e41df514a4b +433 -0
  84. data/spec/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  85. data/spec/dummy/tmp/cache/assets/D93/100/sprockets%2Ffd9e48a89d83e7b764e2de324ee888b6 +917 -0
  86. data/spec/dummy/tmp/cache/assets/DC2/770/sprockets%2F7f10ac108ce75bbb0e9877b50bcb22fe +0 -0
  87. data/spec/dummy/tmp/cache/assets/E00/850/sprockets%2Fd5e1f4415f71da50c8365f7ecdeca2ff +436 -0
  88. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  89. data/spec/dummy/tmp/cache/assets/E3E/230/sprockets%2F8156dcfebf95ff75b117c7e5bffb71dc +372 -0
  90. data/spec/dummy/tmp/cache/assets/E7A/F10/sprockets%2Ff3d71fbeaa5fdddf600a0ac52af1d8e2 +0 -0
  91. data/spec/dummy/tmp/capybara/capybara-201110152250496494273346.html +141 -0
  92. data/spec/dummy/tmp/capybara/capybara-201110152251237384633452.html +141 -0
  93. data/spec/dummy/tmp/capybara/capybara-201110152253073784924369.html +141 -0
  94. data/spec/dummy/tmp/capybara/capybara-201110152255118447806623.html +141 -0
  95. data/spec/dummy/tmp/capybara/capybara-201110152257286050916603.html +141 -0
  96. data/spec/dummy/tmp/capybara/capybara-201110152258202877532249.html +139 -0
  97. data/spec/dummy/tmp/capybara/capybara-201110152259224345897143.html +139 -0
  98. data/spec/dummy/tmp/pids/server.pid +1 -0
  99. data/spec/lib/rollout_ui/feature_spec.rb +52 -0
  100. data/spec/lib/rollout_ui/wrapper_spec.rb +63 -0
  101. data/spec/requests/engine/engine_spec.rb +95 -0
  102. data/spec/spec_helper.rb +22 -0
  103. metadata +388 -0
@@ -0,0 +1,141 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>RolloutUI</title>
5
+ <link href="/assets/rollout_ui/application.css" media="screen" rel="stylesheet" type="text/css">
6
+ <script src="/assets/rollout_ui/application.js" type="text/javascript"></script>
7
+ </head>
8
+ <body>
9
+
10
+ <h2>Features</h2>
11
+
12
+ <div id="featureA" class="feature">
13
+ <h3>featureA</h3>
14
+
15
+ <form accept-charset="UTF-8" action="/rollout/features/featureA" method="post">
16
+ <div style="margin:0;padding:0;display:inline">
17
+ <input name="utf8" type="hidden" value="&#10003;"><input name="_method" type="hidden" value="put">
18
+ </div>
19
+ <input type="text" name="users[]" value="">
20
+
21
+
22
+ Users: 5
23
+
24
+ <input id="users_" name="users[]" type="hidden" value="5"><select class="percentage" name="percentage"><option>0</option>
25
+ <option>1</option>
26
+ <option>2</option>
27
+ <option>3</option>
28
+ <option>4</option>
29
+ <option>5</option>
30
+ <option>6</option>
31
+ <option>7</option>
32
+ <option>8</option>
33
+ <option>9</option>
34
+ <option>10</option>
35
+ <option>11</option>
36
+ <option>12</option>
37
+ <option>13</option>
38
+ <option>14</option>
39
+ <option>15</option>
40
+ <option>16</option>
41
+ <option>17</option>
42
+ <option>18</option>
43
+ <option>19</option>
44
+ <option>20</option>
45
+ <option>21</option>
46
+ <option>22</option>
47
+ <option>23</option>
48
+ <option>24</option>
49
+ <option>25</option>
50
+ <option>26</option>
51
+ <option>27</option>
52
+ <option>28</option>
53
+ <option>29</option>
54
+ <option>30</option>
55
+ <option>31</option>
56
+ <option>32</option>
57
+ <option>33</option>
58
+ <option>34</option>
59
+ <option>35</option>
60
+ <option>36</option>
61
+ <option>37</option>
62
+ <option>38</option>
63
+ <option>39</option>
64
+ <option>40</option>
65
+ <option>41</option>
66
+ <option>42</option>
67
+ <option>43</option>
68
+ <option>44</option>
69
+ <option>45</option>
70
+ <option>46</option>
71
+ <option>47</option>
72
+ <option>48</option>
73
+ <option>49</option>
74
+ <option>50</option>
75
+ <option>51</option>
76
+ <option>52</option>
77
+ <option>53</option>
78
+ <option>54</option>
79
+ <option>55</option>
80
+ <option>56</option>
81
+ <option>57</option>
82
+ <option>58</option>
83
+ <option>59</option>
84
+ <option>60</option>
85
+ <option>61</option>
86
+ <option>62</option>
87
+ <option>63</option>
88
+ <option>64</option>
89
+ <option>65</option>
90
+ <option>66</option>
91
+ <option>67</option>
92
+ <option>68</option>
93
+ <option>69</option>
94
+ <option>70</option>
95
+ <option>71</option>
96
+ <option>72</option>
97
+ <option>73</option>
98
+ <option>74</option>
99
+ <option>75</option>
100
+ <option>76</option>
101
+ <option>77</option>
102
+ <option>78</option>
103
+ <option>79</option>
104
+ <option>80</option>
105
+ <option>81</option>
106
+ <option>82</option>
107
+ <option>83</option>
108
+ <option>84</option>
109
+ <option>85</option>
110
+ <option>86</option>
111
+ <option>87</option>
112
+ <option>88</option>
113
+ <option>89</option>
114
+ <option>90</option>
115
+ <option>91</option>
116
+ <option>92</option>
117
+ <option>93</option>
118
+ <option>94</option>
119
+ <option>95</option>
120
+ <option>96</option>
121
+ <option>97</option>
122
+ <option>98</option>
123
+ <option>99</option>
124
+ <option>100</option></select>%
125
+
126
+ <select class="groups" name="groups[]" multiple><option value="">Select a group</option>
127
+ <option>all</option></select><input type="submit" value="Save">
128
+ </form>
129
+ </div>
130
+
131
+
132
+ <script type="text/javascript">
133
+ $(function() {
134
+ $(".add_user").click(function(e) {
135
+ e.preventDefault();
136
+ $("<input type='text' name='users[]' />").insertBefore(this);
137
+ });
138
+ });
139
+ </script>
140
+ </body>
141
+ </html>
@@ -0,0 +1,139 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>RolloutUI</title>
5
+ <link href="/assets/rollout_ui/application.css" media="screen" rel="stylesheet" type="text/css">
6
+ <script src="/assets/rollout_ui/application.js" type="text/javascript"></script>
7
+ </head>
8
+ <body>
9
+
10
+ <h2>Features</h2>
11
+
12
+ <div id="featureA" class="feature">
13
+ <h3>featureA</h3>
14
+
15
+ <form accept-charset="UTF-8" action="/rollout/features/featureA" method="post">
16
+ <div style="margin:0;padding:0;display:inline">
17
+ <input name="utf8" type="hidden" value="&#10003;"><input name="_method" type="hidden" value="put">
18
+ </div>
19
+
20
+ Users: 5
21
+
22
+ <input type="text" name="users[]" value=""><input id="users_" name="users[]" type="hidden" value="5"><select class="percentage" name="percentage"><option>0</option>
23
+ <option>1</option>
24
+ <option>2</option>
25
+ <option>3</option>
26
+ <option>4</option>
27
+ <option>5</option>
28
+ <option>6</option>
29
+ <option>7</option>
30
+ <option>8</option>
31
+ <option>9</option>
32
+ <option>10</option>
33
+ <option>11</option>
34
+ <option>12</option>
35
+ <option>13</option>
36
+ <option>14</option>
37
+ <option>15</option>
38
+ <option>16</option>
39
+ <option>17</option>
40
+ <option>18</option>
41
+ <option>19</option>
42
+ <option>20</option>
43
+ <option>21</option>
44
+ <option>22</option>
45
+ <option>23</option>
46
+ <option>24</option>
47
+ <option>25</option>
48
+ <option>26</option>
49
+ <option>27</option>
50
+ <option>28</option>
51
+ <option>29</option>
52
+ <option>30</option>
53
+ <option>31</option>
54
+ <option>32</option>
55
+ <option>33</option>
56
+ <option>34</option>
57
+ <option>35</option>
58
+ <option>36</option>
59
+ <option>37</option>
60
+ <option>38</option>
61
+ <option>39</option>
62
+ <option>40</option>
63
+ <option>41</option>
64
+ <option>42</option>
65
+ <option>43</option>
66
+ <option>44</option>
67
+ <option>45</option>
68
+ <option>46</option>
69
+ <option>47</option>
70
+ <option>48</option>
71
+ <option>49</option>
72
+ <option>50</option>
73
+ <option>51</option>
74
+ <option>52</option>
75
+ <option>53</option>
76
+ <option>54</option>
77
+ <option>55</option>
78
+ <option>56</option>
79
+ <option>57</option>
80
+ <option>58</option>
81
+ <option>59</option>
82
+ <option>60</option>
83
+ <option>61</option>
84
+ <option>62</option>
85
+ <option>63</option>
86
+ <option>64</option>
87
+ <option>65</option>
88
+ <option>66</option>
89
+ <option>67</option>
90
+ <option>68</option>
91
+ <option>69</option>
92
+ <option>70</option>
93
+ <option>71</option>
94
+ <option>72</option>
95
+ <option>73</option>
96
+ <option>74</option>
97
+ <option>75</option>
98
+ <option>76</option>
99
+ <option>77</option>
100
+ <option>78</option>
101
+ <option>79</option>
102
+ <option>80</option>
103
+ <option>81</option>
104
+ <option>82</option>
105
+ <option>83</option>
106
+ <option>84</option>
107
+ <option>85</option>
108
+ <option>86</option>
109
+ <option>87</option>
110
+ <option>88</option>
111
+ <option>89</option>
112
+ <option>90</option>
113
+ <option>91</option>
114
+ <option>92</option>
115
+ <option>93</option>
116
+ <option>94</option>
117
+ <option>95</option>
118
+ <option>96</option>
119
+ <option>97</option>
120
+ <option>98</option>
121
+ <option>99</option>
122
+ <option>100</option></select>%
123
+
124
+ <select class="groups" name="groups[]" multiple><option value="">Select a group</option>
125
+ <option>all</option></select><input type="submit" value="Save">
126
+ </form>
127
+ </div>
128
+
129
+
130
+ <script type="text/javascript">
131
+ $(function() {
132
+ $(".add_user").click(function(e) {
133
+ e.preventDefault();
134
+ $("<input type='text' name='users[]' />").insertBefore(this);
135
+ });
136
+ });
137
+ </script>
138
+ </body>
139
+ </html>
@@ -0,0 +1,139 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>RolloutUI</title>
5
+ <link href="/assets/rollout_ui/application.css" media="screen" rel="stylesheet" type="text/css">
6
+ <script src="/assets/rollout_ui/application.js" type="text/javascript"></script>
7
+ </head>
8
+ <body>
9
+
10
+ <h2>Features</h2>
11
+
12
+ <div id="featureA" class="feature">
13
+ <h3>featureA</h3>
14
+
15
+ <form accept-charset="UTF-8" action="/rollout/features/featureA" method="post">
16
+ <div style="margin:0;padding:0;display:inline">
17
+ <input name="utf8" type="hidden" value="&#10003;"><input name="_method" type="hidden" value="put">
18
+ </div>
19
+
20
+ <input type="text" name="users[]" value=""><div id="user_ids">5</div>
21
+
22
+ <input id="users_" name="users[]" type="hidden" value="5"><select class="percentage" name="percentage"><option>0</option>
23
+ <option>1</option>
24
+ <option>2</option>
25
+ <option>3</option>
26
+ <option>4</option>
27
+ <option>5</option>
28
+ <option>6</option>
29
+ <option>7</option>
30
+ <option>8</option>
31
+ <option>9</option>
32
+ <option>10</option>
33
+ <option>11</option>
34
+ <option>12</option>
35
+ <option>13</option>
36
+ <option>14</option>
37
+ <option>15</option>
38
+ <option>16</option>
39
+ <option>17</option>
40
+ <option>18</option>
41
+ <option>19</option>
42
+ <option>20</option>
43
+ <option>21</option>
44
+ <option>22</option>
45
+ <option>23</option>
46
+ <option>24</option>
47
+ <option>25</option>
48
+ <option>26</option>
49
+ <option>27</option>
50
+ <option>28</option>
51
+ <option>29</option>
52
+ <option>30</option>
53
+ <option>31</option>
54
+ <option>32</option>
55
+ <option>33</option>
56
+ <option>34</option>
57
+ <option>35</option>
58
+ <option>36</option>
59
+ <option>37</option>
60
+ <option>38</option>
61
+ <option>39</option>
62
+ <option>40</option>
63
+ <option>41</option>
64
+ <option>42</option>
65
+ <option>43</option>
66
+ <option>44</option>
67
+ <option>45</option>
68
+ <option>46</option>
69
+ <option>47</option>
70
+ <option>48</option>
71
+ <option>49</option>
72
+ <option>50</option>
73
+ <option>51</option>
74
+ <option>52</option>
75
+ <option>53</option>
76
+ <option>54</option>
77
+ <option>55</option>
78
+ <option>56</option>
79
+ <option>57</option>
80
+ <option>58</option>
81
+ <option>59</option>
82
+ <option>60</option>
83
+ <option>61</option>
84
+ <option>62</option>
85
+ <option>63</option>
86
+ <option>64</option>
87
+ <option>65</option>
88
+ <option>66</option>
89
+ <option>67</option>
90
+ <option>68</option>
91
+ <option>69</option>
92
+ <option>70</option>
93
+ <option>71</option>
94
+ <option>72</option>
95
+ <option>73</option>
96
+ <option>74</option>
97
+ <option>75</option>
98
+ <option>76</option>
99
+ <option>77</option>
100
+ <option>78</option>
101
+ <option>79</option>
102
+ <option>80</option>
103
+ <option>81</option>
104
+ <option>82</option>
105
+ <option>83</option>
106
+ <option>84</option>
107
+ <option>85</option>
108
+ <option>86</option>
109
+ <option>87</option>
110
+ <option>88</option>
111
+ <option>89</option>
112
+ <option>90</option>
113
+ <option>91</option>
114
+ <option>92</option>
115
+ <option>93</option>
116
+ <option>94</option>
117
+ <option>95</option>
118
+ <option>96</option>
119
+ <option>97</option>
120
+ <option>98</option>
121
+ <option>99</option>
122
+ <option>100</option></select>%
123
+
124
+ <select class="groups" name="groups[]" multiple><option value="">Select a group</option>
125
+ <option>all</option></select><input type="submit" value="Save">
126
+ </form>
127
+ </div>
128
+
129
+
130
+ <script type="text/javascript">
131
+ $(function() {
132
+ $(".add_user").click(function(e) {
133
+ e.preventDefault();
134
+ $("<input type='text' name='users[]' />").insertBefore(this);
135
+ });
136
+ });
137
+ </script>
138
+ </body>
139
+ </html>
@@ -0,0 +1 @@
1
+ 13657
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe RolloutUi::Feature do
4
+ before do
5
+ # Request a feature to prime RolloutUi::Wrapper rollout instance
6
+ $rollout.active?(:featureA, mock(:user, :id => 5))
7
+
8
+ @feature = RolloutUi::Feature.new(:featureA)
9
+ end
10
+
11
+ describe "#percentage" do
12
+ it "returns the activated percentage for the feature" do
13
+ $rollout.activate_percentage(:featureA, 75)
14
+ @feature.percentage.should == "75"
15
+ end
16
+ end
17
+
18
+ describe "#percentage=" do
19
+ it "sets the activated percentage for the feature" do
20
+ @feature.percentage = 90
21
+ RolloutUi::Feature.new(:featureA).percentage.should == "90"
22
+ end
23
+ end
24
+
25
+ describe "#groups" do
26
+ it "returns the activated groups for the feature" do
27
+ $rollout.activate_group(:featureA, :beta_testers)
28
+ @feature.groups.should == ["beta_testers"]
29
+ end
30
+ end
31
+
32
+ describe "#groups=" do
33
+ it "sets the activated groups for the feature" do
34
+ @feature.groups = ["all", "admins"]
35
+ RolloutUi::Feature.new(:featureA).groups.should == ["admins", "all"]
36
+ end
37
+ end
38
+
39
+ describe "#users" do
40
+ it "returns the activated users for the feature" do
41
+ $rollout.activate_user(:featureA, mock(:user, :id => 5))
42
+ @feature.user_ids.should == ["5"]
43
+ end
44
+ end
45
+
46
+ describe "#users=" do
47
+ it "sets the activated users for the feature" do
48
+ @feature.user_ids = [5, "7", ""]
49
+ RolloutUi::Feature.new(:featureA).user_ids.should == ["5", "7"]
50
+ end
51
+ end
52
+ end