varvet / serenade.js

Client side MVC framework
http://serenadejs.org
Other
524 stars 27 forks source link

Serenade.Model#delegate does not delegate formatters #84

Closed ghost closed 11 years ago

ghost commented 11 years ago

Didn’t manage to fix the issue, but we did write a failing test:

diff --git a/test/model/delegate.spec.coffee b/test/model/delegate.spec.coffee
index 0e8841d..d828bee 100644
--- a/test/model/delegate.spec.coffee
+++ b/test/model/delegate.spec.coffee
@@ -81,3 +81,17 @@ describe "Serenade.Model.delegate", ->
     post = new Post(author: { name: "Jonas", email: "jonas@elabs.se" })
     expect(post.nameQuox).to.eql("Jonas")
     expect(post.emailQuox).to.eql("jonas@elabs.se")
+
+  it "forwards formatters", ->
+    class Author extends Serenade.Model
+      @property "email"
+        format: (email) ->
+          email.replace(/@/, "[at]")
+    class Post extends Serenade.Model
+      @delegate "email", to: "author", suffix: true
+
+    author = new Author({ email: "jonas@elabs.se" })
+    post = new Post(author: author)
+
+    expect(post.authorEmail).to.eql("jonas@elabs.se")
+    expect(Serenade.format(post, "authorEmail")).to.eql("jonas[at]elabs.se")