| @@ -114,12 +114,9 @@ module Agents | ||
| 114 | 114 |        context["getOptions"] = lambda { |a, x| interpolated.to_json } | 
| 115 | 115 |        context["doLog"] = lambda { |a, x| log x } | 
| 116 | 116 |        context["doError"] = lambda { |a, x| error x } | 
| 117 | - context["getMemory"] = lambda do |a, x, y| | |
| 118 | - if x && y | |
| 119 | - memory[x] = clean_nans(y) | |
| 120 | - else | |
| 121 | - memory.to_json | |
| 122 | - end | |
| 117 | +      context["getMemory"] = lambda { |a| memory.to_json } | |
| 118 | + context["setMemory"] = lambda do |a, x, y| | |
| 119 | + memory[x] = clean_nans(y) | |
| 123 | 120 | end | 
| 124 | 121 |        context["deleteKey"] = lambda { |a, x| memory.delete(x).to_json } | 
| 125 | 122 |        context["escapeHtml"] = lambda { |a, x| CGI.escapeHTML(x) } | 
| @@ -168,7 +165,7 @@ module Agents | ||
| 168 | 165 |  | 
| 169 | 166 |          Agent.memory = function(key, value) { | 
| 170 | 167 |            if (typeof(key) !== "undefined" && typeof(value) !== "undefined") { | 
| 171 | - getMemory(key, value); | |
| 168 | + setMemory(key, value); | |
| 172 | 169 |            } else if (typeof(key) !== "undefined") { | 
| 173 | 170 | return JSON.parse(getMemory())[key]; | 
| 174 | 171 |            } else { | 
| @@ -186,6 +186,30 @@ describe Agents::JavaScriptAgent do | ||
| 186 | 186 | @agent.save! | 
| 187 | 187 |          expect { @agent.reload.memory }.not_to raise_error | 
| 188 | 188 | end | 
| 189 | + | |
| 190 | + it "it stores null" do | |
| 191 | +        @agent.options['code'] = 'Agent.check = function() { | |
| 192 | +          this.memory("foo", "test"); | |
| 193 | +          this.memory("foo", null); | |
| 194 | + };' | |
| 195 | + @agent.save! | |
| 196 | + @agent.check | |
| 197 | + expect(@agent.memory['foo']).to eq(nil) | |
| 198 | + @agent.save! | |
| 199 | +        expect { @agent.reload.memory }.not_to raise_error | |
| 200 | + end | |
| 201 | + | |
| 202 | + it "it stores false" do | |
| 203 | +        @agent.options['code'] = 'Agent.check = function() { | |
| 204 | +          this.memory("foo", "test"); | |
| 205 | +          this.memory("foo", false); | |
| 206 | + };' | |
| 207 | + @agent.save! | |
| 208 | + @agent.check | |
| 209 | + expect(@agent.memory['foo']).to eq(false) | |
| 210 | + @agent.save! | |
| 211 | +        expect { @agent.reload.memory }.not_to raise_error | |
| 212 | + end | |
| 189 | 213 | end | 
| 190 | 214 |  | 
| 191 | 215 | describe "deleteKey" do |