Changes suggested in PR:

* Delete all things related to banner images and styles (in code)
* Add a new test to check that the banner is showing correctly
* Update the specs accordingly to match the changes

Update dev_seed to set a random background_color and a font_color for banners (and remove everything about image and style)
Add a rake task to migrate the banner style to backgroun_color and font_color (so that the banners have the same colors than before)
This commit is contained in:
iagirre
2018-01-24 16:23:12 +01:00
committed by Angel Perez
parent 5d1b06a3cb
commit 82cb8d4c52
8 changed files with 75 additions and 58 deletions

View File

@@ -24,21 +24,13 @@ App.Banners =
change: -> change: ->
App.Banners.update_banner("#js-banner-description", $(this).val()) App.Banners.update_banner("#js-banner-description", $(this).val())
$("#banner_style").on
change: ->
App.Banners.update_style("#js-banner-style", $(this).val())
$("#banner_image").on
change: ->
App.Banners.update_style("#js-banner-image", $(this).val())
$("#banner_background_color_picker").on $("#banner_background_color_picker").on
change: -> change: ->
App.Banners.update_background_color("#js-banner-style", "#banner_background_color", $(this).val()); App.Banners.update_background_color("#js-banner-background", "#banner_background_color", $(this).val());
$("#banner_background_color").on $("#banner_background_color").on
change: -> change: ->
App.Banners.update_background_color("#js-banner-style", "#banner_background_color_picker", $(this).val()); App.Banners.update_background_color("#js-banner-background", "#banner_background_color_picker", $(this).val());
$("#banner_font_color_picker").on $("#banner_font_color_picker").on
change: -> change: ->

View File

@@ -2,8 +2,6 @@ class Admin::BannersController < Admin::BaseController
has_filters %w{all with_active with_inactive}, only: :index has_filters %w{all with_active with_inactive}, only: :index
before_action :banner_styles, only: [:edit, :new, :create, :update]
before_action :banner_imgs, only: [:edit, :new, :create, :update]
before_action :banner_sections, only: [:edit, :new, :create, :update] before_action :banner_sections, only: [:edit, :new, :create, :update]
respond_to :html, :js respond_to :html, :js
@@ -39,7 +37,7 @@ class Admin::BannersController < Admin::BaseController
private private
def banner_params def banner_params
attributes = [:title, :description, :target_url, :style, :image, attributes = [:title, :description, :target_url,
:post_started_at, :post_ended_at, :post_started_at, :post_ended_at,
:background_color, :font_color, :background_color, :font_color,
web_section_ids: []] web_section_ids: []]

View File

@@ -77,12 +77,10 @@
<%= f.submit(class: "button expanded", value: t("admin.banners.edit.form.submit_button")) %> <%= f.submit(class: "button expanded", value: t("admin.banners.edit.form.submit_button")) %>
</div> </div>
</div> </div>
<div id="js-banner-style" class="<%= @banner.style %> banner" style="background-color:<%= @banner.background_color %>"> <div id="js-banner-background" class="banner" style="background-color:<%= @banner.background_color %>">
<div id="js-banner-image" class="<%= @banner.image %>"> <%= link_to @banner.target_url do %>
<%= link_to @banner.target_url do %> <h2 id="js-banner-title" style="color:<%= @banner.font_color %>"><%= @banner.title %></h2>
<h2 id="js-banner-title" style="color:<%= @banner.font_color %>"><%= @banner.title %></h2> <h3 id="js-banner-description" style="color:<%= @banner.font_color %>"><%= @banner.description %></h3>
<h3 id="js-banner-description" style="color:<%= @banner.font_color %>"><%= @banner.description %></h3> <% end %>
<% end %>
</div>
</div> </div>
<% end %> <% end %>

View File

@@ -37,13 +37,11 @@
</tr> </tr>
<tr> <tr>
<td colspan="3"> <td colspan="3">
<div class="<%= banner.style %> banner" style="background-color:<%= banner.background_color %>"> <div class="banner" style="background-color:<%= banner.background_color %>">
<div class="<%= banner.image %>"> <%= link_to banner.target_url do %>
<%= link_to banner.target_url do %> <h2 style="color:<%= banner.font_color %>"><%= banner.title %></h2>
<h2 style="color:<%= banner.font_color %>"><%= banner.title %></h2> <h3 style="color:<%= banner.font_color %>"><%= banner.description %></h3>
<h3 style="color:<%= banner.font_color %>"><%= banner.description %></h3> <% end %>
<% end %>
</div>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -1,9 +1,7 @@
<% banner = @banners.sample %> <% banner = @banners.sample %>
<div class="<%= banner.style %>"> <div class="banner" style="background-color:<%= banner.background_color %>">
<div class="<%= banner.image %>"> <%= link_to banner.target_url do %>
<%= link_to banner.target_url do %> <h2 style="color:<%= banner.font_color %>"><%=banner.title %></h2>
<h2><%=banner.title %></h2> <h3 style="color:<%= banner.font_color %>"><%=banner.description %></h3>
<h3><%=banner.description %></h3> <% end %>
<% end %>
</div>
</div> </div>

20
lib/tasks/banners.rake Normal file
View File

@@ -0,0 +1,20 @@
namespace :banners do
desc "Migrate styles to background_color and font_color"
task migrate_style: :environment do
Banner.all.each do |banner|
banner.font_color = '#FFFFFF'
case banner.style
when "banner-style banner-style-one"
banner.background_color = '#004a83'
when "banner-style banner-style-two"
banner.background_color = '#7e328a'
when "banner-style banner-style-three"
banner.background_color = '#33dadf'
end
banner.save
end
end
end

View File

@@ -738,11 +738,11 @@ FactoryBot.define do
factory :banner do factory :banner do
sequence(:title) { |n| "Banner title #{n}" } sequence(:title) { |n| "Banner title #{n}" }
sequence(:description) { |n| "This is the text of Banner #{n}" } sequence(:description) { |n| "This is the text of Banner #{n}" }
style {["banner-style-one", "banner-style-two", "banner-style-three"].sample}
image {["banner.banner-img-one", "banner.banner-img-two", "banner.banner-img-three"].sample}
target_url {["/proposals", "/debates" ].sample} target_url {["/proposals", "/debates" ].sample}
post_started_at { Time.current - 7.days } post_started_at { Time.current - 7.days }
post_ended_at { Time.current + 7.days } post_ended_at { Time.current + 7.days }
background_color '#FF0000'
font_color '#FFFFFF'
end end
factory :proposal_notification do factory :proposal_notification do

View File

@@ -11,42 +11,42 @@ feature 'Admin banners magement' do
@banner1 = create(:banner, title: "Banner number one", @banner1 = create(:banner, title: "Banner number one",
description: "This is the text of banner number one and is not active yet", description: "This is the text of banner number one and is not active yet",
target_url: "http://www.url.com", target_url: "http://www.url.com",
style: "banner-style.banner-one",
image: "banner-img.banner-one",
post_started_at: (Time.current + 4.days), post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days)) post_ended_at: (Time.current + 10.days),
background_color: '#FF0000',
font_color: '#FFFFFF')
@banner2 = create(:banner, title: "Banner number two", @banner2 = create(:banner, title: "Banner number two",
description: "This is the text of banner number two and is not longer active", description: "This is the text of banner number two and is not longer active",
target_url: "http://www.url.com", target_url: "http://www.url.com",
style: "banner-style.banner-two",
image: "banner-img.banner-two",
post_started_at: (Time.current - 10.days), post_started_at: (Time.current - 10.days),
post_ended_at: (Time.current - 3.days)) post_ended_at: (Time.current - 3.days),
background_color: '#00FF00',
font_color: '#FFFFFF')
@banner3 = create(:banner, title: "Banner number three", @banner3 = create(:banner, title: "Banner number three",
description: "This is the text of banner number three and has style banner-three", description: "This is the text of banner number three and has style banner-three",
target_url: "http://www.url.com", target_url: "http://www.url.com",
style: "banner-style.banner-three",
image: "banner-img.banner-three",
post_started_at: (Time.current - 1.day), post_started_at: (Time.current - 1.day),
post_ended_at: (Time.current + 10.days)) post_ended_at: (Time.current + 10.days),
background_color: '#0000FF',
font_color: '#FFFFFF')
@banner4 = create(:banner, title: "Banner number four", @banner4 = create(:banner, title: "Banner number four",
description: "This is the text of banner number four and has style banner-one", description: "This is the text of banner number four and has style banner-one",
target_url: "http://www.url.com", target_url: "http://www.url.com",
style: "banner-style.banner-one",
image: "banner-img.banner-one",
post_started_at: (DateTime.current - 10.days), post_started_at: (DateTime.current - 10.days),
post_ended_at: (DateTime.current + 10.days)) post_ended_at: (DateTime.current + 10.days),
background_color: '#FFF000',
font_color: '#FFFFFF')
@banner5 = create(:banner, title: "Banner number five", @banner5 = create(:banner, title: "Banner number five",
description: "This is the text of banner number five and has style banner-two", description: "This is the text of banner number five and has style banner-two",
target_url: "http://www.url.com", target_url: "http://www.url.com",
style: "banner-style.banner-one",
image: "banner-img.banner-one",
post_started_at: (DateTime.current - 10.days), post_started_at: (DateTime.current - 10.days),
post_ended_at: (DateTime.current + 10.days)) post_ended_at: (DateTime.current + 10.days),
background_color: '#FFFF00',
font_color: '#FFFFFF')
end end
scenario 'Index show active banners' do scenario 'Index show active banners' do
@@ -112,14 +112,27 @@ feature 'Admin banners magement' do
expect(page.find_field("banner_font_color_picker").value).to eq('#ffb2b2') expect(page.find_field("banner_font_color_picker").value).to eq('#ffb2b2')
end end
scenario "Created banner is correctly shown in the web" do
banner = create(:banner, title: 'My banner', description: 'My description of the banner', target_url: '/debates', background_color: '#00FF00')
visit proposals_path
expect(find('.banner')[:style]).to eq("background-color:#00FF00")
within('.banner') do
expect(find('h2')[:style]).to eq("color:#{banner.font_color}")
expect(find('h3')[:style]).to eq("color:#{banner.font_color}")
end
end
scenario 'Edit banner with live refresh', :js do scenario 'Edit banner with live refresh', :js do
banner1 = create(:banner, title: 'Hello', banner1 = create(:banner, title: 'Hello',
description: 'Wrong text', description: 'Wrong text',
target_url: 'http://www.url.com', target_url: 'http://www.url.com',
style: 'banner-style.banner-one',
image: 'banner-img.banner-one',
post_started_at: (Time.current + 4.days), post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days)) post_ended_at: (Time.current + 10.days),
background_color: '#FF0000',
font_color: '#FFFFFF')
visit admin_root_path visit admin_root_path
@@ -135,7 +148,7 @@ feature 'Admin banners magement' do
select 'Banner style 1', from: 'banner_style' select 'Banner style 1', from: 'banner_style'
select 'Banner image 2', from: 'banner_image' select 'Banner image 2', from: 'banner_image'
within('div#js-banner-style') do within('div#js-banner-background') do
expect(page).to have_selector('h2', text: 'Modified title') expect(page).to have_selector('h2', text: 'Modified title')
expect(page).to have_selector('h3', text: 'Edited text') expect(page).to have_selector('h3', text: 'Edited text')
end end
@@ -154,10 +167,10 @@ feature 'Admin banners magement' do
create(:banner, title: 'Ugly banner', create(:banner, title: 'Ugly banner',
description: 'Bad text', description: 'Bad text',
target_url: 'http://www.url.com', target_url: 'http://www.url.com',
style: 'banner-style.banner-one',
image: 'banner-img.banner-one',
post_started_at: (Time.current + 4.days), post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days)) post_ended_at: (Time.current + 10.days),
background_color: '#FF0000',
font_color: '#FFFFFF')
visit admin_root_path visit admin_root_path