X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=spec%2Fmanifests%2Fstory_spec.rb;fp=spec%2Fmanifests%2Fstory_spec.rb;h=1a29849549e9d29f9b989ba2903800012b0cfc74;hp=0000000000000000000000000000000000000000;hb=65cd4fb912cd3ecd5772dc8581429c44550c941a;hpb=f5768a1a49a74e5652a493a0a586b0af23da1b5a diff --git a/spec/manifests/story_spec.rb b/spec/manifests/story_spec.rb new file mode 100644 index 00000000..1a298495 --- /dev/null +++ b/spec/manifests/story_spec.rb @@ -0,0 +1,374 @@ +# -*- encoding: utf-8 -*- +require 'spec_helper' +#ストーリー + +describe Story do + include ManifestsMacros + before do + @model = Story + end + + describe 'ペタナイズに於いて' do + it 'スト紙を閉じるためのバインダーである' do + expect(@model.ancestors.include?(Peta::Binder)).to eq true + end + it '親モデルは持たない' do + expect(@model.my_peta.parent_model_name).to be_blank + end + describe 'ブーストに於いて' do + it '特筆すべき注意事項はない' do + expect(@model.my_peta.boost.keys).to be_empty + end + end + + end + + describe 'コントローラに於いて' do + before do + @controller = @model.my_controller + end + it 'ストーリーのためのコントローラである' do + expect(@model.item_name).to eq 'story' + end + describe 'actionに於いて' do + before do + @actions = @controller.actions + @actions_names = ['index', 'by_author', 'by_comic', 'by_sheet', 'play', 'show', + 'count', 'count_by_author', 'count_by_comic', 'count_by_sheet', + 'new', 'edit', 'create', 'update', 'destroy'] + end + it 'これらのアクションが定義されている' do + set_actions? @actions, @actions_names + end + describe 'baseに於いて' do + end + describe 'indexに於いて' do + before do + @action = @actions['index'] + end + it 'listタイプのアクションである' do + expect(@action.type).to eq 'list' + end + it 'マニフェストから設定を取り出している' do + # ストーリーの公開リストを返すように定義している + set_list_action? @action, 'story', 'public' + end + end + describe 'by_authorに於いて' do + before do + @action = @actions['by_author'] + end + it 'listタイプのアクションである' do + expect(@action.type).to eq 'list' + end + it 'マニフェストから設定を取り出している' do + # ストーリーの作家フィルタリストを返すように定義している + set_list_action? @action, 'story', 'by_author' + end + end + describe 'by_comicに於いて' do + before do + @action = @actions['by_comic'] + end + it 'listタイプのアクションである' do + expect(@action.type).to eq 'list' + end + it 'マニフェストから設定を取り出している' do + #ストーリーのコマフィルタリストを返すように定義している + set_list_action? @action, 'story', 'by_comic' + end + end + describe 'by_sheetに於いて' do + before do + @action = @actions['by_sheet'] + end + it 'listタイプのアクションである' do + expect(@action.type).to eq 'list' + end + it 'マニフェストから設定を取り出している' do + #ストーリーのコマフィルタリストを返すように定義している + set_list_action? @action, 'story', 'by_sheet' + end + end + describe 'showに於いて' do + before do + @action = @actions['show'] + end + it 'showタイプのアクションである' do + expect(@action.type).to eq 'show' + end + end + describe 'countに於いて' do + before do + @action = @actions['count'] + end + it 'countタイプのアクションである' do + expect(@action.type).to eq 'count' + end + it 'マニフェストから設定を取り出している' do + #ストーリーの公開リストのカウントを返すように定義している + set_list_action? @action, 'story', 'public' + end + end + describe 'count_by_authorに於いて' do + before do + @action = @actions['count_by_author'] + end + it 'countタイプのアクションである' do + expect(@action.type).to eq 'count' + end + it 'マニフェストから設定を取り出している' do + # ストーリーの作家フィルタリストのカウントを返すように定義している + set_list_action? @action, 'story', 'by_author' + end + end + describe 'count_by_comicに於いて' do + before do + @action = @actions['count_by_comic'] + end + it 'countタイプのアクションである' do + expect(@action.type).to eq 'count' + end + it 'マニフェストから設定を取り出している' do + # ストーリーのコマフィルタリストのカウントを返すように定義している + set_list_action? @action, 'story', 'by_comic' + end + end + describe 'count_by_sheetに於いて' do + before do + @action = @actions['count_by_sheet'] + end + it 'countタイプのアクションである' do + expect(@action.type).to eq 'count' + end + it 'マニフェストから設定を取り出している' do + # ストーリーのコマフィルタリストのカウントを返すように定義している + set_list_action? @action, 'story', 'by_sheet' + end + end + describe 'newに於いて' do + before do + @action = @actions['new'] + end + it 'newタイプのアクションである' do + expect(@action.type).to eq 'new' + end + it 'type' do + expect(@action.item_name).to eq 'story' + end + end + describe 'editに於いて' do + before do + @action = @actions['edit'] + end + it 'editタイプのアクションである' do + expect(@action.type).to eq 'edit' + end + it 'type' do + expect(@action.item_name).to eq 'story' + end + end + describe 'createに於いて' do + before do + @action = @actions['create'] + end + it 'createタイプのアクションである' do + expect(@action.type).to eq 'create' + end + it 'type' do + expect(@action.item_name).to eq 'story' + end + end + describe 'updateに於いて' do + before do + @action = @actions['update'] + end + it 'updateタイプのアクションである' do + expect(@action.type).to eq 'update' + end + it 'type' do + expect(@action.item_name).to eq 'story' + end + end + describe 'destroyに於いて' do + before do + @action = @actions['destroy'] + end + it 'destroyタイプのアクションである' do + expect(@action.type).to eq 'destroy' + end + it 'type' do + expect(@action.item_name).to eq 'story' + end + end + end + + end + + describe 'モデルに於いて' do + before do + @my_manifest = @model.my_manifest + end + it 'サポート機能が動作している' do + expect(@my_manifest.model_name).to eq 'story' + expect(@my_manifest.classify).to eq @model + expect(@my_manifest.table_name).to eq 'stories' + end + + describe 'associationsに於いて' do + describe 'belongs_toに於いて' do + before do + @belongs_to = @my_manifest.associations.belongs_to + @names = ['author'] + end + it 'これらのモデルに所属している' do + set_associations? @belongs_to, @names + end + describe 'authorに於いて' do + before do + @mani = @belongs_to['author'] + end + it 'マニフェストから設定を取り出している' do + # モデル名と外部キーが定義あるいはデフォルト値補充されている + expect(@mani.model_name).to eq 'author' + expect(@mani.id_column).to eq 'author_id' + end + it 'サポート機能が動作している' do + # モデルを再現できている + expect(@mani.model).to eq Author + end + end + end + describe 'has_manyに於いて' do + before do + @has_many = @model.my_manifest.associations.has_many + @names = ['comic_stories', 'comics', 'comic_stories', 'comics'] + end + it 'これらのモデルを所持している' do + set_associations? @has_many, @names + end + describe 'comic_storiesに於いて' do + before do + @mani = @has_many['comic_stories'] + end + it 'マニフェストから設定を取り出している' do + # モデル名, 外部キーと中間モデルが定義あるいはデフォルト値補充されている + expect(@mani.model_name).to eq 'comic_story' + expect(@mani.foreign_key).to eq 'story_id' + expect(@mani.through).to be nil + end + it 'サポート機能が動作している' do + # モデルを再現できている, 中間モデルフラグ + expect(@mani.through?).to be false + expect(@mani.model).to eq ComicStory + end + end + describe 'comicsに於いて' do + before do + @mani = @has_many['comics'] + end + it 'マニフェストから設定を取り出している' do + # モデル名, 外部キーと中間モデルが定義あるいはデフォルト値補充されている + expect(@mani.model_name).to eq 'comic' + expect(@mani.foreign_key).to eq 'story_id' + expect(@mani.through).to eq 'comic_stories' + end + it 'サポート機能が動作している' do + # モデルを再現できている, 中間モデルフラグ + expect(@mani.through?).to be true + expect(@mani.model).to eq Comic + end + end + describe 'story_sheetsに於いて' do + before do + @mani = @has_many['story_sheets'] + end + it 'マニフェストから設定を取り出している' do + # モデル名, 外部キーと中間モデルが定義あるいはデフォルト値補充されている + expect(@mani.model_name).to eq 'story_sheet' + expect(@mani.foreign_key).to eq 'story_id' + expect(@mani.through).to be nil + end + it 'サポート機能が動作している' do + # モデルを再現できている, 中間モデルフラグ + expect(@mani.through?).to be false + expect(@mani.model).to eq StorySheet + end + end + describe 'sheetsに於いて' do + before do + @mani = @has_many['sheets'] + end + it 'マニフェストから設定を取り出している' do + # モデル名, 外部キーと中間モデルが定義あるいはデフォルト値補充されている + expect(@mani.model_name).to eq 'sheet' + expect(@mani.foreign_key).to eq 'story_id' + expect(@mani.through).to eq 'story_sheets' + end + it 'サポート機能が動作している' do + # モデルを再現できている, 中間モデルフラグ + expect(@mani.through?).to be true + expect(@mani.model).to eq Sheet + end + end + end + end + + describe 'attributesに於いて' do + before do + @attributes = @model.my_manifest.attributes + end + it 'これらのカラムを定義している' do + set_attributes? @attributes, + ['id', 'title', 'description', 'visible', 't', 'author_id', + 'created_at', 'updated_at'] + end + describe 'titleに於いて' do + before do + @attribute = @attributes['title'] + end + it 'textタイプである' do + expect(@attribute.type).to eq 'text' + end + end + describe 'descriptionに於いて' do + before do + @attribute = @attributes['description'] + end + it 'textタイプである' do + expect(@attribute.type).to eq 'text' + end + end + describe 'tに於いて' do + before do + @attribute = @attributes['t'] + end + it 'numberタイプである' do + expect(@attribute.type).to eq 'number' + end + end + describe 'visibleに於いて' do + before do + @attribute = @attributes['visible'] + end + it 'numberタイプである' do + expect(@attribute.type).to eq 'number' + end + it '選択肢を定数から取得できるように定義している' do + expect(@attribute.source.type).to eq 'magic_number' + expect(@attribute.source.select_item_name).to eq 'story_visible_items' + end + end + describe 'author_idに於いて' do + before do + @attribute = @attributes['author_id'] + end + it 'numberタイプである' do + expect(@attribute.type).to eq 'number' + end + end + end + + end + +end