banner_lite 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -0
  3. data/app/controllers/banner_lite/{banners_controller.rb → image_banners_controller.rb} +9 -9
  4. data/app/controllers/banner_lite/text_banners_controller.rb +53 -0
  5. data/app/helpers/banner_lite/{banners_helper.rb → image_banners_helper.rb} +3 -3
  6. data/app/helpers/banner_lite/text_banners_helper.rb +12 -0
  7. data/app/models/banner_lite/banner.rb +0 -29
  8. data/app/models/banner_lite/image_banner.rb +32 -0
  9. data/app/models/banner_lite/text_banner.rb +5 -0
  10. data/app/views/banner_lite/{banners → image_banners}/_form.html.erb +0 -0
  11. data/app/views/banner_lite/{banners → image_banners}/edit.html.erb +1 -1
  12. data/app/views/banner_lite/{banners → image_banners}/index.html.erb +2 -2
  13. data/app/views/banner_lite/{banners → image_banners}/new.html.erb +1 -1
  14. data/app/views/banner_lite/image_banners/preview.html.erb +1 -0
  15. data/app/views/banner_lite/{banners → image_banners}/show.html.erb +2 -2
  16. data/app/views/banner_lite/text_banners/_form.html.erb +33 -0
  17. data/app/views/banner_lite/text_banners/edit.html.erb +6 -0
  18. data/app/views/banner_lite/text_banners/index.html.erb +31 -0
  19. data/app/views/banner_lite/text_banners/new.html.erb +5 -0
  20. data/app/views/banner_lite/text_banners/preview.html.erb +1 -0
  21. data/app/views/banner_lite/text_banners/show.html.erb +24 -0
  22. data/config/routes.rb +6 -1
  23. data/db/migrate/20140901033058_add_banner_text_to_banner_lite_banners.rb +13 -0
  24. data/lib/banner_lite/engine.rb +2 -1
  25. data/lib/banner_lite/version.rb +1 -1
  26. data/spec/controllers/banner_lite/image_banners_controller_spec.rb +141 -0
  27. data/spec/controllers/banner_lite/text_banners_controller_spec.rb +138 -0
  28. data/spec/factories/image_banners.rb +8 -0
  29. data/spec/factories/text_banners.rb +8 -0
  30. data/spec/features/image_banners_spec.rb +18 -0
  31. data/spec/fixtures/files/dummy.png +0 -0
  32. data/spec/helpers/banner_lite/image_banners_helper_spec.rb +6 -0
  33. data/spec/helpers/banner_lite/text_banners_helper_spec.rb +6 -0
  34. data/spec/models/banner_lite/image_banner_spec.rb +15 -0
  35. data/spec/models/banner_lite/text_banner_spec.rb +15 -0
  36. data/spec/spec_helper.rb +50 -0
  37. data/spec/test_app/README.rdoc +28 -0
  38. data/spec/test_app/Rakefile +6 -0
  39. data/spec/test_app/app/assets/javascripts/application.js +13 -0
  40. data/spec/test_app/app/assets/stylesheets/application.css +15 -0
  41. data/spec/test_app/app/controllers/application_controller.rb +5 -0
  42. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  43. data/spec/test_app/app/views/layouts/application.html.erb +14 -0
  44. data/spec/test_app/bin/bundle +3 -0
  45. data/spec/test_app/bin/rails +4 -0
  46. data/spec/test_app/bin/rake +4 -0
  47. data/spec/test_app/config/application.rb +29 -0
  48. data/spec/test_app/config/boot.rb +5 -0
  49. data/spec/test_app/config/database.yml +25 -0
  50. data/spec/test_app/config/environment.rb +5 -0
  51. data/spec/test_app/config/environments/development.rb +29 -0
  52. data/spec/test_app/config/environments/production.rb +80 -0
  53. data/spec/test_app/config/environments/test.rb +36 -0
  54. data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
  55. data/spec/test_app/config/initializers/filter_parameter_logging.rb +4 -0
  56. data/spec/test_app/config/initializers/inflections.rb +16 -0
  57. data/spec/test_app/config/initializers/mime_types.rb +5 -0
  58. data/spec/test_app/config/initializers/session_store.rb +3 -0
  59. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  60. data/spec/test_app/config/locales/en.yml +23 -0
  61. data/spec/test_app/config/routes.rb +4 -0
  62. data/spec/test_app/config/secrets.yml +20 -0
  63. data/spec/test_app/config.ru +4 -0
  64. data/spec/test_app/db/development.sqlite3 +0 -0
  65. data/spec/test_app/db/schema.rb +25 -0
  66. data/spec/test_app/db/test.sqlite3 +0 -0
  67. data/spec/test_app/log/development.log +2022 -0
  68. data/spec/test_app/log/test.log +2944 -0
  69. data/spec/test_app/public/404.html +67 -0
  70. data/spec/test_app/public/422.html +67 -0
  71. data/spec/test_app/public/500.html +66 -0
  72. data/spec/test_app/public/favicon.ico +0 -0
  73. data/spec/test_app/spec/fixtures/files/image.png +0 -0
  74. data/spec/test_app/tmp/cache/assets/development/sprockets/003a38e9fd7ca25c13cedf53bf372ae6 +0 -0
  75. data/spec/test_app/tmp/cache/assets/development/sprockets/03ac7af390932302330c5edf40f1a0c4 +0 -0
  76. data/spec/test_app/tmp/cache/assets/development/sprockets/04407df44edd603d47fc64d43aba1105 +0 -0
  77. data/spec/test_app/tmp/cache/assets/development/sprockets/10a0a05683e0182480089f585e73d994 +0 -0
  78. data/spec/test_app/tmp/cache/assets/development/sprockets/168e239e81a66290e62ea7b88ae0a6f0 +0 -0
  79. data/spec/test_app/tmp/cache/assets/development/sprockets/5c7aaccf5c3cfe31473143cad225e0a3 +0 -0
  80. data/spec/test_app/tmp/cache/assets/development/sprockets/63b2a7b060b4143f09c1f65fa4d05cec +0 -0
  81. data/spec/test_app/tmp/cache/assets/development/sprockets/6b6316f40abcc8e662f825828fb86a60 +0 -0
  82. data/spec/test_app/tmp/cache/assets/development/sprockets/6e59c9d94357e0bad4932c0d6e08aae4 +0 -0
  83. data/spec/test_app/tmp/cache/assets/development/sprockets/8473b4217b725147b48cc7c35a5613f1 +0 -0
  84. data/spec/test_app/tmp/cache/assets/development/sprockets/9a37adb41b90d5a705ad5ac5b36908a5 +0 -0
  85. data/spec/test_app/tmp/cache/assets/development/sprockets/a282da187ba14975a311bdee34282b68 +0 -0
  86. data/spec/test_app/tmp/cache/assets/development/sprockets/b140558c17c5a6a0b4d0db1aa9eec7d9 +0 -0
  87. data/spec/test_app/tmp/cache/assets/development/sprockets/bd2620ba816de25a2d516af4f4d3d9fa +0 -0
  88. data/spec/test_app/tmp/cache/assets/development/sprockets/bd7f920a6fb16d903905510c1b54ac58 +0 -0
  89. data/spec/test_app/tmp/cache/assets/development/sprockets/dad42ce6da98af2bb068880ecf0c4e3b +0 -0
  90. data/spec/test_app/tmp/cache/assets/development/sprockets/f1ea951eed23da8d08839fed76489094 +0 -0
  91. data/spec/test_app/tmp/cache/assets/development/sprockets/f8d343216bb921b4b9f3ff80a279ade1 +0 -0
  92. data/spec/test_app/tmp/cache/assets/test/sprockets/003a38e9fd7ca25c13cedf53bf372ae6 +0 -0
  93. data/spec/test_app/tmp/cache/assets/test/sprockets/03ac7af390932302330c5edf40f1a0c4 +0 -0
  94. data/spec/test_app/tmp/cache/assets/test/sprockets/04407df44edd603d47fc64d43aba1105 +0 -0
  95. data/spec/test_app/tmp/cache/assets/test/sprockets/10a0a05683e0182480089f585e73d994 +0 -0
  96. data/spec/test_app/tmp/cache/assets/test/sprockets/168e239e81a66290e62ea7b88ae0a6f0 +0 -0
  97. data/spec/test_app/tmp/cache/assets/test/sprockets/28d0637a096857502bb280f6159054d5 +0 -0
  98. data/spec/test_app/tmp/cache/assets/test/sprockets/3061646d05a58b102019803c24a45bfb +0 -0
  99. data/spec/test_app/tmp/cache/assets/test/sprockets/3bf4f025073a083e355b74670ab85dad +0 -0
  100. data/spec/test_app/tmp/cache/assets/test/sprockets/5c7aaccf5c3cfe31473143cad225e0a3 +0 -0
  101. data/spec/test_app/tmp/cache/assets/test/sprockets/63b2a7b060b4143f09c1f65fa4d05cec +0 -0
  102. data/spec/test_app/tmp/cache/assets/test/sprockets/6b6316f40abcc8e662f825828fb86a60 +0 -0
  103. data/spec/test_app/tmp/cache/assets/test/sprockets/6e59c9d94357e0bad4932c0d6e08aae4 +0 -0
  104. data/spec/test_app/tmp/cache/assets/test/sprockets/8473b4217b725147b48cc7c35a5613f1 +0 -0
  105. data/spec/test_app/tmp/cache/assets/test/sprockets/9a37adb41b90d5a705ad5ac5b36908a5 +0 -0
  106. data/spec/test_app/tmp/cache/assets/test/sprockets/a282da187ba14975a311bdee34282b68 +0 -0
  107. data/spec/test_app/tmp/cache/assets/test/sprockets/bd7f920a6fb16d903905510c1b54ac58 +0 -0
  108. data/spec/test_app/tmp/cache/assets/test/sprockets/dad42ce6da98af2bb068880ecf0c4e3b +0 -0
  109. data/spec/test_app/tmp/cache/assets/test/sprockets/e1fd1402695e7f441a0b016d610e5a01 +0 -0
  110. data/spec/test_app/tmp/cache/assets/test/sprockets/f1ea951eed23da8d08839fed76489094 +0 -0
  111. data/spec/test_app/tmp/cache/assets/test/sprockets/f8d343216bb921b4b9f3ff80a279ade1 +0 -0
  112. metadata +209 -12
  113. data/app/views/banner_lite/banners/preview.html.erb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7e934a8dd646f7cf44a45fd21394fad170840d7
4
- data.tar.gz: 458ab0043eccd6a0659ab7f8b2be3324fdfc9601
3
+ metadata.gz: e1e3a85fef15acb781582d7b034bf9d88c879425
4
+ data.tar.gz: e4883b046f7482c366ea74cf1f7d8907481a36e5
5
5
  SHA512:
6
- metadata.gz: 99192c8ca580a9c361d7059f3f483df2f3cbdb300fd228a0176ab450ad300fe7e123082cb374321f5af3c01ccfae41b85095839a03417791fd2b3cbd729e7dd9
7
- data.tar.gz: 21aa65dc5c6f18dd256af34c5446a1f16424b5eeccb8d61936c5fbc52ea6e2fa7f9f8441762eb2316afe825ac23cc0582abefd8a735b7636b5c548b74c4635f6
6
+ metadata.gz: 623b459d9d000dafcd2040557a75e175106f95dca3b70d1c9cd86235bb7a44ff2ce0909b876a4a290771577ba9e44facf929bd85594c2dde74669c6448eda173
7
+ data.tar.gz: d89b2caa71352bd2667b7443dc7b392bdfc8fc4d9c9aee5f4846df7f1ce5beee213bbefd46e22f6dd3dd2cdf972d810d221b1c740f6a22f4415227c40cf805f8
data/Rakefile CHANGED
@@ -21,3 +21,12 @@ load 'rails/tasks/engine.rake'
21
21
 
22
22
  Bundler::GemHelper.install_tasks
23
23
 
24
+ Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
25
+
26
+ require 'rspec/core'
27
+ require 'rspec/core/rake_task'
28
+
29
+ desc "Run all specs in spec directory (excluding plugin specs)"
30
+ RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
31
+
32
+ task :default => :spec
@@ -1,28 +1,28 @@
1
1
  require_dependency "banner_lite/application_controller"
2
2
 
3
3
  module BannerLite
4
- class BannersController < ApplicationController
4
+ class ImageBannersController < ApplicationController
5
5
  before_action :set_banner, only: [:show, :edit, :update, :destroy]
6
6
 
7
7
  def index
8
- @banners = Banner.all
8
+ @banners = ImageBanner.all
9
9
  end
10
10
 
11
11
  def show
12
12
  end
13
13
 
14
14
  def new
15
- @banner = Banner.new
15
+ @banner = ImageBanner.new
16
16
  end
17
17
 
18
18
  def edit
19
19
  end
20
20
 
21
21
  def create
22
- @banner = Banner.new(banner_params)
22
+ @banner = ImageBanner.new(banner_params)
23
23
 
24
24
  if @banner.save
25
- redirect_to @banner, notice: 'Banner was successfully created.'
25
+ redirect_to @banner, notice: 'ImageBanner was successfully created.'
26
26
  else
27
27
  render action: 'new'
28
28
  end
@@ -30,7 +30,7 @@ module BannerLite
30
30
 
31
31
  def update
32
32
  if @banner.update(banner_params)
33
- redirect_to @banner, notice: 'Banner was successfully updated.'
33
+ redirect_to @banner, notice: 'ImageBanner was successfully updated.'
34
34
  else
35
35
  render action: 'edit'
36
36
  end
@@ -38,16 +38,16 @@ module BannerLite
38
38
 
39
39
  def destroy
40
40
  @banner.destroy
41
- redirect_to banners_url, notice: 'Banner was successfully destroyed.'
41
+ redirect_to image_banners_url, notice: 'ImageBanner was successfully destroyed.'
42
42
  end
43
43
 
44
44
  private
45
45
  def set_banner
46
- @banner = Banner.find(params[:id])
46
+ @banner = ImageBanner.find(params[:id])
47
47
  end
48
48
 
49
49
  def banner_params
50
- params.require(:banner).permit(:url, :file, :active_from, :active_until)
50
+ params.require(:image_banner).permit(:url, :file, :active_from, :active_until)
51
51
  end
52
52
  end
53
53
  end
@@ -0,0 +1,53 @@
1
+ require_dependency "banner_lite/application_controller"
2
+
3
+ module BannerLite
4
+ class TextBannersController < ApplicationController
5
+ before_action :set_text_banner, only: [:show, :edit, :update, :destroy]
6
+
7
+ def index
8
+ @text_banners = TextBanner.all
9
+ end
10
+
11
+ def show
12
+ end
13
+
14
+ def new
15
+ @text_banner = TextBanner.new
16
+ end
17
+
18
+ def edit
19
+ end
20
+
21
+ def create
22
+ @text_banner = TextBanner.new(text_banner_params)
23
+
24
+ if @text_banner.save
25
+ redirect_to @text_banner, notice: 'Text banner was successfully created.'
26
+ else
27
+ render :new
28
+ end
29
+ end
30
+
31
+ def update
32
+ if @text_banner.update(text_banner_params)
33
+ redirect_to @text_banner, notice: 'Text banner was successfully updated.'
34
+ else
35
+ render :edit
36
+ end
37
+ end
38
+
39
+ def destroy
40
+ @text_banner.destroy
41
+ redirect_to text_banners_url, notice: 'Text banner was successfully destroyed.'
42
+ end
43
+
44
+ private
45
+ def set_text_banner
46
+ @text_banner = TextBanner.find(params[:id])
47
+ end
48
+
49
+ def text_banner_params
50
+ params.require(:text_banner).permit(:url, :active_from, :active_until, :text)
51
+ end
52
+ end
53
+ end
@@ -1,7 +1,7 @@
1
1
  module BannerLite
2
- module BannersHelper
3
- def banners(bnnrs = nil)
4
- bnnrs ||= Banner.active
2
+ module ImageBannersHelper
3
+ def image_banners(bnnrs = nil)
4
+ bnnrs ||= ImageBanner.active
5
5
  bnnrs.map{|b| banner_html(b) }.join("\n").html_safe
6
6
  end
7
7
 
@@ -0,0 +1,12 @@
1
+ module BannerLite
2
+ module TextBannersHelper
3
+ def text_banners(bnnrs = nil)
4
+ bnnrs ||= TextBanner.active
5
+ bnnrs.map{|b| banner_html(b) }.join("\n").html_safe
6
+ end
7
+
8
+ def banner_html(banner)
9
+ link_to banner.text, banner.url
10
+ end
11
+ end
12
+ end
@@ -1,35 +1,6 @@
1
1
  module BannerLite
2
2
  class Banner < ActiveRecord::Base
3
- attr_accessor :file
4
3
  validates :url, presence: true
5
- validates :file, presence: true, if: ->(b){ b.file_name.blank? }
6
-
7
- before_save :fill_file_name, if: :file
8
- after_save :save_file, if: :file
9
- after_destroy :remove_file
10
-
11
4
  scope :active, ->{ now = Time.zone.now; where(arel_table[:active_from].lteq(now).and(arel_table[:active_until].gt(now))) }
12
-
13
- def src
14
- "/system/#{id}/#{file_name}"
15
- end
16
-
17
- private
18
- def base_dir
19
- @base_dir ||= Rails.root.join('public', 'system', id.to_s)
20
- end
21
-
22
- def fill_file_name
23
- self.file_name = file.original_filename
24
- end
25
-
26
- def remove_file
27
- FileUtils.rm_rf(base_dir)
28
- end
29
-
30
- def save_file
31
- FileUtils.mkdir(base_dir) unless File.directory?(base_dir)
32
- File.open(base_dir + file_name, 'wb'){|f| f.write(file.read) }
33
- end
34
5
  end
35
6
  end
@@ -0,0 +1,32 @@
1
+ module BannerLite
2
+ class ImageBanner < Banner
3
+ attr_accessor :file
4
+ validates :file, presence: true, if: ->(b){ b.file_name.blank? }
5
+
6
+ before_save :fill_file_name, if: :file
7
+ after_save :save_file, if: :file
8
+ after_destroy :remove_file
9
+
10
+ def src
11
+ "/system/#{id}/#{file_name}"
12
+ end
13
+
14
+ private
15
+ def base_dir
16
+ @base_dir ||= Rails.root.join('public', 'system', id.to_s)
17
+ end
18
+
19
+ def fill_file_name
20
+ self.file_name = file.original_filename
21
+ end
22
+
23
+ def remove_file
24
+ FileUtils.rm_rf(base_dir)
25
+ end
26
+
27
+ def save_file
28
+ FileUtils.mkdir(base_dir) unless File.directory?(base_dir)
29
+ File.open(base_dir + file_name, 'wb'){|f| f.write(file.read) }
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,5 @@
1
+ module BannerLite
2
+ class TextBanner < Banner
3
+ validates :text, presence: true
4
+ end
5
+ end
@@ -3,4 +3,4 @@
3
3
  <%= render 'form' %>
4
4
 
5
5
  <%= link_to 'Show', @banner %> |
6
- <%= link_to 'Back', banners_path %>
6
+ <%= link_to 'Back', image_banners_path %>
@@ -19,7 +19,7 @@
19
19
  <td><%= banner.active_from %></td>
20
20
  <td><%= banner.active_until %></td>
21
21
  <td><%= link_to 'Show', banner %></td>
22
- <td><%= link_to 'Edit', edit_banner_path(banner) %></td>
22
+ <td><%= link_to 'Edit', edit_image_banner_path(banner) %></td>
23
23
  <td><%= link_to 'Destroy', banner, method: :delete, data: { confirm: 'Are you sure?' } %></td>
24
24
  </tr>
25
25
  <% end %>
@@ -28,4 +28,4 @@
28
28
 
29
29
  <br>
30
30
 
31
- <%= link_to 'New Banner', new_banner_path %>
31
+ <%= link_to 'New Banner', new_image_banner_path %>
@@ -2,4 +2,4 @@
2
2
 
3
3
  <%= render 'form' %>
4
4
 
5
- <%= link_to 'Back', banners_path %>
5
+ <%= link_to 'Back', image_banners_path %>
@@ -0,0 +1 @@
1
+ <%= image_banners %>
@@ -21,5 +21,5 @@
21
21
  <%= @banner.active_until %>
22
22
  </p>
23
23
 
24
- <%= link_to 'Edit', edit_banner_path(@banner) %> |
25
- <%= link_to 'Back', banners_path %>
24
+ <%= link_to 'Edit', edit_image_banner_path(@banner) %> |
25
+ <%= link_to 'Back', image_banners_path %>
@@ -0,0 +1,33 @@
1
+ <%= form_for(@text_banner) do |f| %>
2
+ <% if @text_banner.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(@text_banner.errors.count, "error") %> prohibited this text_banner from being saved:</h2>
5
+
6
+ <ul>
7
+ <% @text_banner.errors.full_messages.each do |message| %>
8
+ <li><%= message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="field">
15
+ <%= f.label :url %><br>
16
+ <%= f.text_field :url %>
17
+ </div>
18
+ <div class="field">
19
+ <%= f.label :active_from %><br>
20
+ <%= f.datetime_select :active_from %>
21
+ </div>
22
+ <div class="field">
23
+ <%= f.label :active_until %><br>
24
+ <%= f.datetime_select :active_until %>
25
+ </div>
26
+ <div class="field">
27
+ <%= f.label :text %><br>
28
+ <%= f.text_field :text %>
29
+ </div>
30
+ <div class="actions">
31
+ <%= f.submit %>
32
+ </div>
33
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing text_banner</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Show', @text_banner %> |
6
+ <%= link_to 'Back', text_banners_path %>
@@ -0,0 +1,31 @@
1
+ <h1>Listing text_banners</h1>
2
+
3
+ <table>
4
+ <thead>
5
+ <tr>
6
+ <th>Url</th>
7
+ <th>Active from</th>
8
+ <th>Active until</th>
9
+ <th>Text</th>
10
+ <th colspan="3"></th>
11
+ </tr>
12
+ </thead>
13
+
14
+ <tbody>
15
+ <% @text_banners.each do |text_banner| %>
16
+ <tr>
17
+ <td><%= text_banner.url %></td>
18
+ <td><%= text_banner.active_from %></td>
19
+ <td><%= text_banner.active_until %></td>
20
+ <td><%= text_banner.text %></td>
21
+ <td><%= link_to 'Show', text_banner %></td>
22
+ <td><%= link_to 'Edit', edit_text_banner_path(text_banner) %></td>
23
+ <td><%= link_to 'Destroy', text_banner, method: :delete, data: { confirm: 'Are you sure?' } %></td>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+
29
+ <br>
30
+
31
+ <%= link_to 'New Text banner', new_text_banner_path %>
@@ -0,0 +1,5 @@
1
+ <h1>New text_banner</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', text_banners_path %>
@@ -0,0 +1 @@
1
+ <%= text_banners %>
@@ -0,0 +1,24 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <strong>Url:</strong>
5
+ <%= @text_banner.url %>
6
+ </p>
7
+
8
+ <p>
9
+ <strong>Active from:</strong>
10
+ <%= @text_banner.active_from %>
11
+ </p>
12
+
13
+ <p>
14
+ <strong>Active until:</strong>
15
+ <%= @text_banner.active_until %>
16
+ </p>
17
+
18
+ <p>
19
+ <strong>Banner text:</strong>
20
+ <%= @text_banner.text %>
21
+ </p>
22
+
23
+ <%= link_to 'Edit', edit_text_banner_path(@text_banner) %> |
24
+ <%= link_to 'Back', text_banners_path %>
data/config/routes.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  BannerLite::Engine.routes.draw do
2
- resources :banners do
2
+ resources :image_banners do
3
+ collection do
4
+ get 'preview'
5
+ end
6
+ end
7
+ resources :text_banners do
3
8
  collection do
4
9
  get 'preview'
5
10
  end
@@ -0,0 +1,13 @@
1
+ class AddBannerTextToBannerLiteBanners < ActiveRecord::Migration
2
+ def up
3
+ add_column :banner_lite_banners, :text, :string
4
+ add_column :banner_lite_banners, :type, :string
5
+
6
+ ::BannerLite::Banner.update_all(type: 'BannerLite::ImageBanner')
7
+ end
8
+
9
+ def down
10
+ remove_column :banner_lite_banners, :text
11
+ remove_column :banner_lite_banners, :type
12
+ end
13
+ end
@@ -3,7 +3,8 @@ module BannerLite
3
3
  isolate_namespace BannerLite
4
4
 
5
5
  config.generators do |g|
6
- g.test_framework :rspec
6
+ g.test_framework :rspec, fixture: false
7
+ g.fixture_replacement :factory_girl, dir: 'spec/factories'
7
8
  end
8
9
  end
9
10
  end
@@ -1,3 +1,3 @@
1
1
  module BannerLite
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,141 @@
1
+ require 'spec_helper'
2
+
3
+ module BannerLite
4
+ describe ImageBannersController do
5
+ routes { BannerLite::Engine.routes }
6
+
7
+ let(:valid_attributes) { {
8
+ "url" => "MyString",
9
+ "file" => Rack::Test::UploadedFile.new(File.expand_path('../../../fixtures/files/dummy.png', __FILE__), 'image/jpeg'),
10
+ } }
11
+ let(:valid_session) { {} }
12
+
13
+ describe "GET index" do
14
+ it "assigns all banners as @banners" do
15
+ banner = ImageBanner.create! valid_attributes
16
+ get :index, {}, valid_session
17
+ assigns(:banners).should eq([banner])
18
+ end
19
+ end
20
+
21
+ describe "GET show" do
22
+ it "assigns the requested banner as @banner" do
23
+ banner = ImageBanner.create! valid_attributes
24
+ get :show, {:id => banner.to_param}, valid_session
25
+ assigns(:banner).should eq(banner)
26
+ end
27
+ end
28
+
29
+ describe "GET new" do
30
+ it "assigns a new banner as @banner" do
31
+ get :new, {}, valid_session
32
+ assigns(:banner).should be_a_new(ImageBanner)
33
+ end
34
+ end
35
+
36
+ describe "GET edit" do
37
+ it "assigns the requested banner as @banner" do
38
+ banner = ImageBanner.create! valid_attributes
39
+ get :edit, {:id => banner.to_param}, valid_session
40
+ assigns(:banner).should eq(banner)
41
+ end
42
+ end
43
+
44
+ describe "POST create" do
45
+ describe "with valid params" do
46
+ it "creates a new ImageBanner" do
47
+ expect {
48
+ post :create, {:image_banner => valid_attributes}, valid_session
49
+ }.to change(ImageBanner, :count).by(1)
50
+ end
51
+
52
+ it "assigns a newly created banner as @banner" do
53
+ post :create, {:image_banner => valid_attributes}, valid_session
54
+ assigns(:banner).should be_a(ImageBanner)
55
+ assigns(:banner).should be_persisted
56
+ end
57
+
58
+ it "redirects to the created banner" do
59
+ post :create, {:image_banner => valid_attributes}, valid_session
60
+ response.should redirect_to(ImageBanner.last)
61
+ end
62
+ end
63
+
64
+ describe "with invalid params" do
65
+ it "assigns a newly created but unsaved banner as @banner" do
66
+ # Trigger the behavior that occurs when invalid params are submitted
67
+ ImageBanner.any_instance.stub(:save).and_return(false)
68
+ post :create, {:image_banner => { "url" => "invalid value" }}, valid_session
69
+ assigns(:banner).should be_a_new(ImageBanner)
70
+ end
71
+
72
+ it "re-renders the 'new' template" do
73
+ # Trigger the behavior that occurs when invalid params are submitted
74
+ ImageBanner.any_instance.stub(:save).and_return(false)
75
+ post :create, {:image_banner => { "url" => "invalid value" }}, valid_session
76
+ response.should render_template("new")
77
+ end
78
+ end
79
+ end
80
+
81
+ describe "PUT update" do
82
+ describe "with valid params" do
83
+ it "updates the requested banner" do
84
+ banner = ImageBanner.create! valid_attributes
85
+ # Assuming there are no other banners in the database, this
86
+ # specifies that the ImageBanner created on the previous line
87
+ # receives the :update_attributes message with whatever params are
88
+ # submitted in the request.
89
+ ImageBanner.any_instance.should_receive(:update).with({ "url" => "MyString" })
90
+ put :update, {:id => banner.to_param, :image_banner => { "url" => "MyString" }}, valid_session
91
+ end
92
+
93
+ it "assigns the requested banner as @banner" do
94
+ banner = ImageBanner.create! valid_attributes
95
+ put :update, {:id => banner.to_param, :image_banner => valid_attributes}, valid_session
96
+ assigns(:banner).should eq(banner)
97
+ end
98
+
99
+ it "redirects to the banner" do
100
+ banner = ImageBanner.create! valid_attributes
101
+ put :update, {:id => banner.to_param, :image_banner => valid_attributes}, valid_session
102
+ response.should redirect_to(banner)
103
+ end
104
+ end
105
+
106
+ describe "with invalid params" do
107
+ it "assigns the banner as @banner" do
108
+ banner = ImageBanner.create! valid_attributes
109
+ # Trigger the behavior that occurs when invalid params are submitted
110
+ ImageBanner.any_instance.stub(:save).and_return(false)
111
+ put :update, {:id => banner.to_param, :image_banner => { "url" => "invalid value" }}, valid_session
112
+ assigns(:banner).should eq(banner)
113
+ end
114
+
115
+ it "re-renders the 'edit' template" do
116
+ banner = ImageBanner.create! valid_attributes
117
+ # Trigger the behavior that occurs when invalid params are submitted
118
+ ImageBanner.any_instance.stub(:save).and_return(false)
119
+ put :update, {:id => banner.to_param, :image_banner => { "url" => "invalid value" }}, valid_session
120
+ response.should render_template("edit")
121
+ end
122
+ end
123
+ end
124
+
125
+ describe "DELETE destroy" do
126
+ it "destroys the requested banner" do
127
+ banner = ImageBanner.create! valid_attributes
128
+ expect {
129
+ delete :destroy, {:id => banner.to_param}, valid_session
130
+ }.to change(ImageBanner, :count).by(-1)
131
+ end
132
+
133
+ it "redirects to the banners list" do
134
+ banner = ImageBanner.create! valid_attributes
135
+ delete :destroy, {:id => banner.to_param}, valid_session
136
+ response.should redirect_to(image_banners_url)
137
+ end
138
+ end
139
+
140
+ end
141
+ end