From b6bb1b9ee93769f9e6e12146e12c185e75587571 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Fri, 8 Aug 2014 15:35:55 +0900 Subject: [PATCH] fix js filer --- app/assets/javascripts/ap.js | 1 + .../filer/caption/default/link/action.js.coffee | 7 +- .../filer/caption/default/link/base.js.coffee | 2 +- .../filer/symbol/default/face/base.js.coffee | 2 +- .../filer/symbol/default/face/image.js.coffee | 2 +- .../filer/symbol/default/link/action.js.coffee | 7 +- .../filer/symbol/default/link/base.js.coffee | 2 +- .../locmare/filer/body/file_body.js.coffee | 8 +- .../filer/body/file_body/file_item.js.coffee | 4 +- .../file_body/file_item/caption/base.js.coffee | 17 +- .../file_body/file_item/caption/default.js.coffee | 2 +- .../file_item/caption/default/face.js.coffee | 18 +- .../file_item/caption/default/face/base.js.coffee | 10 +- .../caption/default/face/column.js.coffee | 7 +- .../caption/default/face/method.js.coffee | 5 +- .../file_item/caption/default/face/none.js.coffee | 3 + .../file_item/caption/default/link.js.coffee | 19 +- .../caption/default/link/action.js.coffee | 3 + .../file_item/caption/default/link/base.js.coffee | 4 +- .../file_item/caption/default/link/none.js.coffee | 3 + .../caption/default/link/url_column.js.coffee | 3 + .../file_body/file_item/caption/none.js.coffee | 3 + .../file_body/file_item/caption/template.js.coffee | 3 + .../body/file_body/file_item/date/base.js.coffee | 21 +- .../file_body/file_item/date/default.js.coffee | 6 + .../body/file_body/file_item/date/none.js.coffee | 3 + .../file_body/file_item/edit/account.js.coffee | 10 +- .../body/file_body/file_item/edit/base.js.coffee | 21 +- .../file_body/file_item/edit/default.js.coffee | 3 + .../body/file_body/file_item/edit/none.js.coffee | 3 + .../file_body/file_item/edit/template.js.coffee | 5 +- .../body/file_body/file_item/icon/base.js.coffee | 19 +- .../file_body/file_item/icon/default.js.coffee | 6 + .../body/file_body/file_item/icon/none.js.coffee | 3 + .../file_body/file_item/summary/base.js.coffee | 17 +- .../file_body/file_item/summary/template.js.coffee | 10 +- .../body/file_body/file_item/symbol/base.js.coffee | 15 +- .../file_body/file_item/symbol/default.js.coffee | 2 +- .../file_item/symbol/default/face.js.coffee | 14 +- .../file_item/symbol/default/face/base.js.coffee | 6 + .../file_item/symbol/default/face/image.js.coffee | 3 + .../symbol/default/face/picture.js.coffee | 6 + .../file_item/symbol/default/link.js.coffee | 16 +- .../file_body/file_item/symbol/template.js.coffee | 2 +- app/assets/javascripts/main.js.coffee | 11 +- app/assets/javascripts/models/admin.js.coffee | 9 + app/assets/javascripts/models/artist.js.coffee | 5 +- app/assets/javascripts/models/author.js.coffee | 6 +- app/assets/javascripts/models/demander.js.coffee | 9 + app/assets/javascripts/models/user.js.coffee | 16 + app/assets/javascripts/pettanr.js.coffee | 13 + app/assets/javascripts/pettanr/operator.js.coffee | 71 +++ app/views/layouts/ap.html.erb | 2 +- app/views/top/ap.html.erb | 103 +++- spec/factories/panel.rb | 1 + spec/factories/writing_format.rb | 2 +- spec/peta/leaf_spec.rb | 667 +++++++++------------ spec/peta/root_spec.rb | 221 +++---- spec/peta/template_spec.rb | 51 +- 59 files changed, 890 insertions(+), 623 deletions(-) create mode 100644 app/assets/javascripts/models/admin.js.coffee create mode 100644 app/assets/javascripts/models/demander.js.coffee create mode 100644 app/assets/javascripts/models/user.js.coffee create mode 100644 app/assets/javascripts/pettanr/operator.js.coffee diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/ap.js index 50a3d427..808206ec 100644 --- a/app/assets/javascripts/ap.js +++ b/app/assets/javascripts/ap.js @@ -222,4 +222,5 @@ //= require ./i18n/translations //= require_directory ./models //= require_directory ./views +//= require_directory ./pettanr //= require main diff --git a/app/assets/javascripts/local_manifest/filer/caption/default/link/action.js.coffee b/app/assets/javascripts/local_manifest/filer/caption/default/link/action.js.coffee index a24e6dbf..f3147d2c 100644 --- a/app/assets/javascripts/local_manifest/filer/caption/default/link/action.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/caption/default/link/action.js.coffee @@ -9,6 +9,9 @@ class LocalManifest.FilerModule.CaptionModule.DefaultModule.LinkModule.ActionLin @action_name = @args['action_name'] action_path: () -> - a = @action_name == 'show' ? '' : @action_name + '/' - '/' + this.filer.item_class.path_name + '/' + a + a = if @action_name == 'show' + '' + else + @action_name + '/' + '/' + this.filer().item_class.path_name() + '/' + a diff --git a/app/assets/javascripts/local_manifest/filer/caption/default/link/base.js.coffee b/app/assets/javascripts/local_manifest/filer/caption/default/link/base.js.coffee index 1526ce0e..09fa16a6 100644 --- a/app/assets/javascripts/local_manifest/filer/caption/default/link/base.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/caption/default/link/base.js.coffee @@ -7,5 +7,5 @@ class LocalManifest.FilerModule.CaptionModule.DefaultModule.LinkModule.BaseLink super() filer: () -> - @parent.filer + @parent.filer() diff --git a/app/assets/javascripts/local_manifest/filer/symbol/default/face/base.js.coffee b/app/assets/javascripts/local_manifest/filer/symbol/default/face/base.js.coffee index 34fd67e8..57f67644 100644 --- a/app/assets/javascripts/local_manifest/filer/symbol/default/face/base.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/symbol/default/face/base.js.coffee @@ -9,5 +9,5 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace e @item_name = @args.item_name filer: () -> - @parent.filer + @parent.filer() diff --git a/app/assets/javascripts/local_manifest/filer/symbol/default/face/image.js.coffee b/app/assets/javascripts/local_manifest/filer/symbol/default/face/image.js.coffee index 0e070b38..11dd9acd 100644 --- a/app/assets/javascripts/local_manifest/filer/symbol/default/face/image.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/symbol/default/face/image.js.coffee @@ -2,7 +2,7 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.ImageFace set_default: () -> super() - @args['url'] ||= '/images/' + this.filer.item_name + '.gif' + @args['url'] ||= '/images/' + @filer().item_name() + '.gif' init: () -> super() diff --git a/app/assets/javascripts/local_manifest/filer/symbol/default/link/action.js.coffee b/app/assets/javascripts/local_manifest/filer/symbol/default/link/action.js.coffee index f792415f..fdc3fa38 100644 --- a/app/assets/javascripts/local_manifest/filer/symbol/default/link/action.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/symbol/default/link/action.js.coffee @@ -9,6 +9,9 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.ActionLink @action_name = @args['action_name'] action_path: () -> - a = @action_name == 'show' ? '' : @action_name + '/' - '/' + this.filer.item_class.path_name + '/' + a + a = if @action_name == 'show' + '' + else + @action_name + '/' + '/' + this.filer().item_class.path_name() + '/' + a diff --git a/app/assets/javascripts/local_manifest/filer/symbol/default/link/base.js.coffee b/app/assets/javascripts/local_manifest/filer/symbol/default/link/base.js.coffee index 2a96ef5a..b53f82e4 100644 --- a/app/assets/javascripts/local_manifest/filer/symbol/default/link/base.js.coffee +++ b/app/assets/javascripts/local_manifest/filer/symbol/default/link/base.js.coffee @@ -9,5 +9,5 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink e @item_name = @args.item_name filer: () -> - @parent.filer + @parent.filer() diff --git a/app/assets/javascripts/locmare/filer/body/file_body.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body.js.coffee index 5ba96923..ac0b8959 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body.js.coffee @@ -4,14 +4,18 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View initialize: (options) -> @body = options.body _this = this - @file_items = @collection().fetch({}).done(() -> _this.render()) + @collection().fetch({}) #.done(() -> _this.set_file_items()) + + set_file_items: () -> + @file_items = this.collection render: () -> _this = this + @file_items = this.collection().models _.each @collection().models, (item) -> c = _this.file_item_class() file_item = new c({'file_body': _this, 'item': item}) - args = {'file_body': _this} + args = {'file_item': file_item} template = _.template($("#" + file_item.template_name()).html()) _this.$el.append(template(args)) this diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee index caf330db..65d87494 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee @@ -1,16 +1,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.View tagName: 'li' - class: "filer-item filer-item---file_item.item_name-" initialize: (options) -> @file_body = options.file_body @item = options.item @symbol = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnFactory.factory this, @manifest().symbol, @item @caption = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnFactory.factory this, @manifest().caption, @item - @summary = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory.factory this, @manifest().manifest.summary, @item + @summary = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory.factory this, @manifest().summary, @item @icon = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnFactory.factory this, @manifest().icon, @item @date = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory.factory this, @manifest().date, @item @edit = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory.factory this, @manifest().edit, @item + @el.className = 'filer-item filer-item-' + @item.item_name() render: () -> args = {'header': this} diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee index 0d5612b5..292a6f73 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee @@ -6,6 +6,19 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo @my_manifest = options.my_manifest @item = options.item @column_name = 'caption' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -17,7 +30,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo @filer().item_name column_template_dir: () -> - @filer().template_dir() + 'item_column-' + @filer().template_dir + 'item_column-' column_template_file_name: () -> raise "undefined column_template_file_name\n" @@ -26,7 +39,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo @column_template_dir() + @column_template_file_name() item_template_dir: () -> - @filer().template_dir() + 'caption-' + @filer().template_dir + 'caption-' item_template_file_name: () -> raise "undefined item_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee index 6ca4a1ad..12afda8c 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee @@ -10,7 +10,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo 'show' item_template_file_name: () -> - if @my_manifest.link.type() == 'none' + if @my_manifest.link.type == 'none' 'default_without_link' else 'default' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face.js.coffee index 23128cf4..a48a9aa1 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face.js.coffee @@ -1,20 +1,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory @types: () -> + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule { - 'column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.ColumnFace, - 'method': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.MethodFace, - 'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.NoneFace + 'column': m.ColumnFace, + 'method': m.MethodFace, + 'none': m.NoneFace } - @factory: (file_item, my_manifest, item) -> + @factory: (default_caption, my_manifest, item) -> type = my_manifest.type if not type - alert_message "undefined type for local view filers > #{file_item.item_name} > caption > face\n" - my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory.types()[type] + ManifestBase.alert_message 'undefined type', "local view filers > #{default_caption.item_name} > caption > face\n" + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory + my_class = m.types()[type] if not my_class - alert_message "undefined class for local view filers > #{file_item.item_name} > caption > face > #{type}\n" - new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item}) + ManifestBase.alert_message 'undefined class', "local view filers > #{default_caption.item_name} > caption > face > #{type}\n" + new my_class({default_caption: default_caption, my_manifest: my_manifest, item: item}) class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee index 19bedfbd..f8b840b3 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee @@ -2,10 +2,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo tagName: 'div' initialize: (options) -> - @file_item = options.file_item - @default_caption = options.my_manifest + @default_caption = options.default_caption + @my_manifest = options.my_manifest @item = options.item + render: () -> + args = {'item_column': this} + template = _.template($("#" + @template_name()).html()) + this.$el.html(template(args)) + this + filer: () -> @default_caption.filer() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee index 6effeae0..91e9b936 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee @@ -1,11 +1,14 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.ColumnFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace + initialize: (options) -> + super(options) + template_file_name: () -> - if @face.is_blank() + if Pettanr.is_blank(@face()) 'empty' else 'column' face: () -> - @item.get(@my_manifest.column_name()) + @item.get(@my_manifest.column_name) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee index 1de23d9b..200127d8 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee @@ -1,7 +1,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.MethodFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace + initialize: (options) -> + super(options) + @template_file_name: () -> - if @face.is_blank() + if @face().is_blank() 'empty' else 'column' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/none.js.coffee index ae72d844..bdc1d41e 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.NoneFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace + initialize: (options) -> + super(options) + template_file_name: () -> 'none' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link.js.coffee index 714b0617..a04947c3 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link.js.coffee @@ -1,21 +1,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory @types: () -> + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule { - 'action': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.ActionLink, - 'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.NoneLink, - 'url_column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.UrlColumnLink + 'action': m.ActionLink, + 'none': m.NoneLink, + 'url_column': m.UrlColumnLink } - @factory: (file_item, my_manifest, item) -> + @factory: (default_caption, my_manifest, item) -> type = my_manifest.type if not type - alert_message "undefined type for local view filers > #{file_item.item_name} > caption > link\n" - my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory.types()[type] + ManifestBase.alert_message 'undefined type', "local view filers > #{default_caption.item_name} > caption > link\n" + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory + my_class = m.types()[type] if not my_class - alert_message "undefined class for local view filers > #{file_item.item_name} > caption > link > #{type}\n" - new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item}) + ManifestBase.alert_message 'undefined class', "local view filers > #{default_caption.item_name} > caption > link > #{type}\n" + new my_class({default_caption: default_caption, my_manifest: my_manifest, item: item}) - class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee index fc35293c..9291220f 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.ActionLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink + initialize: (options) -> + super(options) + url: () -> @my_manifest.action_path() + @item.get('id').toString() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee index a2e8e75d..d2c152ee 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee @@ -2,8 +2,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo tagName: 'div' initialize: (options) -> - @file_item = options.file_item - @default_caption = options.my_manifest + @default_caption = options.default_caption + @my_manifest = options.my_manifest @item = options.item url: () -> diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/none.js.coffee index 12a5a22f..4c5faf1e 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.NoneLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink + initialize: (options) -> + super(options) + url: () -> null diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee index 24631e5e..8090a4e5 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.UrlColumnLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink + initialize: (options) -> + super(options) + url: () -> @item.get(@my_manifest.column_name()) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/none.js.coffee index 80340b1b..1b913a44 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'none' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/template.js.coffee index bcda9c73..f8d68835 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/template.js.coffee @@ -1,4 +1,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base + initialize: (options) -> + super(options) + template_file_name: () -> @my_manifest.template_name() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/base.js.coffee index 0db33a34..859a20e8 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/base.js.coffee @@ -3,9 +3,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColum initialize: (options) -> @file_item = options.file_item - @date_manifest = options.my_manifest + @my_manifest = options.my_manifest @item = options.item @column_name = 'date' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -14,10 +27,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColum @filer.manifest item_name: () -> - @filer.item_name + @filer().item_name column_template_dir: () -> - @filer.template_dir + 'item_column-' + @filer().template_dir + 'item_column-' column_template_file_name: () -> raise "undefined column_template_file_name\n" @@ -26,7 +39,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColum @column_template_dir() + @column_template_file_name() item_template_dir: () -> - @filer.template_dir + 'date-' + @filer().template_dir + 'date-' item_template_file_name: () -> raise "undefined item_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/default.js.coffee index b8972d09..a16b9f19 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/default.js.coffee @@ -1,8 +1,14 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' item_template_file_name: () -> 'default' + time_ago: () -> + Pettanr.AppHelper.distance_of_time_in_words_to_now @item.get('updated_at') + diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/none.js.coffee index 15a37899..e63a7c49 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/date/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'none' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee index fc5e555c..d17fd064 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Account extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' @@ -12,10 +15,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum edit_img_file_name: () -> @image_dir() + 'edit.png' + icon_size: () -> + Manifest.manifest().magic_numbers['thumbnail_width'] / 2 + img_opt: () -> { - 'width': Manifest.manifest.magic_numbers['thumbnail_width'] / 2, - 'height': Manifest.manifest.magic_numbers['thumbnail_height'] / 2 + 'width': Manifest.manifest().magic_numbers['thumbnail_width'] / 2, + 'height': Manifest.manifest().magic_numbers['thumbnail_height'] / 2 } edit_img_opt: () -> diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee index 43ebcd82..f7b04892 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee @@ -3,9 +3,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum initialize: (options) -> @file_item = options.file_item - @date_manifest = options.my_manifest + @my_manifest = options.my_manifest @item = options.item @column_name = 'edit' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -17,10 +30,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum @filer().item_name image_dir: () -> - @filer().image_dir + @filer().image_dir() column_template_dir: () -> - @filer().template_dir + 'item_column/' + @filer().template_dir + 'item_column-' column_template_file_name: () -> raise "undefined column_template_file_name\n" @@ -29,7 +42,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum @column_template_dir() + @column_template_file_name() item_template_dir: () -> - @filer().template_dir + 'edit/' + @filer().template_dir + 'edit-' item_template_file_name: () -> raise "undefined item_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee index b8378135..3006b39c 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/none.js.coffee index f6be2f8f..bf407ca7 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'none' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee index 4764054a..5fd84378 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' @@ -7,7 +10,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum 'template' template_dir: () -> - @item.path_name() + '/' + @item.path_name() + '-' template_file_name: () -> @my_manifest.template_name() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee index e4207e52..a6244efc 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee @@ -3,9 +3,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum initialize: (options) -> @file_item = options.file_item - @date_manifest = options.my_manifest + @my_manifest = options.my_manifest @item = options.item @column_name = 'icon' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -17,7 +30,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum @filer().item_name column_template_dir: () -> - @filer().template_dir() + 'item_column-' + @filer().template_dir + 'item_column-' column_template_file_name: () -> raise "undefined column_template_file_name\n" @@ -26,7 +39,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum @column_template_dir() + @column_template_file_name() item_template_dir: () -> - @filer().template_dir() + 'icon-' + @filer().template_dir + 'icon-' item_template_file_name: () -> raise "undefined item_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee index 6a1a0bdc..614a96f4 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee @@ -1,8 +1,14 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' + path_name: () -> + '/' + @manifest().item_class.path_name() + '/' + @item.get('id').toString() + '.prof' + item_template_file_name: () -> 'default' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/none.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/none.js.coffee index c36869a7..51449492 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/none.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/none.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'none' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/base.js.coffee index cf91ad9f..b08a70da 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/base.js.coffee @@ -3,9 +3,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo initialize: (options) -> @file_item = options.file_item - @date_manifest = options.my_manifest + @my_manifest = options.my_manifest @item = options.item @column_name = 'summary' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -17,7 +30,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo @filer().item_name column_template_dir: () -> - @filer().template_dir() + 'item_column-' + @filer().template_dir + 'item_column-' column_template_file_name: () -> raise "undefined column_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee index cf2fede3..2288700e 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee @@ -1,17 +1,17 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.Base + initialize: (options) -> + super(options) + column_template_file_name: () -> 'show' - item_template_file_name: () -> - 'template' - template_dir: () -> @item.path_name() + '-' template_file_name: () -> - @my_manifest.template_name() + @my_manifest.template_name - template_name: () -> + item_template_name: () -> @template_dir() + @template_file_name() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee index aa87e37e..c0ea7d06 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee @@ -6,6 +6,19 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol @my_manifest = options.my_manifest @item = options.item @column_name = 'symbol' + @el.className = 'filer-item-' + @column_name + + render_column: () -> + args = {'item_column': this} + template = _.template($("#" + @column_template_name()).html()) + this.$el.html(template(args)) + this + + render_item: () -> + args = {'item_column': this} + template = _.template($("#" + @item_template_name()).html()) + this.$el.html(template(args)) + this filer: () -> @file_item.filer() @@ -26,7 +39,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol @column_template_dir() + @column_template_file_name() item_template_dir: () -> - @filer().template_dir() + 'symbol-' + @filer().template_dir + 'symbol-' item_template_file_name: () -> raise "undefined item_template_file_name\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee index 23aba6fd..a969bad7 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee @@ -10,7 +10,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol 'show' item_template_file_name: () -> - if @symbol_manifest.link.type == 'none' + if @my_manifest.link.type == 'none' 'default_without_link' else 'default' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face.js.coffee index be85b1eb..0a6de738 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face.js.coffee @@ -1,16 +1,20 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory @types: () -> + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule { - 'image': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.ImageFace, - 'picture': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.PictureFace + 'image': m.ImageFace, + 'picture': m.PictureFace } @factory: (default_symbol, my_manifest, item) -> type = my_manifest.type - ManifestBase.alert_message('undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n") if not type - my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory.types()[type] - ManifestBase.alert_message('undefined class', "local view filers > #{default_symbol.item_name} > symbol > face > #{type}\n") if not my_class + if not type + ManifestBase.alert_message 'undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n" + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory + my_class = m.types()[type] + if not my_class + ManifestBase.alert_message 'undefined class', "local view filers > #{default_symbol.item_name} > symbol > face > #{type}\n" new my_class({default_symbol: default_symbol, my_manifest: my_manifest, item: item}) class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee index ae905220..18c74439 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee @@ -6,6 +6,12 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol @my_manifest = options.my_manifest @item = options.item + render: () -> + args = {'item_column': this} + template = _.template($("#" + @template_name()).html()) + this.$el.html(template(args)) + this + filer: () -> @default_symbol.filer() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee index cb8f4767..6e23fcd8 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee @@ -9,6 +9,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol url: () -> @my_manifest.url + icon_size: () -> + Manifest.manifest().magic_numbers['thumbnail_width'] + tag_opt: () -> {'src': @url(), 'width': Manifest.manifest().magic_numbers['thumbnail_width'], 'height': Manifest.manifest().magic_numbers['thumbnail_height']} diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee index 0b15d8c3..692306cb 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee @@ -9,6 +9,12 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol method_name: () -> @my_manifest.method_name() + url: () -> + if @item.methods(true).is_include(@method_name()) + @item[@method_name()]() + else + '/images/error.png' + tag_opt: () -> if @item.methods(true).is_include(@method_name()) @item[@method_name()]() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link.js.coffee index f587cb84..991ecb1c 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link.js.coffee @@ -1,17 +1,21 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory @types: () -> + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule { - 'action': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.ActionLink, - 'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.NoneLink, - 'url_column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.UrlColumnLink + 'action': m.ActionLink, + 'none': m.NoneLink, + 'url_column': m.UrlColumnLink } @factory: (default_symbol, my_manifest, item) -> type = my_manifest.type - ManifestBase.alert_message('undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n") if not type - my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory.types()[type] - ManifestBase.alert_message('undefined class', "local view filers > #{default_symbol.item_name} > symbol > link > #{type}\n") if not my_class + if not type + ManifestBase.alert_message('undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n") + m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory + my_class = m.types()[type] + if not my_class + ManifestBase.alert_message('undefined class', "local view filers > #{default_symbol.item_name} > symbol > link > #{type}\n") new my_class({default_symbol: default_symbol, my_manifest: my_manifest, item: item}) class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee index 1851a777..ab02ef13 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee @@ -13,7 +13,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol @item.path_name() + '-' template_file_name: () -> - @symbol_manifest.template_name() + @my_manifest.template_name() template_name: () -> @template_dir() + @template_file_name() diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee index 2539178a..a201419b 100644 --- a/app/assets/javascripts/main.js.coffee +++ b/app/assets/javascripts/main.js.coffee @@ -24,18 +24,17 @@ $ -> on_open: () -> @render() render: () -> - class ArCol extends Backbone.Collection - model: Pettanr.Artist - url: '/artists' - cc = new ArCol({}) - cc.fetch({}) class ArtistCollection extends Backbone.Collection model: Pettanr.Artist url: '/artists' cc = new ArtistCollection({}) cc.fetch({}) list_result = null - operators = null + author = new Pettanr.Author({id: author_id}) + author.fetch({}) + artist = new Pettanr.Artist({id: artist_id}) + artist.fetch({}) + operators = new Pettanr.Operator([author, artist]) v = new Locmare.Filer({ item_name: 'artist', collection: cc, diff --git a/app/assets/javascripts/models/admin.js.coffee b/app/assets/javascripts/models/admin.js.coffee new file mode 100644 index 00000000..d511fafa --- /dev/null +++ b/app/assets/javascripts/models/admin.js.coffee @@ -0,0 +1,9 @@ +class Pettanr.Admin extends Backbone.Model + + defaults: { + id: null + } + + initialize: () -> + + diff --git a/app/assets/javascripts/models/artist.js.coffee b/app/assets/javascripts/models/artist.js.coffee index 051e898a..427e6da3 100644 --- a/app/assets/javascripts/models/artist.js.coffee +++ b/app/assets/javascripts/models/artist.js.coffee @@ -1,4 +1,6 @@ class Pettanr.Artist extends Peta.Owner + url: '/artists/' + @singular: () -> 'Artist' @@ -11,5 +13,6 @@ class Pettanr.Artist extends Peta.Owner } initialize: () -> - + if @id + @url = @url + @id diff --git a/app/assets/javascripts/models/author.js.coffee b/app/assets/javascripts/models/author.js.coffee index 2db75648..8a6d2c36 100644 --- a/app/assets/javascripts/models/author.js.coffee +++ b/app/assets/javascripts/models/author.js.coffee @@ -1,4 +1,6 @@ class Pettanr.Author extends Peta.Owner + url: '/authors/' + @singular: () -> 'Author' @@ -11,5 +13,7 @@ class Pettanr.Author extends Peta.Owner } initialize: () -> - + if @id + @url = @url + @id + diff --git a/app/assets/javascripts/models/demander.js.coffee b/app/assets/javascripts/models/demander.js.coffee new file mode 100644 index 00000000..59d3484b --- /dev/null +++ b/app/assets/javascripts/models/demander.js.coffee @@ -0,0 +1,9 @@ +class Pettanr.Demander extends Backbone.Model + + defaults: { + id: null + } + + initialize: () -> + + diff --git a/app/assets/javascripts/models/user.js.coffee b/app/assets/javascripts/models/user.js.coffee new file mode 100644 index 00000000..469fde4c --- /dev/null +++ b/app/assets/javascripts/models/user.js.coffee @@ -0,0 +1,16 @@ +class Pettanr.User extends Backbone.Model + + url: '/users/' + + defaults: { + id: null + } + + author: () -> + + artist: () -> + + initialize: () -> + if @id + @url = @url + @id + diff --git a/app/assets/javascripts/pettanr.js.coffee b/app/assets/javascripts/pettanr.js.coffee index 3704d7ec..1dc75100 100644 --- a/app/assets/javascripts/pettanr.js.coffee +++ b/app/assets/javascripts/pettanr.js.coffee @@ -1,4 +1,7 @@ class Pettanr + @is_blank: (str) -> + !str?.trim() + class Pettanr.AppHelper @manifest: () -> Manifest.manifest @@ -23,6 +26,13 @@ class Pettanr @t_selected_item: (name, index) -> I18n.t(Manifest.manifest().system_resources.select_items[name][index][0]) + @image_tag: (src, opt = {}) -> + size = if opt['size'] + parseInt(opt['size']) + else + 35 + "" + @icon_tag: (name, opt = {}) -> title = if opt['object'] name + ' ID:' + opt['object'].get(id).toString() @@ -33,6 +43,9 @@ class Pettanr else 35 "\""" + + @distance_of_time_in_words_to_now: (datetime) -> + datetime class Pettanr.AppController diff --git a/app/assets/javascripts/pettanr/operator.js.coffee b/app/assets/javascripts/pettanr/operator.js.coffee new file mode 100644 index 00000000..e0d8ee89 --- /dev/null +++ b/app/assets/javascripts/pettanr/operator.js.coffee @@ -0,0 +1,71 @@ +class Pettanr.Operator + + initialize: (operators) -> + @operators = operators + + #InstanceMethods + find_user: () -> + _.each @operators, (operator) -> + return operator if operator instanceof Pettanr.User + return operator.user if operator instanceof Pettanr.Author + return operator.user if operator instanceof Pettanr.Artist + nil + + find_author: () -> + _.each @operators, (operator) -> + return operator if operator instanceof Pettanr.Author + return operator.author if operator instanceof Pettanr.User + return operator.user.author if (operator instanceof Pettanr.Artist) and operator.user.author + nil + + find_artist: () -> + _.each @operators, (operator) -> + return operator.user.artist if (operator instanceof Pettanr.Author) and operator.user.artist + return operator.artist if operator instanceof Pettanr.User + return operator if operator instanceof Pettanr.Artist + nil + + find_admin: () -> + _.each @operators, (operator) -> + return operator if operator instanceof Pettanr.Admin + nil + + user: () -> + return @user if @user + @user = @find_user() + + author: () -> + return @author if @author + @author = @find_author() + + artist: () -> + return @artist if @artist + @artist = @find_artist() + + admin: () -> + return @admin if @admin + @admin = @find_admin() + + is_guest: () -> + true + + is_reader: () -> + _.each @operators, (operator) -> + return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User) + false + + is_user: () -> + _.each @operators, (operator) -> + return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.User) + false + + is_resource_reader: () -> + _.each @operators, (operator) -> + return true if (operator instanceof Pettanr.Author) or (operator instanceof Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User) or (operator instanceof Pettanr.DemandUser) + false + + is_admin: () -> + _.each @operators, (operator) -> + return true if operator instanceof Pettanr.Admin + false + diff --git a/app/views/layouts/ap.html.erb b/app/views/layouts/ap.html.erb index b4da561f..25f961cf 100644 --- a/app/views/layouts/ap.html.erb +++ b/app/views/layouts/ap.html.erb @@ -4,7 +4,7 @@ ap - <%= h(manifest.magic_numbers['profile']['users']['caption']) %> - <%# stylesheet_link_tag "application" %> + <%= stylesheet_link_tag "test" %> <%= javascript_include_tag "application" %> <%= javascript_include_tag "ap" %> <%# raw panel_editor_javascript_include_tags %> diff --git a/app/views/top/ap.html.erb b/app/views/top/ap.html.erb index 055cf770..84dc66d2 100644 --- a/app/views/top/ap.html.erb +++ b/app/views/top/ap.html.erb @@ -4,6 +4,10 @@ filer + @@ -19,8 +23,8 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spec/factories/panel.rb b/spec/factories/panel.rb index 0eceba54..4741a1be 100644 --- a/spec/factories/panel.rb +++ b/spec/factories/panel.rb @@ -56,6 +56,7 @@ FactoryGirl.define do i.height 80 i.border 2 i.caption '' + i.publish 1 end factory :panel_awesome, :class => Panel do |i| i.width 333 diff --git a/spec/factories/writing_format.rb b/spec/factories/writing_format.rb index 5a66f779..521b2d26 100644 --- a/spec/factories/writing_format.rb +++ b/spec/factories/writing_format.rb @@ -15,7 +15,7 @@ FactoryGirl.define do end factory :writing_format_test, :class => WritingFormat do |i| i.name 'test@pettan.com' - i.module_name 'PettanrSimpleFormat' + i.module_name 'PettanrTestFormat' i.caption 'test' i.settings '{}' trait :with_system_picture do diff --git a/spec/peta/leaf_spec.rb b/spec/peta/leaf_spec.rb index ebaee0fe..86b3796f 100644 --- a/spec/peta/leaf_spec.rb +++ b/spec/peta/leaf_spec.rb @@ -20,49 +20,49 @@ describe ScrollPanel do before do end - it 'ぶら下がるそれぞれのリーフを取得できる' do + it '親モデルであるバインダーを取得している' do expect(@model.parent_model).to eq Scroll end - it 'すべてのリーフを取得できる' do + it '差し込むコンテンツのモデルを取得している' do expect(@model.destination_model).to eq Panel end - it 'ぶら下がるそれぞれのリーフを取得できる' do + it 'バインダーを取得するためのIDのカラムを返している' do expect(@model.binder_key).to eq 'scroll_id' end - it 'ぶら下がるそれぞれのリーフを取得できる' do + it '差し込むコンテンツを取得するためのIDのカラムを返している' do expect(@model.destination_key).to eq 'panel_id' end end - describe 'myに於いて' do + describe '便利機能に於いて' do before do end - it '名前の活用に於いて' do + it 'バインダーのIDを返している' do expect(@item.binder_id).to eq @scroll.id end - it '名前の活用に於いて' do + it '差し込むコンテンツのIDを返している' do expect(@item.destination_id).to eq @panel.id end end - describe 'cutに於いて' do - it 'cut' do + describe 'クラスメソッドへのショートカットに於いて' do + it 'binder_keyメソッドを呼び出せる' do expect(@item.binder_key).to eq @model.binder_key end - it 'cut' do + it 'destination_keyメソッドを呼び出せる' do expect(@item.destination_key).to eq @model.destination_key end end describe 'playに於いて' do - it 'cut' do + it '時系列でソートできるようなSQLを返している' do expect(@model.play_list_order).to eq 'scroll_panels.t' end @@ -318,40 +318,42 @@ describe StorySheet do # insert_shift, lesser_shift, higher_shift, update_shift, rotate end -# +# I/O処理については、マニフェストで動作が変わることがないのでスクロールとスクコマでのみテストしておく describe ScrollPanel do include LeafMacros before do - @admin =FactoryGirl.create :admin + @admin = FactoryGirl.create :admin @user_yas = FactoryGirl.create :user_yas_with_owner @user_rom = FactoryGirl.create :user_rom - @author_yas = @user_yas.author + @author_yas = @user_yas.author @model = ScrollPanel end - describe 'new_tに於いて' do + describe 't補充値new_tに於いて' do before do - @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end - context 'オーソドックスなデータのとき' do - it 'cut' do + context 'スクロール初のコマなら' do + it '0を補充値とする' do expect(@model.new_t(@scroll.id)).to eq 0 end end - context 'オーソドックスなデータのとき' do - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel + context 'スクロールにコマがあるとき' do + it '一個なら1を補充値とする' do + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel expect(@model.new_t(@scroll.id)).to eq 1 end - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel + it '3個なら3を補充値とする' do + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel expect(@model.new_t(@scroll.id)).to eq 3 end @@ -359,29 +361,30 @@ describe ScrollPanel do end - describe 'collect_tに於いて' do + describe 't収集collect_tに於いて' do before do @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end - context 'オーソドックスなデータのとき' do - it 'cut' do + context '空っぽのスクロールのとき' do + it '当然リストは空っぽになっている' do expect(@model.collect_t(@scroll.id)).to be_empty end end context 'オーソドックスなデータのとき' do - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel + it 'スクコマから同一スクロールのtだけを収集している' do + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel expect(@model.collect_t(@scroll.id)).to eq [0] end - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel + it 'スクコマから同一スクロールのtだけを収集している' do + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel expect(@model.collect_t(@scroll.id)).to eq [0, 1, 2] end @@ -391,192 +394,151 @@ describe ScrollPanel do describe 'tチェックに於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - @item = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - end - context 'つつがなく終わるとき' do - it 't収集を依頼している' do - SheetPanel.should_receive(:collect_t).with(any_args).exactly(1) - SheetPanel.stub(:collect_t).with(any_args).and_return([]) - SheetPanel.stub(:serial?).with(any_args).and_return(true) - r = SheetPanel.validate_t @item - end - it '収集したtをシリアライズチェック依頼している' do - SheetPanel.stub(:collect_t).with(any_args).and_return([]) - SheetPanel.should_receive(:serial?).with(any_args).exactly(1) - SheetPanel.stub(:serial?).with(any_args).and_return(true) - r = SheetPanel.validate_t @item - end + @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end - #実データでチェック - #依頼チェックだけでは不安なので最低限のチェックを + #実データで最低限のチェックを context '新規のとき' do it '一件だけで正常通過している' do - @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0 - r = SheetPanel.validate_t @item - r.should be_true + @item = FactoryGirl.build :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + r = ScrollPanel.validate_t @item + expect(r).to be_true end end context '既存のとき' do it '2件目を作っても正常通過している' do - @item = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0 - @item2 = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 1 - r = SheetPanel.validate_t @item2 - r.should be_true + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.build :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + r = ScrollPanel.validate_t @item2 + expect(r).to be_true end end end describe '挿入シフトに於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - end - context '依頼チェック' do - #テーブルが空で0に挿入 - it 'Updateを依頼している' do - SheetPanel.stub(:update_all).with(any_args) - SheetPanel.should_receive(:update_all).with(any_args).exactly(1) - @item = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item.insert_shift - end + @dummy_scroll = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end context 'テーブルに1件(t:0)で0に挿入したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.build :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel end it '既存の行を1にシフトしている' do @item2.insert_shift - l = SheetPanel.find :all - l.first.t.should eq 1 + @item.reload + expect(@item.t).to eq 1 end it 'これから挿入するt(0)が欠番になっている' do @item2.insert_shift - l = SheetPanel.find(:all).map {|s| s.t } - l.include?(0).should_not be_true + @item.reload + expect(@item2.t).to eq 0 end end context 'テーブルに2件(t:0,1)で1に挿入したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.build :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel end it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do @item3.insert_shift - l = SheetPanel.find(:all).map {|s| s.t } - l.sort.should eq [0, 2] + @item.reload + @item2.reload + expect(@item.t).to eq 0 + expect(@item2.t).to eq 2 end end context 'テーブルに5件(t:0,1,2,3,4)で2に挿入したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - end - it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do - @item6.insert_shift - l = SheetPanel.find(:all).map {|s| s.t } - l.sort.should eq [0, 1, 3, 4, 5] - end - end - context '先ほどのケース+他の用紙1件で挿入したとき' do - before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel + @item6 = FactoryGirl.build :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel end it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do @item6.insert_shift - l = SheetPanel.find(:all, :conditions => ['sheet_id = ?', @sheet.id]).map {|s| s.t } - l.sort.should eq [0, 1, 3, 4, 5] - end - it '他の用紙に影響がない' do - ot = @itemc2.t - @item6.insert_shift - @itemc2.reload - @itemc2.t.should eq ot + @item.reload + @item2.reload + @item3.reload + @item4.reload + @item5.reload + expect(@item.t).to eq 0 + expect(@item2.t).to eq 1 + expect(@item3.t).to eq 3 + expect(@item4.t).to eq 4 + expect(@item5.t).to eq 5 end end end describe '少ない方に移動に於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - end - context '依頼チェック' do - it 'Updateを依頼している' do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.stub(:update_all).with(any_args) - SheetPanel.should_receive(:update_all).with(any_args).exactly(1) - ot = @item2.t - @item2.t = 0 - @item2.lesser_shift ot - end + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end context 'テーブルに2件(t:0,1)で1を0に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel @ot = @item2.t @item2.t = 0 end it '既存のt0を1にシフトしてこれから挿入するt(0)が欠番になっている' do #移動させたい行はそのまま残る @item2.lesser_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } - l.sort.should eq [1, 1] + @item.reload + @item2.reload + expect(@item.t).to eq 1 + expect(@item2.t).to eq 1 end it '既存のt0を1にシフトしている' do @item2.lesser_shift @ot @item.reload - @item.t.should eq 1 + expect(@item.t).to eq 1 end end context 'テーブルに3件(t:0,1,2)で2を1に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel @ot = @item3.t @item3.t = 1 end it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do #移動させたい行はそのまま残る @item3.lesser_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } - l.sort.should eq [0, 2, 2] + @item.reload + @item2.reload + @item3.reload + expect(@item.t).to eq 0 + expect(@item2.t).to eq 2 + expect(@item3.t).to eq 2 end it '既存のt1を2にシフトしている' do @item3.lesser_shift @ot @item2.reload - @item2.t.should eq 2 + expect(@item2.t).to eq 2 end end context 'テーブルに5件(t:0,1,2,3,4)で3を1に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item4.t @item4.t = 1 end it 'これから挿入するt(1)が欠番になっている' do #移動させたい行はそのまま残る @item4.lesser_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 2, 3, 3, 4] end it '既存のt0には変化がない' do @@ -600,21 +562,19 @@ describe ScrollPanel do @item3.t.should eq 3 end end - context '先ほどのケース+他の用紙1件で挿入したとき' do + context '先ほどのケース+他のスクロール1件で挿入したとき' do before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item4.t @item4.t = 1 end it 'これから挿入するt(1)が欠番になっている' do @item4.lesser_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 0, 2, 3, 3, 4] end it '既存のt0には変化がない' do @@ -637,7 +597,7 @@ describe ScrollPanel do @item3.reload @item3.t.should eq 3 end - it '他の用紙に影響がない' do + it '他のスクロールに影響がない' do @item4.lesser_shift @ot @itemc2.reload @itemc2.t.should eq 0 @@ -647,15 +607,16 @@ describe ScrollPanel do #負のときは0として正常扱い context 'テーブルに2件(t:0,1)で1を-1に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id @ot = @item2.t @item2.t = -1 end it '既存のt0を1にシフトしてこれから挿入するt(0)が欠番になっている' do #移動させたい行はそのまま残る @item2.lesser_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [1, 1] end it '既存のt0を1にシフトしている' do @@ -671,15 +632,16 @@ describe ScrollPanel do end describe '大きい方に移動に於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end context '依頼チェック' do it 'Updateを依頼している' do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.stub(:update_all).with(any_args) - SheetPanel.should_receive(:update_all).with(any_args).exactly(1) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.stub(:update_all).with(any_args) + ScrollPanel.should_receive(:update_all).with(any_args).exactly(1) ot = @item.t @item.t = 1 @item.higher_shift ot @@ -687,15 +649,16 @@ describe ScrollPanel do end context 'テーブルに2件(t:0,1)で0を1に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id @ot = @item.t @item.t = 1 end it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do #移動させたい行はそのまま残る @item.higher_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 0] end it '既存のt1を0にシフトしている' do @@ -706,16 +669,16 @@ describe ScrollPanel do end context 'テーブルに3件(t:0,1,2)で0を1に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel @ot = @item.t @item.t = 1 end it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do #移動させたい行はそのまま残る @item.higher_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 0, 2] end it '既存のt1を0にシフトしている' do @@ -726,18 +689,18 @@ describe ScrollPanel do end context 'テーブルに5件(t:0,1,2,3,4)で1を3に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item2.t @item2.t = 3 end it 'これから挿入するt(3)が欠番になっている' do #移動させたい行はそのまま残る @item2.higher_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 1, 1, 2, 4] end it '既存のt0には変化がない' do @@ -761,22 +724,22 @@ describe ScrollPanel do @item4.t.should eq 2 end end - context '先ほどのケース+他の用紙1件で挿入したとき' do + context '先ほどのケース+他のスクロール1件で挿入したとき' do before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @scroll2 = FactoryGirl.create :scroll, :author_id => @author.id + @itemc2 = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll2.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item2.t @item2.t = 3 end it 'これから挿入するt(3)が欠番になっている' do #移動させたい行はそのまま残る @item2.higher_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 0, 1, 1, 2, 4] end it '既存のt0には変化がない' do @@ -799,7 +762,7 @@ describe ScrollPanel do @item4.reload @item4.t.should eq 2 end - it '他の用紙に影響がない' do + it '他のスクロールに影響がない' do @item2.higher_shift @ot @itemc2.reload @itemc2.t.should eq 0 @@ -809,15 +772,16 @@ describe ScrollPanel do #max超えたときはmaxとして正常扱い context 'テーブルに2件(t:0,1)で0を2に移動したとき' do before do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id @ot = @item.t @item.t = 2 end it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do #移動させたい行はそのまま残る @item.higher_shift @ot - l = SheetPanel.find(:all).map {|s| s.t } + l = ScrollPanel.find(:all).map {|s| s.t } l.sort.should eq [0, 0] end it '既存のt1を0にシフトしている' do @@ -833,15 +797,16 @@ describe ScrollPanel do end describe '入れ替えに於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id end context '新tが旧tより小さいとき' do it '少ない方に移動を依頼している' do - SheetPanel.any_instance.stub(:lesser_shift).with(any_args) - SheetPanel.any_instance.should_receive(:lesser_shift).with(any_args).exactly(1) + ScrollPanel.any_instance.stub(:lesser_shift).with(any_args) + ScrollPanel.any_instance.should_receive(:lesser_shift).with(any_args).exactly(1) ot = @item2.t @item2.t = 0 @item2.update_shift ot @@ -849,8 +814,8 @@ describe ScrollPanel do end context '新tが旧tより大きいとき' do it '大きい方に移動を依頼している' do - SheetPanel.any_instance.stub(:higher_shift).with(any_args) - SheetPanel.any_instance.should_receive(:higher_shift).with(any_args).exactly(1) + ScrollPanel.any_instance.stub(:higher_shift).with(any_args) + ScrollPanel.any_instance.should_receive(:higher_shift).with(any_args).exactly(1) ot = @item.t @item.t = 1 @item.update_shift ot @@ -859,33 +824,36 @@ describe ScrollPanel do end describe '順序入れ替えに於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end context 'オブジェクトが新規でtが空のとき' do it '末尾追加としてtを補充依頼している' do - @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.stub(:new_t).with(any_args).and_return(0) - SheetPanel.should_receive(:new_t).with(any_args).exactly(1) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.build :scroll_panel, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.stub(:new_t).with(any_args).and_return(0) + ScrollPanel.should_receive(:new_t).with(any_args).exactly(1) @item.t = nil r = @item.rotate end end context 'オブジェクトが新規でtが設定されているとき' do it '挿入追加として挿入シフトを依頼している' do - @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.any_instance.stub(:insert_shift).with(any_args) - SheetPanel.any_instance.should_receive(:insert_shift).with(any_args).exactly(1) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.build :scroll_panel, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.any_instance.stub(:insert_shift).with(any_args) + ScrollPanel.any_instance.should_receive(:insert_shift).with(any_args).exactly(1) @item.t = 0 r = @item.rotate end end context 'オブジェクトが新規でなくtが設定されているとき' do it 'コマ移動として入れ替えを依頼している' do - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.any_instance.stub(:update_shift).with(any_args) - SheetPanel.any_instance.should_receive(:update_shift).with(1).exactly(1) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.any_instance.stub(:update_shift).with(any_args) + ScrollPanel.any_instance.should_receive(:update_shift).with(1).exactly(1) @item2.t = 0 r = @item.rotate 1 end @@ -898,216 +866,182 @@ describe ScrollPanel do end describe '保存に於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - @item = FactoryGirl.build :sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - end - context 'つつがなく終わるとき' do - it '編集許可チェックを依頼している' do - SheetPanel.any_instance.stub(:allow?).with(any_args).and_return(true) - SheetPanel.any_instance.should_receive(:allow?).with(any_args).exactly(1) - r = @item.store - end - it '順序入れ替えを依頼している' do - SheetPanel.any_instance.stub(:rotate).with(any_args).and_return(0) - SheetPanel.any_instance.should_receive(:rotate).with(any_args).exactly(1) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - r = @item.store - end - it '保存を依頼している' do - SheetPanel.stub(:new_t).with(any_args).and_return(0) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.any_instance.should_receive(:save).with(any_args).exactly(1) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - r = @item.store - end - it 'tのシリアライズチェックを依頼している' do - SheetPanel.stub(:new_t).with(any_args).and_return(0) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - SheetPanel.should_receive(:validate_t).with(any_args).exactly(1) - r = @item.store - end + @dummy_scroll = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @dummy_scroll_panels = @dummy_scroll.scroll_panels + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas end #入れ替えテストと同じテストを実施。こちらはシフトだけでなく本尊も更新されている - context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したとき' do + context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で2に挿入したとき' do before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel + @item6 = FactoryGirl.build :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel end it '既存のt0には変化がない' do @item6.store @item.reload - @item.t.should eq 0 + expect(@item.t).to eq 0 end it '既存のt1には変化がない' do @item6.store @item2.reload - @item2.t.should eq 1 + expect(@item2.t).to eq 1 end it '既存のt2を3にシフトしている' do @item6.store @item3.reload - @item3.t.should eq 3 + expect(@item3.t).to eq 3 end it '既存のt3を4にシフトしている' do @item6.store @item4.reload - @item4.t.should eq 4 + expect(@item4.t).to eq 4 end it '既存のt5を5にシフトしている' do @item6.store @item5.reload - @item5.t.should eq 5 + expect(@item5.t).to eq 5 end it '新規のt2が作成されている' do @item6.store @item6.reload - @item6.t.should eq 2 + expect(@item6.t).to eq 2 end - it '他の用紙に影響がない' do - @ot = @itemc2.t + it '他のスクロールに影響がない' do + @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]} @item6.store - @itemc2.reload - @itemc2.t.should eq @ot + @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]} + expect(@after_status).to eq @ot end end - context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で3を1に移動したとき' do + context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で3を1に移動したとき' do before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item4.t @item4.t = 1 end it '既存のt0には変化がない' do @item4.store @ot @item.reload - @item.t.should eq 0 + expect(@item.t).to eq 0 end it '既存のt4には変化がない' do @item4.store @ot @item5.reload - @item5.t.should eq 4 + expect(@item5.t).to eq 4 end it '既存のt1を2にシフトしている' do @item4.store @ot @item2.reload - @item2.t.should eq 2 + expect(@item2.t).to eq 2 end it '既存のt2を3にシフトしている' do @item4.store @ot @item3.reload - @item3.t.should eq 3 + expect(@item3.t).to eq 3 end it '既存のt3を1にシフトしている' do @item4.store @ot @item4.reload - @item4.t.should eq 1 + expect(@item4.t).to eq 1 end - it '他の用紙に影響がない' do + it '他のスクロールに影響がない' do + @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]} @item4.store @ot - @itemc2.reload - @itemc2.t.should eq 0 + @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]} + expect(@after_status).to eq @ot end end - context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で1を3に移動したとき' do + context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で1を3に移動したとき' do before do - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item2.t @item2.t = 3 end it '既存のt0には変化がない' do @item2.store @ot @item.reload - @item.t.should eq 0 + expect(@item.t).to eq 0 end it '既存のt4には変化がない' do @item2.store @ot @item5.reload - @item5.t.should eq 4 + expect(@item5.t).to eq 4 end it '既存のt1を3にシフトしている' do @item2.store @ot @item2.reload - @item2.t.should eq 3 + expect(@item2.t).to eq 3 end it '既存のt2を1にシフトしている' do @item2.store @ot @item3.reload - @item3.t.should eq 1 + expect(@item3.t).to eq 1 end it '既存のt3を2にシフトしている' do @item2.store @ot @item4.reload - @item4.t.should eq 2 + expect(@item4.t).to eq 2 end - it '他の用紙に影響がない' do + it '他のスクロールに影響がない' do + @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]} @item2.store @ot - @itemc2.reload - @itemc2.t.should eq 0 + @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]} + expect(@after_status).to eq @ot end end #ロールバックテスト。入れ替えが直接DBをいじるので、すべてのケースで確実にロールバックを確認する - context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したが保存に失敗したとき' do + context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で2に挿入したが保存に失敗したとき' do before do - SheetPanel.any_instance.stub(:save).with(any_args).and_return(false) - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.any_instance.stub(:save).with(any_args).and_return(false) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel + @item6 = FactoryGirl.build :scroll_panel, :t => 2, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id end it '既存のtに変化がない' do @item6.store @item.reload - @item.t.should eq 0 @item2.reload - @item2.t.should eq 1 @item3.reload - @item3.t.should eq 2 @item4.reload - @item4.t.should eq 3 @item5.reload - @item5.t.should eq 4 + expect(@item.t).to eq 0 + expect(@item2.t).to eq 1 + expect(@item3.t).to eq 2 + expect(@item4.t).to eq 3 + expect(@item5.t).to eq 4 + expect(@item.t).to eq 5 @itemc2.reload @itemc2.t.should eq 0 end it 'falseを返す' do r = @item6.store - r.should be_false + expect(r).to be_false end end - context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で3を1に移動したがシリアルチェックに失敗したとき' do + context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で3を1に移動したがシリアルチェックに失敗したとき' do before do - SheetPanel.stub(:validate_t).with(any_args).and_return(false) - @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id - @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + ScrollPanel.stub(:validate_t).with(any_args).and_return(false) + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel @ot = @item4.t @item4.t = 1 end @@ -1125,149 +1059,144 @@ describe ScrollPanel do @item5.t.should eq 4 @itemc2.reload @itemc2.t.should eq 0 + expect(@item.t).to eq 0 + expect(@item.t).to eq 0 + expect(@item.t).to eq 0 + expect(@item.t).to eq 0 + expect(@item.t).to eq 0 + expect(@item.t).to eq 0 end it 'falseを返す' do r = @item4.store @ot - r.should be_false + expect(r).to be_false end it 'tにエラーメッセージが入っている' do @item4.store @ot - @item4.errors[:t].should_not be_empty - @item4.valid?.should be_true - end - end - context '編集不可だったとき' do - before do - @item = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - SheetPanel.any_instance.stub(:allow?).and_return(false) - end - it '403Forbidden例外を返す' do - lambda{ - @item.store - }.should raise_error(ActiveRecord::Forbidden) + expect(@item4.errors[:t]).to be_empty + expect(@item4.valid?).to be_true end end end describe '切り詰め処理つき削除に於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel end context 'つつがなく終わるとき' do it '削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it 'Trueを返す' do r = @item.destroy_and_shorten - r.should be_true + expect(r).to be_true end end context '削除に失敗したとき' do before do - SheetPanel.any_instance.stub(:destroy).and_return(false) + ScrollPanel.any_instance.stub(:destroy).and_return(false) end it 'ロールバックされる' do - lambda{ + expect { @item.destroy_and_shorten - }.should_not change(SheetPanel, :count ) + }.to change(ScrollPanel, :count ) end it 'Falseを返す' do r = @item.destroy_and_shorten - r.should be_false + expect(r).to be_false end end #連携テスト。切り詰めが直接DBをいじる context '2件で先頭を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '先頭は削除される' do @item.destroy_and_shorten - lambda{ - SheetPanel.find @item.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '2件目は前に詰められる' do @item.destroy_and_shorten @item2.reload - @item2.t.should eq 0 + expect(@item2.t).to eq 0 end end context '3件で先頭を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '先頭は削除される' do @item.destroy_and_shorten - lambda{ - SheetPanel.find @item.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '2件目は前に詰められる' do @item.destroy_and_shorten @item2.reload - @item2.t.should eq 0 + expect(@item2.t).to eq 0 end it '3件目は前に詰められる' do @item.destroy_and_shorten @item3.reload - @item3.t.should eq 1 + expect(@item3.t).to eq 1 end end context '5件で3件目を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item3.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '1件目は変化がない' do @item3.destroy_and_shorten @item.reload - @item.t.should eq 0 + expect(@item.t).to eq 0 end it '2件目は変化がない' do @item3.destroy_and_shorten @item2.reload - @item2.t.should eq 1 + expect(@item2.t).to eq 1 end it '3件目は削除される' do @item3.destroy_and_shorten - lambda{ - SheetPanel.find @item3.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item3.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '4件目は前に詰められる' do @item3.destroy_and_shorten @item4.reload - @item4.t.should eq 2 + expect(@item4.t).to eq 2 end it '5件目は前に詰められる' do @item3.destroy_and_shorten @item5.reload - @item5.t.should eq 3 + expect(@item5.t).to eq 3 end end #ロールバックテスト。切り詰めが直接DBをいじるので、すべてのケースで確実にロールバックを確認する end end - diff --git a/spec/peta/root_spec.rb b/spec/peta/root_spec.rb index 6a974b6b..54b68bd5 100644 --- a/spec/peta/root_spec.rb +++ b/spec/peta/root_spec.rb @@ -23,7 +23,7 @@ describe Sheet do @item = FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas end - it 'ブーストメッセージをリーフに伝搬する' do + it 'コピーしてほしくないカラムを取り除いている' do end end @@ -46,149 +46,101 @@ describe Panel do end end -# -describe ScrollPanel do - include LeafMacros +# I/O処理については、マニフェストで動作が変わることがないのでコマでのみテストしておく +describe Panel do + include RootMacros before do @admin =FactoryGirl.create :admin @user_yas = FactoryGirl.create :user_yas_with_owner @user_rom = FactoryGirl.create :user_rom @author_yas = @user_yas.author - @model = ScrollPanel + @model = Panel end - describe 'new_tに於いて' do + describe 'エレメント取得parts_elementに於いて' do before do - @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @item = FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas end - context 'オーソドックスなデータのとき' do - it 'cut' do - expect(@model.new_t(@scroll.id)).to eq 0 - end - + it '順番にかかわらずぶら下がるエレメントすべてをリストで取得してくる' do + end + end + + describe '重ね合わせ順のエレメント取得zorderd_elementsに於いて' do + before do + @item = FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas end - context 'オーソドックスなデータのとき' do - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - expect(@model.new_t(@scroll.id)).to eq 1 - end - - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel - expect(@model.new_t(@scroll.id)).to eq 3 - end - + it 'エレメントをすべてリストで取得してくる' do + end + end + + describe '重ね合わせ順のエレメント取得scenario_elementsに於いて' do + before do + @item = FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas end + it 'エレメントをすべてリストで取得してくる' do + end end - describe 'collect_tに於いて' do + describe 'new_tに於いて' do before do - @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas @scroll = FactoryGirl.create :scroll_hello, author: @author_yas end - context 'オーソドックスなデータのとき' do - it 'cut' do - expect(@model.collect_t(@scroll.id)).to be_empty - end - + it 'オフセットはゼロなのでエレメントの総数と一致する' do + expect(@model.new_t(@scroll.id)).to eq 0 end - context 'オーソドックスなデータのとき' do - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - expect(@model.collect_t(@scroll.id)).to eq [0] - end - - it 'cut' do - @item = FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel - @item = FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel - expect(@model.collect_t(@scroll.id)).to eq [0, 1, 2] - end - + end + + describe 'collect_tに於いて' do + before do + @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas end + it 'オフセットは1なのでエレメントの総数+1と一致する' do + expect(@model.collect_t(@scroll.id)).to be_empty + end end - describe 'tチェックに於いて' do + describe 'validate_childに於いて' do before do @sheet = FactoryGirl.create :sheet, :author_id => @author.id @panel = FactoryGirl.create :panel, :author_id => @author.id @item = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id end - context 'つつがなく終わるとき' do - it 't収集を依頼している' do - SheetPanel.should_receive(:collect_t).with(any_args).exactly(1) - SheetPanel.stub(:collect_t).with(any_args).and_return([]) - SheetPanel.stub(:serial?).with(any_args).and_return(true) - r = SheetPanel.validate_t @item - end - it '収集したtをシリアライズチェック依頼している' do - SheetPanel.stub(:collect_t).with(any_args).and_return([]) - SheetPanel.should_receive(:serial?).with(any_args).exactly(1) - SheetPanel.stub(:serial?).with(any_args).and_return(true) + #実データで最低限のチェックを + context '正常のとき' do + it '真を返している' do + @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0 r = SheetPanel.validate_t @item + r.should be_true end end - #実データでチェック - #依頼チェックだけでは不安なので最低限のチェックを - context '新規のとき' do - it '一件だけで正常通過している' do - @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0 - r = SheetPanel.validate_t @item + context '重ね合わせ順が壊れているとき' do + it '偽を返している' do + r = SheetPanel.validate_t @item2 r.should be_true end end - context '既存のとき' do - it '2件目を作っても正常通過している' do - @item = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0 - @item2 = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 1 + context 'シナリオ順が壊れているとき' do + it '偽を返している' do r = SheetPanel.validate_t @item2 r.should be_true end end end + describe '保存に於いて' do before do @sheet = FactoryGirl.create :sheet, :author_id => @author.id @panel = FactoryGirl.create :panel, :author_id => @author.id @item = FactoryGirl.build :sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id end - context 'つつがなく終わるとき' do - it '編集許可チェックを依頼している' do - SheetPanel.any_instance.stub(:allow?).with(any_args).and_return(true) - SheetPanel.any_instance.should_receive(:allow?).with(any_args).exactly(1) - r = @item.store - end - it '順序入れ替えを依頼している' do - SheetPanel.any_instance.stub(:rotate).with(any_args).and_return(0) - SheetPanel.any_instance.should_receive(:rotate).with(any_args).exactly(1) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - r = @item.store - end - it '保存を依頼している' do - SheetPanel.stub(:new_t).with(any_args).and_return(0) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.any_instance.should_receive(:save).with(any_args).exactly(1) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - r = @item.store - end - it 'tのシリアライズチェックを依頼している' do - SheetPanel.stub(:new_t).with(any_args).and_return(0) - SheetPanel.any_instance.stub(:save).with(any_args).and_return(true) - SheetPanel.stub(:validate_t).with(any_args).and_return(true) - SheetPanel.should_receive(:validate_t).with(any_args).exactly(1) - r = @item.store - end - end #入れ替えテストと同じテストを実施。こちらはシフトだけでなく本尊も更新されている context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したとき' do before do @@ -409,121 +361,122 @@ describe ScrollPanel do end describe '切り詰め処理つき削除に於いて' do before do - @sheet = FactoryGirl.create :sheet, :author_id => @author.id - @panel = FactoryGirl.create :panel, :author_id => @author.id - @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @dummy = FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas + @scroll = FactoryGirl.create :scroll_hello, author: @author_yas + @panel = FactoryGirl.create :panel_hello, author: @author_yas + @item = FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel end context 'つつがなく終わるとき' do it '削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it 'Trueを返す' do r = @item.destroy_and_shorten - r.should be_true + expect(r).to be_true end end context '削除に失敗したとき' do before do - SheetPanel.any_instance.stub(:destroy).and_return(false) + ScrollPanel.any_instance.stub(:destroy).and_return(false) end it 'ロールバックされる' do - lambda{ + expect { @item.destroy_and_shorten - }.should_not change(SheetPanel, :count ) + }.to change(ScrollPanel, :count ) end it 'Falseを返す' do r = @item.destroy_and_shorten - r.should be_false + expect(r).to be_false end end #連携テスト。切り詰めが直接DBをいじる context '2件で先頭を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '先頭は削除される' do @item.destroy_and_shorten - lambda{ - SheetPanel.find @item.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '2件目は前に詰められる' do @item.destroy_and_shorten @item2.reload - @item2.t.should eq 0 + expect(@item2.t).to eq 0 end end context '3件で先頭を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '先頭は削除される' do @item.destroy_and_shorten - lambda{ - SheetPanel.find @item.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '2件目は前に詰められる' do @item.destroy_and_shorten @item2.reload - @item2.t.should eq 0 + expect(@item2.t).to eq 0 end it '3件目は前に詰められる' do @item.destroy_and_shorten @item3.reload - @item3.t.should eq 1 + expect(@item3.t).to eq 1 end end context '5件で3件目を削除したとき' do before do - @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id - @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id + @item2 = FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel + @item3 = FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel + @item4 = FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel + @item5 = FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel end it '行が削除される' do - lambda{ + expect { @item3.destroy_and_shorten - }.should change(SheetPanel, :count ).by(-1) + }.to change(ScrollPanel, :count ).by(-1) end it '1件目は変化がない' do @item3.destroy_and_shorten @item.reload - @item.t.should eq 0 + expect(@item.t).to eq 0 end it '2件目は変化がない' do @item3.destroy_and_shorten @item2.reload - @item2.t.should eq 1 + expect(@item2.t).to eq 1 end it '3件目は削除される' do @item3.destroy_and_shorten - lambda{ - SheetPanel.find @item3.id - }.should raise_error(ActiveRecord::RecordNotFound) + expect { + ScrollPanel.find @item3.id + }.to raise_error(ActiveRecord::RecordNotFound) end it '4件目は前に詰められる' do @item3.destroy_and_shorten @item4.reload - @item4.t.should eq 2 + expect(@item4.t).to eq 2 end it '5件目は前に詰められる' do @item3.destroy_and_shorten @item5.reload - @item5.t.should eq 3 + expect(@item5.t).to eq 3 end end #ロールバックテスト。切り詰めが直接DBをいじるので、すべてのケースで確実にロールバックを確認する diff --git a/spec/peta/template_spec.rb b/spec/peta/template_spec.rb index 9ec76e4c..b0be3938 100644 --- a/spec/peta/template_spec.rb +++ b/spec/peta/template_spec.rb @@ -26,16 +26,16 @@ describe SpeechBalloonTemplate do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートをリストで返している' do expect(SpeechBalloonTemplate.enable_list).to_not be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートが無効ならリストは空になっている' do allow_any_instance_of(SpeechBalloonTemplate).to receive(:enable?).and_return(false) expect(SpeechBalloonTemplate.enable_list).to be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it '実データでテストしてみる' do allow(@circle).to receive(:enable?).and_return(false) expect(SpeechBalloonTemplate.enable_list.size).to eq 3 end @@ -46,16 +46,16 @@ describe SpeechBalloonTemplate do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートのマニフェストが設定されていないときは偽を返す' do allow(SpeechBalloonTemplate).to receive(:template_manifest).and_return(nil) expect(@circle.enable?).to be false end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートであれば真を返す' do expect(@circle.enable?).to be true end - it 'ブーストメッセージをリーフに伝搬する' do + it '無効なテンプレートの時は偽を返す' do expect(@test.enable?).to be false end end @@ -64,7 +64,7 @@ describe SpeechBalloonTemplate do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのモジュールを返している' do expect(@circle.template_module).to eq CircleSpeechBalloon expect(@square.template_module).to eq SquareSpeechBalloon end @@ -74,7 +74,7 @@ describe SpeechBalloonTemplate do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのパスネームを返している' do expect(@circle.template_path_name).to eq 'circle_speech_balloon' expect(@square.template_path_name).to eq 'square_speech_balloon' end @@ -105,16 +105,16 @@ describe LicenseGroup do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートをリストで返している' do expect(LicenseGroup.enable_list).to_not be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートが無効ならリストは空になっている' do allow_any_instance_of(LicenseGroup).to receive(:enable?).and_return(false) expect(LicenseGroup.enable_list).to be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it '実データでテストしてみる' do expect(LicenseGroup.enable_list.size).to eq 2 end @@ -124,16 +124,16 @@ describe LicenseGroup do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートのマニフェストが設定されていないときは偽を返す' do allow(LicenseGroup).to receive(:template_manifest).and_return(nil) expect(@cc.enable?).to be false end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートであれば真を返す' do expect(@cc.enable?).to be true end - it 'ブーストメッセージをリーフに伝搬する' do + it '無効なテンプレートの時は偽を返す' do expect(@test.enable?).to be false end end @@ -142,7 +142,7 @@ describe LicenseGroup do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのモジュールを返している' do expect(@cc.template_module).to eq PettanrCreativeCommonsV30Licenses expect(@pc.template_module).to eq PettanrPettanCommonsV01Licenses end @@ -152,7 +152,7 @@ describe LicenseGroup do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのパスネームを返している' do expect(@cc.template_path_name).to eq 'pettanr_creative_commons_v30_licenses' expect(@pc.template_path_name).to eq 'pettanr_pettan_commons_v01_licenses' end @@ -182,18 +182,18 @@ describe WritingFormat do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートをリストで返している' do expect(WritingFormat.enable_list).to_not be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートが無効ならリストは空になっている' do allow_any_instance_of(WritingFormat).to receive(:enable?).and_return(false) expect(SpeechBalloonTemplate.enable_list).to be_empty end - it 'ブーストメッセージをリーフに伝搬する' do + it '実データでテストしてみる' do allow(@simple).to receive(:enable?).and_return(false) - expect(WritingFormat.enable_list.size).to eq 2 + expect(WritingFormat.enable_list.size).to eq 1 end end @@ -202,17 +202,16 @@ describe WritingFormat do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'テンプレートのマニフェストが設定されていないときは偽を返す' do allow(WritingFormat).to receive(:template_manifest).and_return(nil) expect(@simple.enable?).to be false end - it 'ブーストメッセージをリーフに伝搬する' do + it '有効なテンプレートであれば真を返す' do expect(@simple.enable?).to be true end - it 'ブーストメッセージをリーフに伝搬する' do - allow_any_instance_of(WritingFormat).to receive(:module_name).and_return('excluded') + it '無効なテンプレートの時は偽を返す' do expect(@test.enable?).to be false end end @@ -221,7 +220,7 @@ describe WritingFormat do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのモジュールを返している' do expect(@simple.template_module).to eq PettanrSimpleFormat end end @@ -230,7 +229,7 @@ describe WritingFormat do before do end - it 'ブーストメッセージをリーフに伝搬する' do + it 'それぞれのパスネームを返している' do expect(@simple.template_path_name).to eq 'pettanr_simple_format' end end -- 2.11.0