banner_lite 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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