@@ -49,4 +49,45 @@ def test_update
4949 assert_equal ( "2.example.com" , api_scope . host )
5050 assert_equal ( "/2/" , api_scope . path_prefix )
5151 end
52+
53+ def test_duplicate_creates_new_record_with_path_prefix_cleared
54+ source = FactoryBot . create ( :api_scope , :name => "Source Scope For Duplicate" , :host => "source.example.com" , :path_prefix => "/source/" )
55+ source_id = source . id
56+ source_host = source . host
57+ source_path_prefix = source . path_prefix
58+
59+ admin_login
60+ visit "/admin/#/api_scopes/#{ source . id } /edit"
61+ assert_field ( "Name" , :with => "Source Scope For Duplicate" )
62+
63+ find ( "a.duplicate-action" , :text => /Duplicate API Scope/ ) . click
64+
65+ assert_current_path %r{/admin/#/api_scopes/new\? duplicate_id=#{ source . id } } , :url => true
66+ assert_text ( "Duplicated from Source Scope For Duplicate" )
67+ assert_field ( "Name" , :with => "Source Scope For Duplicate" )
68+ assert_field ( "Host" , :with => "source.example.com" )
69+ assert_field ( "Path Prefix" , :with => "" )
70+
71+ fill_in ( "Name" , :with => "Duplicate Scope For Duplicate" )
72+ fill_in ( "Path Prefix" , :with => "/duplicate/" )
73+ click_button ( "Save" )
74+ assert_text ( "Successfully saved" )
75+
76+ duplicate = ApiScope . where ( :name => "Duplicate Scope For Duplicate" ) . order ( :created_at => :desc ) . first
77+ refute_nil ( duplicate , "duplicate scope was created" )
78+ refute_equal ( source_id , duplicate . id , "duplicate has fresh id" )
79+ assert_equal ( source_host , duplicate . host , "host preserved" )
80+ assert_equal ( "/duplicate/" , duplicate . path_prefix , "duplicate has new path_prefix" )
81+
82+ source . reload
83+ assert_equal ( "Source Scope For Duplicate" , source . name , "source name unchanged" )
84+ assert_equal ( source_path_prefix , source . path_prefix , "source path_prefix unchanged" )
85+ end
86+
87+ def test_duplicate_link_hidden_on_new_form
88+ admin_login
89+ visit "/admin/#/api_scopes/new"
90+ assert_field ( "Name" )
91+ refute_selector ( "a.duplicate-action" )
92+ end
5293end
0 commit comments