[Git][noosfero/noosfero][master] 4 commits: add values on api_content of link list block

Leandro Nunes gitlab at mg.gitlab.com
Tue Jul 3 22:14:16 BRT 2018


Leandro Nunes pushed to branch master at Noosfero / noosfero


Commits:
25ce0d32 by Leandro Nunes dos Santos at 2018-07-03T23:29:29Z
add values on api_content of link list block

- - - - -
d8a1a5ef by Leandro Nunes dos Santos at 2018-07-03T23:30:21Z
save on block_images if the block has images

- - - - -
f40caa68 by Leandro Nunes dos Santos at 2018-07-04T00:18:01Z
fix unit test

- - - - -
4bac14a3 by Leandro Nunes at 2018-07-04T01:14:12Z
Merge branch 'update-api-content' into 'master'

Update api content

See merge request noosfero/noosfero!1565
- - - - -


5 changed files:

- app/models/highlights_block.rb
- app/models/link_list_block.rb
- test/api/blocks_test.rb
- test/unit/highlights_block_test.rb
- test/unit/link_list_block_test.rb


Changes:

=====================================
app/models/highlights_block.rb
=====================================
--- a/app/models/highlights_block.rb
+++ b/app/models/highlights_block.rb
@@ -24,6 +24,24 @@ class HighlightsBlock < Block
     end
   end
 
+  after_save do |block|
+    existing_images = block.block_images.map { |i| i[:image_id] }
+    update_image = false
+    self.images.select { |i| !existing_images.include?(i.id) }.map do |image|
+       temp_image = block.block_images.detect { |i| !i.image_id || i.image_id.to_s === '0' }
+       next if temp_image.nil?
+       temp_image.image_id = image.id
+       temp_image.address = self.full_image_path(image)
+       temp_image.image_src = image.public_filename
+       update_image = true
+    end
+    self.save if update_image
+  end
+
+  def full_image_path(image)
+    self.owner.hostname.blank? ? "/#{self.owner.identifier}#{image.public_filename}" : "/#{image.public_filename}"
+  end
+
   def self.description
     _('Creates image slideshow')
   end
@@ -49,6 +67,10 @@ class HighlightsBlock < Block
     true
   end
 
+  def slides= values
+    self.block_images = values
+  end
+
   def api_content(params = {})
     slides = self.block_images
     slides.each do |slide|
@@ -62,6 +84,12 @@ class HighlightsBlock < Block
     { slides: slides }
   end
 
+  def api_content= params
+    super
+    self.slides= params[:slides]
+    self.interval= params[:interval]
+  end
+
   def remove_unused_images
     image_ids = self.block_images.map { |slide| slide[:image_id] }
     images.where.not(id: image_ids).destroy_all


=====================================
app/models/link_list_block.rb
=====================================
--- a/app/models/link_list_block.rb
+++ b/app/models/link_list_block.rb
@@ -21,6 +21,19 @@ class LinkListBlock < Block
     _('Links (static menu)')
   end
 
+  def display_api_content_by_default?
+    true
+  end
+
+  def api_content(params = {})
+    { links: settings[:links] }
+  end
+
+  def api_content= params
+    super
+    settings[:links] = params[:links]
+  end
+
   def help
     _('This block can be used to create a menu of links. You can add, remove and update the links as you wish.')
   end


=====================================
test/api/blocks_test.rb
=====================================
--- a/test/api/blocks_test.rb
+++ b/test/api/blocks_test.rb
@@ -180,6 +180,22 @@ class BlocksTest < ActiveSupport::TestCase
     assert_equal 1, block.images.size
   end
 
+  should 'be able to update image not remove existing images' do
+    box = fast_create(Box, :owner_id => profile.id, :owner_type => Profile.name)
+    block = fast_create(RawHTMLBlock, box_id: box.id)
+    Environment.default.add_admin(person)
+    base64_image = create_base64_image
+    params[:block] = {images_builder: [base64_image]}
+    post "/api/v1/blocks/#{block.id}?#{params.to_query}"
+    assert_equal 1, block.images.size
+
+
+    base64_image = create_base64_image
+    params[:block] = {images_builder: [base64_image]}
+    post "/api/v1/blocks/#{block.id}?#{params.to_query}"
+    assert_equal 2, block.images.size
+  end
+
   should 'be able to remove images when updating a block' do
     box = fast_create(Box, :owner_id => profile.id, :owner_type => Profile.name)
     Environment.default.add_admin(person)
@@ -359,6 +375,7 @@ class BlocksTest < ActiveSupport::TestCase
   end
 
   define_method "test_should_be_able_to_get_preview_of_RecentDocumentsBlock_on_environment_with_#{env_id}" do
+    Article.delete_all
     article1 = fast_create(Article, :profile_id => user.person.id, :name => "Article 1")
     article2 = fast_create(Article, :profile_id => user.person.id, :name => "Article 2")
     params[:block_type] = 'RecentDocumentsBlock'


=====================================
test/unit/highlights_block_test.rb
=====================================
--- a/test/unit/highlights_block_test.rb
+++ b/test/unit/highlights_block_test.rb
@@ -190,6 +190,7 @@ class HighlightsBlockTest < ActiveSupport::TestCase
     }])
     assert_equal 1, block.images.size
     block.save!
+    block.reload
     assert_equal 0, block.images.size
   end
 


=====================================
test/unit/link_list_block_test.rb
=====================================
--- a/test/unit/link_list_block_test.rb
+++ b/test/unit/link_list_block_test.rb
@@ -133,4 +133,34 @@ class LinkListBlockTest < ActiveSupport::TestCase
     assert_match /Please, edit this block to add links/, render_block_content(l)
   end
 
+  should 'api_content= set display settings values' do
+    block = LinkListBlock.new
+    assert_nil block.settings[:display]
+    block.api_content= { display: 'always' }
+    assert_equal 'always', block.settings[:display]
+  end
+
+  should 'api_content= set display_user settings values' do
+    block = LinkListBlock.new
+    assert_nil block.settings[:display_user]
+    block.api_content= { display_user: 'all' }
+    block.valid?
+    assert_equal 'all', block.settings[:display_user]
+  end
+
+  should 'api_content= set links to settings' do
+    block = LinkListBlock.new
+    assert_nil block.settings[:links]
+    value = { "name"=>"Google", "address"=>"http://www.google.com.br" }
+    block.api_content= { links: value }
+    assert_equal value, block.settings[:links]
+  end
+
+  should 'api_content= set display_user settings if exist display value at the same time' do
+    block = LinkListBlock.new
+    assert_nil block.settings[:display_user]
+    block.api_content= { display_user: 'all', display: 'always' }
+    assert_equal 'all', block.settings[:display_user]
+  end
+
 end



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/a05dc9d1fe0f27a79d655bd4ba71035f0592e9be...4bac14a35250940da89f775ac7e7df11b4022109

-- 
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/a05dc9d1fe0f27a79d655bd4ba71035f0592e9be...4bac14a35250940da89f775ac7e7df11b4022109
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20180704/07b99208/attachment-0001.html>


More information about the Noosfero-dev mailing list