canvas_link_migrator 1.0.1 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d147093c7e6b397c3eb184aba4af1595f782e14735a50e9d4986be628af75f3
4
- data.tar.gz: cb48c35f35dd333b02ff7dcba5e3bd79d1a1a7b736b7bb14c56de11b6c91565e
3
+ metadata.gz: 6c077949f9cef706c71bff4537a9df6a3e53cb5306dadab87fb0281c79754a16
4
+ data.tar.gz: d1f6d129570271a82b293f6422b00cb1b6533233713adaf1479fd5d7efda47cb
5
5
  SHA512:
6
- metadata.gz: 4074cbb1bfa20b00f4843327d62ee0e1cf739f7450b46698ee1a6a240054f27acd34046605e2ae4f54bbdf02b529272ba165769352e10abff1f5950c08af6ad8
7
- data.tar.gz: e1deecf7b1d6586c432234092e338c9d3059f26b744072eab1cb6e644c25dbcec9ffacfb53239b6c9ffc0610c210bf80399f097f2d7efa2265686caf314a8fee
6
+ metadata.gz: b07d22a498fbb5188874aa67a6702be9ee349ed2be2efb5c4f42050d45b7914afb0edeae7d2f2127dae44531631f371cb1d8df62923133f8a88b96bcbe8f997f
7
+ data.tar.gz: f1c6fa682fc28072571d3841d4418e14bc1240b453618ec19be98df2d09ab8a217c3638310bc0383e1a63f32ade812008f69a3198ad436167dd12f5ffc672673
@@ -166,6 +166,10 @@ module CanvasLinkMigrator
166
166
  else
167
167
  result[:old_value] = node[attr]
168
168
  result[:placeholder] = placeholder(result[:old_value])
169
+ # replace the inner html of an anchor tag if it matches the href
170
+ if node.name == "a" && attr == "href" && node["href"] == node.inner_html.delete("\n").strip
171
+ node.inner_html = result[:placeholder]
172
+ end
169
173
  node[attr] = result[:placeholder]
170
174
  end
171
175
  add_unresolved_link(result, item_type, mig_id, field)
@@ -177,7 +181,7 @@ module CanvasLinkMigrator
177
181
  end
178
182
 
179
183
  def resolved(new_url = nil)
180
- { resolved: true, new_url: new_url }
184
+ { resolved: true, new_url: new_url}
181
185
  end
182
186
 
183
187
  # returns a hash with resolution status and data to hold onto if unresolved
@@ -186,7 +190,7 @@ module CanvasLinkMigrator
186
190
  query_values = parsed_url.query_values
187
191
  media_attachment = query_values.try(:delete, "media_attachment") == "true"
188
192
  if media_attachment
189
- parsed_url.query_values = query_values.present? ? query_values : nil
193
+ parsed_url.query_values = query_values.presence || nil
190
194
  url = Addressable::URI.unencode(parsed_url)
191
195
  end
192
196
 
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright (C) 2023 - present Instructure, Inc.
5
+ #
6
+ # This file is part of Canvas.
7
+ #
8
+ # Canvas is free software: you can redistribute it and/or modify it under
9
+ # the terms of the GNU Affero General Public License as published by the Free
10
+ # Software Foundation, version 3 of the License.
11
+ #
12
+ # Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
15
+ # details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License along
18
+ # with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require "spec_helper"
22
+
23
+ describe CanvasLinkMigrator::LinkParser do
24
+ def parser
25
+ migration_query_service_mock = double()
26
+ allow(migration_query_service_mock).to receive(:supports_embedded_images).and_return(true)
27
+ allow(migration_query_service_mock).to receive(:fix_relative_urls?).and_return(true)
28
+ CanvasLinkMigrator::LinkParser.new(migration_query_service_mock)
29
+ end
30
+
31
+ describe "convert_link" do
32
+ it "converts inner html of anchor tags when appropriate" do
33
+ doc = Nokogiri::HTML5.fragment("<a href=\"$WIKI_REFERENCE$/pages/1\">$WIKI_REFERENCE$/pages/1</a>")
34
+ parser.convert_link(doc.at_css('a'), "href","wiki_page", "migrationid", "")
35
+ expect(doc.at_css('a')['href']).to include("LINK.PLACEHOLDER")
36
+ expect(doc.at_css('a').inner_html).to include("LINK.PLACEHOLDER")
37
+ end
38
+
39
+ it "doesn't convert inner html of anchor tags if unnecessary" do
40
+ doc = Nokogiri::HTML5.fragment("<a href=\"$WIKI_REFERENCE$/pages/1\">$WIKI_REFERENCE$/pages/5</a>")
41
+ parser.convert_link(doc.at_css('a'), "href","wiki_page", "migrationid", "")
42
+ expect(doc.at_css('a')['href']).to include("LINK.PLACEHOLDER")
43
+ expect(doc.at_css('a').inner_html).not_to include("LINK.PLACEHOLDER")
44
+ end
45
+ end
46
+ end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_link_migrator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mysti Lilla
8
8
  - James Logan
9
9
  - Sarah Gerard
10
+ - Math Costa
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2023-11-04 00:00:00.000000000 Z
14
+ date: 2023-11-21 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: activesupport
@@ -129,6 +130,7 @@ email:
129
130
  - mysti@instructure.com
130
131
  - james.logan@instructure.com
131
132
  - sarah.gerard@instructure.com
133
+ - luis.oliveira@instructure.com
132
134
  executables: []
133
135
  extensions: []
134
136
  extra_rdoc_files: []
@@ -141,6 +143,7 @@ files:
141
143
  - lib/canvas_link_migrator/resource_map_service.rb
142
144
  - lib/canvas_link_migrator/version.rb
143
145
  - spec/canvas_link_migrator/imported_html_converter_spec.rb
146
+ - spec/canvas_link_migrator/link_parser_spec.rb
144
147
  - spec/canvas_link_migrator/link_resolver_spec.rb
145
148
  - spec/canvas_link_migrator_spec.rb
146
149
  - spec/fixtures/canvas_resource_map.json