hammer_cli_foreman 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of hammer_cli_foreman might be problematic. Click here for more details.

Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -1
  3. data/doc/configuration.md +13 -0
  4. data/lib/hammer_cli_foreman.rb +3 -0
  5. data/lib/hammer_cli_foreman/architecture.rb +9 -9
  6. data/lib/hammer_cli_foreman/associating_commands.rb +57 -34
  7. data/lib/hammer_cli_foreman/commands.rb +188 -101
  8. data/lib/hammer_cli_foreman/common_parameter.rb +7 -10
  9. data/lib/hammer_cli_foreman/compute_resource.rb +8 -11
  10. data/lib/hammer_cli_foreman/domain.rb +14 -40
  11. data/lib/hammer_cli_foreman/environment.rb +10 -15
  12. data/lib/hammer_cli_foreman/exceptions.rb +4 -0
  13. data/lib/hammer_cli_foreman/fact.rb +5 -5
  14. data/lib/hammer_cli_foreman/host.rb +76 -132
  15. data/lib/hammer_cli_foreman/hostgroup.rb +26 -61
  16. data/lib/hammer_cli_foreman/id_resolver.rb +163 -0
  17. data/lib/hammer_cli_foreman/image.rb +14 -50
  18. data/lib/hammer_cli_foreman/location.rb +35 -17
  19. data/lib/hammer_cli_foreman/media.rb +9 -16
  20. data/lib/hammer_cli_foreman/model.rb +6 -8
  21. data/lib/hammer_cli_foreman/operating_system.rb +129 -63
  22. data/lib/hammer_cli_foreman/organization.rb +36 -16
  23. data/lib/hammer_cli_foreman/output/fields.rb +10 -2
  24. data/lib/hammer_cli_foreman/output/formatters.rb +44 -18
  25. data/lib/hammer_cli_foreman/parameter.rb +45 -41
  26. data/lib/hammer_cli_foreman/partition_table.rb +9 -12
  27. data/lib/hammer_cli_foreman/puppet_class.rb +14 -14
  28. data/lib/hammer_cli_foreman/references.rb +122 -0
  29. data/lib/hammer_cli_foreman/report.rb +3 -6
  30. data/lib/hammer_cli_foreman/searchables_option_builder.rb +99 -0
  31. data/lib/hammer_cli_foreman/smart_class_parameter.rb +17 -13
  32. data/lib/hammer_cli_foreman/smart_proxy.rb +18 -28
  33. data/lib/hammer_cli_foreman/subnet.rb +12 -13
  34. data/lib/hammer_cli_foreman/template.rb +10 -19
  35. data/lib/hammer_cli_foreman/user.rb +9 -28
  36. data/lib/hammer_cli_foreman/version.rb +1 -1
  37. data/locale/hammer-cli-foreman.pot +828 -817
  38. data/test/unit/apipie_resource_mock.rb +33 -11
  39. data/test/unit/architecture_test.rb +7 -10
  40. data/test/unit/commands_test.rb +8 -9
  41. data/test/unit/common_parameter_test.rb +6 -8
  42. data/test/unit/compute_resource_test.rb +9 -12
  43. data/test/unit/data/1.5/foreman_api.json +14130 -0
  44. data/test/unit/domain_test.rb +19 -22
  45. data/test/unit/environment_test.rb +9 -11
  46. data/test/unit/fact_test.rb +5 -6
  47. data/test/unit/helpers/command.rb +115 -59
  48. data/test/unit/helpers/fake_searchables.rb +19 -0
  49. data/test/unit/host_test.rb +44 -33
  50. data/test/unit/hostgroup_test.rb +19 -26
  51. data/test/unit/id_resolver_test.rb +225 -0
  52. data/test/unit/image_test.rb +16 -18
  53. data/test/unit/location_test.rb +8 -10
  54. data/test/unit/media_test.rb +11 -13
  55. data/test/unit/model_test.rb +8 -10
  56. data/test/unit/operating_system_test.rb +23 -23
  57. data/test/unit/organization_test.rb +9 -10
  58. data/test/unit/output/formatters_test.rb +133 -20
  59. data/test/unit/partition_table_test.rb +12 -9
  60. data/test/unit/puppet_class_test.rb +3 -7
  61. data/test/unit/report_test.rb +3 -7
  62. data/test/unit/searchables_option_builder_test.rb +172 -0
  63. data/test/unit/smart_class_parameter_test.rb +5 -7
  64. data/test/unit/smart_proxy_test.rb +11 -12
  65. data/test/unit/subnet_test.rb +15 -16
  66. data/test/unit/template_test.rb +15 -12
  67. data/test/unit/test_helper.rb +1 -1
  68. data/test/unit/user_test.rb +9 -12
  69. metadata +536 -509
@@ -3,11 +3,7 @@ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
3
3
 
4
4
  describe HammerCLIForeman::Medium do
5
5
 
6
- extend CommandTestHelper
7
-
8
- before :each do
9
- cmd.stubs(:name_to_id).returns(1)
10
- end
6
+ include CommandTestHelper
11
7
 
12
8
  context "ListCommand" do
13
9
 
@@ -36,7 +32,7 @@ describe HammerCLIForeman::Medium do
36
32
  context "parameters" do
37
33
  it_should_accept "id", ["--id=1"]
38
34
  it_should_accept "name", ["--name=medium_x"]
39
- it_should_fail_with "no arguments"
35
+ # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
40
36
  end
41
37
 
42
38
  context "output" do
@@ -46,7 +42,7 @@ describe HammerCLIForeman::Medium do
46
42
  it_should_print_column "Id"
47
43
  it_should_print_column "Path"
48
44
  it_should_print_column "OS Family"
49
- it_should_print_column "OS IDs"
45
+ it_should_print_column "Operating systems"
50
46
  it_should_print_column "Created at"
51
47
  it_should_print_column "Updated at"
52
48
  end
@@ -59,8 +55,9 @@ describe HammerCLIForeman::Medium do
59
55
 
60
56
  context "parameters" do
61
57
  it_should_accept "name, path, os ids", ["--name=media", "--path=http://some.path/abc/$major/Fedora/$arch/", "--operatingsystem-ids=1,2"]
62
- it_should_fail_with "name missing", ["--path=http://some.path/abc/$major/Fedora/$arch/"]
63
- it_should_fail_with "path missing", ["--name=media"]
58
+ # it_should_fail_with "name missing", ["--path=http://some.path/abc/$major/Fedora/$arch/"]
59
+ # it_should_fail_with "path missing", ["--name=media"]
60
+ # TODO: temporarily disabled, parameters are checked in the api
64
61
  end
65
62
 
66
63
  with_params ["--name=medium_x", "--path=http://some.path/", "--operatingsystem-ids=1,2"] do
@@ -75,7 +72,7 @@ describe HammerCLIForeman::Medium do
75
72
  context "parameters" do
76
73
  it_should_accept "name", ["--name=media"]
77
74
  it_should_accept "id", ["--id=1"]
78
- it_should_fail_with "name or id missing", []
75
+ # it_should_fail_with "name or id missing", [] # TODO: temporarily disabled, parameters are checked in the id resolver
79
76
  end
80
77
  end
81
78
 
@@ -87,12 +84,13 @@ describe HammerCLIForeman::Medium do
87
84
  it_should_accept "name", ["--name=medium"]
88
85
  it_should_accept "id", ["--id=1"]
89
86
  it_should_accept "os ids", ["--id=1", "--operatingsystem-ids=1,2"]
90
- it_should_fail_with "no params", []
91
- it_should_fail_with "name or id missing", ["--new-name=medium_x", "--path=http://some.path/"]
87
+ # it_should_fail_with "no params", []
88
+ # it_should_fail_with "name or id missing", ["--new-name=medium_x", "--path=http://some.path/"]
89
+ # TODO: temporarily disabled, parameters are checked in the id resolver
92
90
  end
93
91
 
94
92
  with_params ["--id=1", "--new-name=medium_x", "--path=http://some.path/", "--operatingsystem-ids=1,2"] do
95
- it_should_call_action :update, {'id' => '1', 'medium' => {'name' => 'medium_x', 'path' => 'http://some.path/', 'operatingsystem_ids' => ['1', '2']}}
93
+ it_should_call_action :update, {'id' => '1', 'name' => 'medium_x', 'medium' => {'name' => 'medium_x', 'path' => 'http://some.path/', 'operatingsystem_ids' => ['1', '2']}}
96
94
  end
97
95
 
98
96
  end
@@ -4,11 +4,7 @@ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
4
4
 
5
5
  describe HammerCLIForeman::Model do
6
6
 
7
- extend CommandTestHelper
8
-
9
- before :each do
10
- cmd.stubs(:name_to_id).returns(1)
11
- end
7
+ include CommandTestHelper
12
8
 
13
9
  context "ListCommand" do
14
10
 
@@ -38,7 +34,7 @@ describe HammerCLIForeman::Model do
38
34
  context "parameters" do
39
35
  it_should_accept "id", ["--id=1"]
40
36
  it_should_accept "name", ["--name=model"]
41
- it_should_fail_with "no arguments"
37
+ # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
42
38
  end
43
39
 
44
40
  context "output" do
@@ -63,7 +59,8 @@ describe HammerCLIForeman::Model do
63
59
 
64
60
  context "parameters" do
65
61
  it_should_accept "name", ["--name=model", "--info=description", "--vendor-class=class", "--hardware-model=model"]
66
- it_should_fail_with "name missing", ["--info=description", "--vendor-class=class", "--hardware-model=model"]
62
+ # it_should_fail_with "name missing", ["--info=description", "--vendor-class=class", "--hardware-model=model"]
63
+ # TODO: temporarily disabled, parameters are checked in the api
67
64
  end
68
65
 
69
66
  end
@@ -76,7 +73,7 @@ describe HammerCLIForeman::Model do
76
73
  context "parameters" do
77
74
  it_should_accept "name", ["--name=model"]
78
75
  it_should_accept "id", ["--id=1"]
79
- it_should_fail_with "name or id missing", []
76
+ # it_should_fail_with "name or id missing", [] # TODO: temporarily disabled, parameters are checked in the id resolver
80
77
  end
81
78
 
82
79
  end
@@ -89,8 +86,9 @@ describe HammerCLIForeman::Model do
89
86
  context "parameters" do
90
87
  it_should_accept "name", ["--name=model", "--new-name=model2", "--info=description", "--vendor-class=class", "--hardware-model=model"]
91
88
  it_should_accept "id", ["--id=1", "--new-name=model2", "--info=description", "--vendor-class=class", "--hardware-model=model"]
92
- it_should_fail_with "no params", []
93
- it_should_fail_with "name or id missing", ["--new-name=model2", "--info=description", "--vendor-class=class", "--hardware-model=model"]
89
+ # it_should_fail_with "no params", []
90
+ # it_should_fail_with "name or id missing", ["--new-name=model2", "--info=description", "--vendor-class=class", "--hardware-model=model"]
91
+ # TODO: temporarily disabled, parameters are checked in the id resolver
94
92
  end
95
93
 
96
94
  end
@@ -4,11 +4,7 @@ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
4
4
 
5
5
  describe HammerCLIForeman::OperatingSystem do
6
6
 
7
- extend CommandTestHelper
8
-
9
- before :each do
10
- cmd.stubs(:name_to_id).returns(1)
11
- end
7
+ include CommandTestHelper
12
8
 
13
9
  context "ListCommand" do
14
10
 
@@ -27,7 +23,7 @@ describe HammerCLIForeman::OperatingSystem do
27
23
  let(:expected_record_count) { cmd.resource.call(:index).length }
28
24
 
29
25
  it_should_print_n_records
30
- it_should_print_column "Name"
26
+ it_should_print_column "Full name"
31
27
  it_should_print_column "Id"
32
28
  it_should_print_column "Release name"
33
29
  it_should_print_column "Family"
@@ -40,13 +36,9 @@ describe HammerCLIForeman::OperatingSystem do
40
36
 
41
37
  let(:cmd) { HammerCLIForeman::OperatingSystem::InfoCommand.new("", ctx) }
42
38
 
43
- before :each do
44
- HammerCLIForeman::Parameter.stubs(:get_parameters).returns([])
45
- end
46
-
47
39
  context "parameters" do
48
40
  it_should_accept "id", ["--id=1"]
49
- it_should_fail_with "no arguments"
41
+ # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
50
42
  end
51
43
 
52
44
  context "output" do
@@ -54,12 +46,15 @@ describe HammerCLIForeman::OperatingSystem do
54
46
  it_should_print_n_records 1
55
47
  it_should_print_column "Name"
56
48
  it_should_print_column "Id"
49
+ it_should_print_column "Major version"
50
+ it_should_print_column "Minor version"
57
51
  it_should_print_column "Release name"
58
52
  it_should_print_column "Family"
59
53
  it_should_print_column "Installation media"
60
54
  it_should_print_column "Architectures"
61
55
  it_should_print_column "Partition tables"
62
- it_should_print_column "Config templates"
56
+ it_should_print_column "Templates"
57
+ it_should_print_column "Default templates"
63
58
  it_should_print_column "Parameters"
64
59
  end
65
60
  end
@@ -73,7 +68,8 @@ describe HammerCLIForeman::OperatingSystem do
73
68
 
74
69
  context "parameters" do
75
70
  it_should_accept "name, major, minor, family, release name", ["--name=media", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
76
- it_should_fail_with "name missing", ["--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
71
+ # it_should_fail_with "name missing", ["--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
72
+ # TODO: temporarily disabled, parameters are checked in the api
77
73
  end
78
74
 
79
75
  with_params ["--name=os", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"] do
@@ -88,7 +84,8 @@ describe HammerCLIForeman::OperatingSystem do
88
84
 
89
85
  context "parameters" do
90
86
  it_should_accept "id", ["--id=1"]
91
- it_should_fail_with "name or id missing", []
87
+ # it_should_fail_with "name or id missing", [] # TODO: temporarily disabled, parameters are checked in the id resolver
88
+ # TODO: temporarily disabled, parameters are checked in the id resolver
92
89
  end
93
90
 
94
91
  end
@@ -101,8 +98,9 @@ describe HammerCLIForeman::OperatingSystem do
101
98
  context "parameters" do
102
99
  it_should_accept "id", ["--id=1"]
103
100
  it_should_accept "name, major, minor, family, release name", ["--id=83", "--name=os", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
104
- it_should_fail_with "no params", []
105
- it_should_fail_with "label or id missing", ["--name=os", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
101
+ # it_should_fail_with "no params", []
102
+ # it_should_fail_with "label or id missing", ["--name=os", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"]
103
+ # TODO: temporarily disabled, parameters are checked in the id resolver
106
104
  end
107
105
 
108
106
  with_params ["--id=83", "--name=os", "--major=1", "--minor=2", "--family=Red Hat", "--release-name=awesome"] do
@@ -121,10 +119,11 @@ describe HammerCLIForeman::OperatingSystem do
121
119
  let(:cmd) { HammerCLIForeman::OperatingSystem::SetParameterCommand.new("", ctx) }
122
120
 
123
121
  context "parameters" do
124
- it_should_accept "name, value and os id", ["--name=domain", "--value=val", "--os-id=id"]
125
- it_should_fail_with "name missing", ["--value=val", "--os-id=id"]
126
- it_should_fail_with "value missing", ["--name=name", "--os-id=id"]
127
- it_should_fail_with "os id missing", ["--name=name", "--value=val"]
122
+ it_should_accept "name, value and os id", ["--name=domain", "--value=val", "--operatingsystem-id=id"]
123
+ # it_should_fail_with "name missing", ["--value=val", "--operatingsystem-id=id"]
124
+ # it_should_fail_with "value missing", ["--name=name", "--operatingsystem-id=id"]
125
+ # it_should_fail_with "os id missing", ["--name=name", "--value=val"]
126
+ # TODO: temporarily disabled, parameters are checked in the id resolver
128
127
  end
129
128
 
130
129
  end
@@ -135,9 +134,10 @@ describe HammerCLIForeman::OperatingSystem do
135
134
  let(:cmd) { HammerCLIForeman::OperatingSystem::DeleteParameterCommand.new("", ctx) }
136
135
 
137
136
  context "parameters" do
138
- it_should_accept "name and os id", ["--name=domain", "--os-id=id"]
139
- it_should_fail_with "name missing", ["--os-id=id"]
140
- it_should_fail_with "os id missing", ["--name=name"]
137
+ it_should_accept "name and os id", ["--name=domain", "--operatingsystem-id=id"]
138
+ # it_should_fail_with "name missing", ["--operatingsystem-id=id"]
139
+ # it_should_fail_with "os id missing", ["--name=name"]
140
+ # TODO: temporarily disabled, parameters are checked in the id resolver
141
141
  end
142
142
 
143
143
  end
@@ -5,13 +5,9 @@ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
5
5
 
6
6
  describe HammerCLIForeman::Organization do
7
7
 
8
- extend CommandTestHelper
8
+ include CommandTestHelper
9
9
  extend ResourceDisabled
10
10
 
11
- before :each do
12
- cmd.stubs(:name_to_id).returns(1)
13
- end
14
-
15
11
  context "ListCommand" do
16
12
 
17
13
  before :each do
@@ -48,7 +44,7 @@ describe HammerCLIForeman::Organization do
48
44
  context "parameters" do
49
45
  it_should_accept "id", ["--id=1"]
50
46
  it_should_accept "name", ["--name=arch"]
51
- it_should_fail_with "no arguments"
47
+ # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
52
48
  end
53
49
 
54
50
  context "output" do
@@ -73,7 +69,8 @@ describe HammerCLIForeman::Organization do
73
69
 
74
70
  context "parameters" do
75
71
  it_should_accept "name", ["--name=org"]
76
- it_should_fail_with "name missing", []
72
+ # it_should_fail_with "name missing", []
73
+ # TODO: temporarily disabled, parameters are checked in the api
77
74
  end
78
75
 
79
76
  with_params ["--name=org"] do
@@ -89,7 +86,9 @@ describe HammerCLIForeman::Organization do
89
86
  context "parameters" do
90
87
  it_should_accept "name", ["--name=org"]
91
88
  it_should_accept "id", ["--id=1"]
92
- it_should_fail_with "name or id missing", []
89
+
90
+ # it_should_fail_with "name or id missing", []
91
+ # TODO: temporarily disabled, parameters are checked in the id resolver
93
92
  end
94
93
 
95
94
  with_params ["--id=1"] do
@@ -105,8 +104,8 @@ describe HammerCLIForeman::Organization do
105
104
  context "parameters" do
106
105
  it_should_accept "name", ["--name=org", "--new-name=org2"]
107
106
  it_should_accept "id", ["--id=1", "--new-name=org2"]
108
- it_should_fail_with "no params", []
109
- it_should_fail_with "name or id missing", ["--new-name=org2"]
107
+ # it_should_fail_with "no params", [] # TODO: temporarily disabled, parameters are checked in the id resolver
108
+ # it_should_fail_with "name or id missing", ["--new-name=org2"] # TODO: temporarily disabled, parameters are checked in the id resolver
110
109
  end
111
110
 
112
111
  with_params ["--id=1"] do
@@ -1,34 +1,147 @@
1
1
  require File.join(File.dirname(__FILE__), '../test_helper')
2
2
 
3
- describe HammerCLIForeman::Output::Formatters::OSNameFormatter do
4
- it "formats the os name" do
5
- formatter = HammerCLIForeman::Output::Formatters::OSNameFormatter.new
6
- formatter.format({ :name => 'OS', :major => '1', :minor => '2' }).must_equal 'OS 1.2'
3
+
4
+ describe HammerCLIForeman::Output::Formatters::SingleReferenceFormatter do
5
+
6
+ let(:formatter) { HammerCLIForeman::Output::Formatters::SingleReferenceFormatter.new }
7
+ let(:reference) do
8
+ {
9
+ :server_id => 1,
10
+ :server_name => 'Server',
11
+ }
7
12
  end
8
- it "formats the os name with only major version" do
9
- formatter = HammerCLIForeman::Output::Formatters::OSNameFormatter.new
10
- formatter.format({ :name => 'Fedora', :major => '19'}).must_equal 'Fedora 19'
13
+
14
+ let(:reference_str_keys) do
15
+ reference.inject({}) do |new_ref, (key, value)|
16
+ new_ref.update(key.to_s => value)
17
+ end
11
18
  end
12
19
 
13
- it "recovers when os is nil" do
14
- formatter = HammerCLIForeman::Output::Formatters::OSNameFormatter.new
15
- formatter.format(nil).must_equal nil
20
+ context "with symbol keys" do
21
+ it "formats name" do
22
+ options = {:key => :server}
23
+ formatter.format(reference, options).must_equal 'Server'
24
+ end
25
+
26
+ it "formats id" do
27
+ options = {:key => :server, :context => {:show_ids => true}}
28
+ formatter.format(reference, options).must_equal 'Server (id: 1)'
29
+ end
30
+ end
31
+
32
+ context "with string keys" do
33
+ it "formats name" do
34
+ options = {:key => :server}
35
+ formatter.format(reference_str_keys, options).must_equal 'Server'
36
+ end
37
+
38
+ it "formats id" do
39
+ options = {:key => :server, :context => {:show_ids => true}}
40
+ formatter.format(reference_str_keys, options).must_equal 'Server (id: 1)'
41
+ end
16
42
  end
43
+
17
44
  end
18
45
 
19
- describe HammerCLIForeman::Output::Formatters::ServerFormatter do
20
- it "formats the server" do
21
- formatter = HammerCLIForeman::Output::Formatters::ServerFormatter.new
22
- formatter.format({ :name => 'Server', :url => "URL"}).must_equal 'Server (URL)'
46
+ describe HammerCLIForeman::Output::Formatters::ReferenceFormatter do
47
+
48
+ let(:formatter) { HammerCLIForeman::Output::Formatters::ReferenceFormatter.new }
49
+ let(:reference) do
50
+ {
51
+ :id => 1,
52
+ :another_id => 2,
53
+ :name => 'Server',
54
+ :another_name => 'SERVER',
55
+ :url => "URL",
56
+ :desc => "Description"
57
+ }
23
58
  end
24
59
 
25
- it "formats the server" do
26
- formatter = HammerCLIForeman::Output::Formatters::ServerFormatter.new
27
- formatter.format({ 'name' => 'Server', 'url' => "URL"}).must_equal 'Server (URL)'
60
+
61
+ it "recovers when the resource is missing" do
62
+ formatter.format(nil).must_equal ''
28
63
  end
29
64
 
30
- it "recovers when server is nil" do
31
- formatter = HammerCLIForeman::Output::Formatters::ServerFormatter.new
32
- formatter.format(nil).must_equal nil
65
+ context "with symbol keys" do
66
+ let(:reference_sym_keys) do
67
+ reference
68
+ end
69
+
70
+ it "formats name" do
71
+ formatter.format(reference_sym_keys, {}).must_equal 'Server'
72
+ end
73
+
74
+ it "can override name key" do
75
+ options = {:name_key => :another_name}
76
+ formatter.format(reference_sym_keys, options).must_equal 'SERVER'
77
+ end
78
+
79
+ it "formats id" do
80
+ options = {:context => {:show_ids => true}}
81
+ formatter.format(reference_sym_keys, options).must_equal 'Server (id: 1)'
82
+ end
83
+
84
+ it "can override id key" do
85
+ options = {:id_key => :another_id, :context => {:show_ids => true}}
86
+ formatter.format(reference_sym_keys, options).must_equal 'Server (id: 2)'
87
+ end
88
+
89
+ it "formats details" do
90
+ options = {:details => :url}
91
+ formatter.format(reference_sym_keys, options).must_equal 'Server (URL)'
92
+ end
93
+
94
+ it "formats multiple details" do
95
+ options = {:details => [:url, :desc]}
96
+ formatter.format(reference_sym_keys, options).must_equal 'Server (URL, Description)'
97
+ end
98
+
99
+ it "formats details and id" do
100
+ options = {:context => {:show_ids => true}, :details => [:url, :desc]}
101
+ formatter.format(reference_sym_keys, options).must_equal 'Server (URL, Description, id: 1)'
102
+ end
33
103
  end
104
+
105
+ context "with string keys" do
106
+ let(:reference_str_keys) do
107
+ reference.inject({}) do |new_ref, (key, value)|
108
+ new_ref.update(key.to_s => value)
109
+ end
110
+ end
111
+
112
+ it "formats name" do
113
+ formatter.format(reference_str_keys, {}).must_equal 'Server'
114
+ end
115
+
116
+ it "can override name key" do
117
+ options = {:name_key => :another_name}
118
+ formatter.format(reference_str_keys, options).must_equal 'SERVER'
119
+ end
120
+
121
+ it "formats id" do
122
+ options = {:context => {:show_ids => true}}
123
+ formatter.format(reference_str_keys, options).must_equal 'Server (id: 1)'
124
+ end
125
+
126
+ it "can override id key" do
127
+ options = {:id_key => :another_id, :context => {:show_ids => true}}
128
+ formatter.format(reference_str_keys, options).must_equal 'Server (id: 2)'
129
+ end
130
+
131
+ it "formats details" do
132
+ options = {:details => :url}
133
+ formatter.format(reference_str_keys, options).must_equal 'Server (URL)'
134
+ end
135
+
136
+ it "formats multiple details" do
137
+ options = {:details => [:url, :desc]}
138
+ formatter.format(reference_str_keys, options).must_equal 'Server (URL, Description)'
139
+ end
140
+
141
+ it "formats details and id" do
142
+ options = {:context => {:show_ids => true}, :details => [:url, :desc]}
143
+ formatter.format(reference_str_keys, options).must_equal 'Server (URL, Description, id: 1)'
144
+ end
145
+ end
146
+
34
147
  end