@@ -39,6 +39,79 @@ class AdditionalInfoTest < ApplicationSystemTestCase
39
39
assert_link '@Gordon J. Canada' , href : user_path ( mentioned_user2 , locale : :en )
40
40
end
41
41
42
+ test 'mention retention and deletion' do
43
+ user = User . first
44
+ login_as ( user , scope : :user )
45
+
46
+ visit new_script_version_url
47
+ code = <<~JS
48
+ // ==UserScript==
49
+ // @name A Test!
50
+ // @description Unit test.
51
+ // @version 1.1
52
+ // @namespace http://greasyfork.local/users/1
53
+ // @include *
54
+ // ==/UserScript==
55
+ var foo = 1;
56
+ JS
57
+ fill_in 'Code' , with : code
58
+ fill_in 'Additional info' , with : 'Hey @Geoffrey this is for you!'
59
+ click_button 'Post script'
60
+ assert_selector 'h2' , text : 'A Test!'
61
+ script = Script . last
62
+ script_version = script . script_versions . last
63
+ [ script , script_version ] . each do |o |
64
+ assert_equal 1 , o . localized_attribute_for ( 'additional_info' ) . mentions . count
65
+ assert_equal '@Geoffrey' , o . localized_attribute_for ( 'additional_info' ) . mentions . first . text
66
+ end
67
+
68
+ # No update
69
+ visit new_script_script_version_url ( script_id : script . id )
70
+ click_button 'Post new version'
71
+ assert_selector 'h2' , text : 'A Test!'
72
+ script . reload
73
+ script_version = script . script_versions . last
74
+ [ script , script_version ] . each do |o |
75
+ assert_equal 1 , o . localized_attribute_for ( 'additional_info' ) . mentions . count
76
+ assert_equal '@Geoffrey' , o . localized_attribute_for ( 'additional_info' ) . mentions . first . text
77
+ end
78
+
79
+ # Update the additional info, but retain the mention
80
+ visit new_script_script_version_url ( script_id : script . id )
81
+ fill_in 'Additional info' , with : 'Hey @Geoffrey this is for you!!!!!!'
82
+ click_button 'Post new version'
83
+ assert_selector 'h2' , text : 'A Test!'
84
+ script . reload
85
+ script_version = script . script_versions . last
86
+ [ script , script_version ] . each do |o |
87
+ assert_equal 1 , o . localized_attribute_for ( 'additional_info' ) . mentions . count
88
+ assert_equal '@Geoffrey' , o . localized_attribute_for ( 'additional_info' ) . mentions . first . text
89
+ end
90
+
91
+ # Update the additional info, mentioning a different user
92
+ visit new_script_script_version_url ( script_id : script . id )
93
+ fill_in 'Additional info' , with : 'Hey @"Gordon J. Canada" this is for you!'
94
+ click_button 'Post new version'
95
+ assert_selector 'h2' , text : 'A Test!'
96
+ script . reload
97
+ script_version = script . script_versions . last
98
+ [ script , script_version ] . each do |o |
99
+ assert_equal 1 , o . localized_attribute_for ( 'additional_info' ) . mentions . count
100
+ assert_equal '@"Gordon J. Canada"' , o . localized_attribute_for ( 'additional_info' ) . mentions . first . text
101
+ end
102
+
103
+ # No longer mention anyone
104
+ visit new_script_script_version_url ( script_id : script . id )
105
+ fill_in 'Additional info' , with : 'This is for no one'
106
+ click_button 'Post new version'
107
+ assert_selector 'h2' , text : 'A Test!'
108
+ script . reload
109
+ script_version = script . script_versions . last
110
+ [ script , script_version ] . each do |o |
111
+ assert_empty o . localized_attribute_for ( 'additional_info' ) . mentions
112
+ end
113
+ end
114
+
42
115
test 'changing just additional info reindexes' do
43
116
script = Script . find ( 11 )
44
117
login_as ( script . users . first , scope : :user )
0 commit comments