Commit 79f42163

mo <mo.khan@gmail.com>
2017-09-24 22:10:29
move collections to Collections namespace.
1 parent acb775c
Changed files (7)
app/assets/javascripts/models/auto_collection.js.coffee
@@ -1,6 +1,6 @@
 class csx.AutoCollection
   @install: (collectionName, json) ->
-    csx[collectionName] = @create(json)
+    csx.Collections[collectionName] = @create(json)
 
   @create: (json) ->
     new Backbone.Collection(json)
app/assets/javascripts/views/my/cakes/edit_view.js.coffee
@@ -35,7 +35,7 @@ class csx.Views.My.Cakes.EditView extends Marionette.CompositeView
 
   onRender: ->
     @$("#cake_category_id").val(@model.category_id())
-    @ui.tags.tagit({ availableTags: csx.Tags.pluck('name') })
+    @ui.tags.tagit({ availableTags: csx.Collections.Tag.pluck('name') })
     @disableSaveButton()
 
   savedSuccessfully: (cake) =>
@@ -68,7 +68,7 @@ class csx.Views.My.Cakes.EditView extends Marionette.CompositeView
   serializeData: ->
     {
       cake: @model.toJSON(),
-      categories: csx.Categories.toJSON(),
+      categories: csx.Collections.Category.toJSON(),
     }
 
   launchAddPhoto: ->
app/assets/javascripts/views/my/cakes/new_view.js.coffee
@@ -57,5 +57,5 @@ class csx.Views.My.Cakes.NewView extends Marionette.ItemView
   serializeData: ->
     {
       cake: @model.toJSON(),
-      categories: csx.Categories.toJSON(),
+      categories: csx.Collection.Category.toJSON(),
     }
app/assets/javascripts/views/my/tutorials/new_view.js.coffee
@@ -36,7 +36,7 @@ class csx.Views.My.Tutorials.NewView extends Marionette.ItemView
       author_url: attributes.provider_url
 
   onRender: ->
-    @ui.tags.tagit({ availableTags: csx.Tags.pluck('name') })
+    @ui.tags.tagit({ availableTags: csx.Collections.Tag.pluck('name') })
 
   validate: ->
     @model.isValid()
app/helpers/application_helper.rb
@@ -40,12 +40,10 @@ module ApplicationHelper
   end
 
   def backbone_collection_for(items)
-    safe_name = items.name.split('::').last
-    collection_name = safe_name.pluralize
     render partial: 'backbone_collection', locals: {
-      collection_name: collection_name,
+      collection_name: items.model_name.human,
       items: items,
-      partial_name: collection_name.downcase,
+      partial_name: items.model_name.plural,
     }
   end
 end
app/views/application/json/_tags.jbuilder → app/views/application/json/_acts_as_taggable_on_tags.jbuilder
File renamed without changes
spec/javascripts/models/auto_collection_spec.js.coffee
@@ -5,9 +5,23 @@ describe "AutoCollection", ->
 
   describe ".install", ->
     it "installs a categories collection", ->
-      subject.install('Categories', [id: 1, name: 'cakes'])
+      subject.install('Category', [id: 1, name: 'cakes'])
 
-      expect(csx.Categories).not.toBe(undefined)
-      expect(csx.Categories.length).toEqual(1)
-      expect(csx.Categories.first().get('name')).toEqual('cakes')
+      collection = csx.Collections.Category
+      expect(collection).not.toBe(undefined)
+      expect(collection.length).toEqual(1)
+      expect(collection.first().get('name')).toEqual('cakes')
+
+    it "binds the proper model", ->
+      subject.install('Category', [])
+      expect(csx.Collections.Category.model).toEqual(csx.Models.Category)
+
+    it "binds the proper url", ->
+      subject.install('Cake', [])
+      expect(csx.Collections.Cake.url).toEqual('/api/v1/cakes')
+
+
+#class csx.Collections.CakesCollection extends Backbone.Collection
+  #model: csx.Models.Cake
+  #url: '/api/v1/cakes'