gooddata 0.6.7 → 0.6.8

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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -1
  3. data/README.md +10 -2
  4. data/TODO.md +32 -0
  5. data/gooddata.gemspec +5 -0
  6. data/lib/gooddata.rb +4 -0
  7. data/lib/gooddata/app/app.rb +12 -0
  8. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +4 -3
  9. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +2 -1
  10. data/lib/gooddata/cli/commands/console_cmd.rb +23 -5
  11. data/lib/gooddata/cli/commands/domain_cmd.rb +9 -10
  12. data/lib/gooddata/cli/commands/process_cmd.rb +11 -9
  13. data/lib/gooddata/cli/commands/project_cmd.rb +25 -27
  14. data/lib/gooddata/cli/commands/projects_cmd.rb +2 -2
  15. data/lib/gooddata/cli/commands/run_ruby_cmd.rb +1 -1
  16. data/lib/gooddata/cli/commands/user_cmd.rb +2 -2
  17. data/lib/gooddata/cli/hooks.rb +4 -2
  18. data/lib/gooddata/cli/shared.rb +1 -1
  19. data/lib/gooddata/cli/terminal.rb +1 -1
  20. data/lib/gooddata/commands/api.rb +1 -1
  21. data/lib/gooddata/commands/auth.rb +4 -28
  22. data/lib/gooddata/commands/domain.rb +9 -4
  23. data/lib/gooddata/commands/process.rb +26 -23
  24. data/lib/gooddata/commands/project.rb +74 -50
  25. data/lib/gooddata/commands/projects.rb +3 -2
  26. data/lib/gooddata/commands/role.rb +9 -3
  27. data/lib/gooddata/commands/user.rb +6 -4
  28. data/lib/gooddata/connection.rb +11 -45
  29. data/lib/gooddata/core/logging.rb +0 -1
  30. data/lib/gooddata/core/project.rb +22 -22
  31. data/lib/gooddata/core/rest.rb +9 -8
  32. data/lib/gooddata/core/user.rb +0 -11
  33. data/lib/gooddata/exceptions/project_not_found.rb +1 -0
  34. data/lib/gooddata/extensions/enumerable.rb +10 -0
  35. data/lib/gooddata/extensions/hash.rb +25 -0
  36. data/lib/gooddata/goodzilla/goodzilla.rb +4 -4
  37. data/lib/gooddata/helper/class_helper.rb +1 -0
  38. data/lib/gooddata/helper/helpers.rb +8 -0
  39. data/lib/gooddata/helpers/auth_helpers.rb +41 -0
  40. data/lib/gooddata/mixins/author.rb +1 -1
  41. data/lib/gooddata/mixins/contributor.rb +1 -1
  42. data/lib/gooddata/mixins/data_property_reader.rb +2 -0
  43. data/lib/gooddata/mixins/data_property_writer.rb +2 -0
  44. data/lib/gooddata/mixins/inspector.rb +49 -0
  45. data/lib/gooddata/mixins/md_finders.rb +16 -8
  46. data/lib/gooddata/mixins/md_id_to_uri.rb +12 -4
  47. data/lib/gooddata/mixins/md_object_indexer.rb +15 -4
  48. data/lib/gooddata/mixins/md_object_query.rb +42 -20
  49. data/lib/gooddata/mixins/md_relations.rb +21 -12
  50. data/lib/gooddata/mixins/meta_getter.rb +2 -0
  51. data/lib/gooddata/mixins/meta_property_reader.rb +2 -0
  52. data/lib/gooddata/mixins/meta_property_writer.rb +2 -0
  53. data/lib/gooddata/mixins/rest_resource.rb +32 -10
  54. data/lib/gooddata/mixins/root_key_getter.rb +1 -1
  55. data/lib/gooddata/models/data_result.rb +3 -1
  56. data/lib/gooddata/models/domain.rb +31 -22
  57. data/lib/gooddata/models/empty_result.rb +22 -0
  58. data/lib/gooddata/models/invitation.rb +11 -9
  59. data/lib/gooddata/models/links.rb +5 -3
  60. data/lib/gooddata/models/membership.rb +23 -28
  61. data/lib/gooddata/models/metadata.rb +35 -35
  62. data/lib/gooddata/models/metadata/attribute.rb +10 -8
  63. data/lib/gooddata/models/metadata/dashboard.rb +1 -1
  64. data/lib/gooddata/models/metadata/fact.rb +3 -3
  65. data/lib/gooddata/models/metadata/label.rb +4 -4
  66. data/lib/gooddata/models/metadata/metric.rb +76 -38
  67. data/lib/gooddata/models/metadata/report.rb +52 -17
  68. data/lib/gooddata/models/metadata/report_definition.rb +178 -28
  69. data/lib/gooddata/models/model.rb +13 -6
  70. data/lib/gooddata/models/process.rb +93 -30
  71. data/lib/gooddata/models/profile.rb +18 -20
  72. data/lib/gooddata/models/project.rb +344 -127
  73. data/lib/gooddata/models/project_creator.rb +32 -22
  74. data/lib/gooddata/models/project_metadata.rb +26 -14
  75. data/lib/gooddata/models/project_role.rb +15 -17
  76. data/lib/gooddata/models/report_data_result.rb +4 -0
  77. data/lib/gooddata/models/schedule.rb +51 -20
  78. data/lib/gooddata/models/schema_blueprint.rb +9 -3
  79. data/lib/gooddata/rest/README.md +37 -0
  80. data/lib/gooddata/rest/client.rb +318 -0
  81. data/lib/gooddata/rest/connection.rb +235 -0
  82. data/lib/gooddata/rest/connections/connections.rb +8 -0
  83. data/lib/gooddata/rest/connections/dummy_connection.rb +52 -0
  84. data/lib/gooddata/rest/connections/rest_client_connection.rb +177 -0
  85. data/lib/gooddata/rest/object.rb +32 -0
  86. data/lib/gooddata/rest/object_factory.rb +67 -0
  87. data/lib/gooddata/rest/resource.rb +17 -0
  88. data/lib/gooddata/rest/rest.rb +20 -0
  89. data/lib/gooddata/version.rb +1 -1
  90. data/spec/data/cc/data/source/commits.csv +4 -0
  91. data/spec/data/cc/data/source/devs.csv +4 -0
  92. data/spec/data/cc/data/source/repos.csv +3 -0
  93. data/spec/data/cc/devel.prm +0 -0
  94. data/spec/data/cc/graph/graph.grf +11 -0
  95. data/spec/data/cc/workspace.prm +19 -0
  96. data/spec/data/hello_world_process/hello_world.rb +1 -0
  97. data/spec/data/hello_world_process/hello_world.zip +0 -0
  98. data/spec/data/users.csv +12 -12
  99. data/spec/helpers/connection_helper.rb +6 -0
  100. data/spec/helpers/process_helper.rb +12 -0
  101. data/spec/helpers/project_helper.rb +2 -2
  102. data/spec/integration/command_projects_spec.rb +11 -9
  103. data/spec/integration/create_from_template_spec.rb +6 -2
  104. data/spec/integration/full_process_schedule_spec.rb +49 -36
  105. data/spec/integration/full_project_spec.rb +221 -256
  106. data/spec/integration/partial_md_export_import_spec.rb +18 -17
  107. data/spec/logging_in_logging_out_spec.rb +17 -8
  108. data/spec/spec_helper.rb +4 -2
  109. data/spec/unit/cli/commands/cmd_api_spec.rb +1 -1
  110. data/spec/unit/cli/commands/cmd_auth_spec.rb +1 -1
  111. data/spec/unit/cli/commands/cmd_domain_spec.rb +29 -3
  112. data/spec/unit/cli/commands/cmd_process_spec.rb +1 -1
  113. data/spec/unit/cli/commands/cmd_project_spec.rb +1 -1
  114. data/spec/unit/cli/commands/cmd_role_spec.rb +13 -2
  115. data/spec/unit/cli/commands/cmd_run_ruby_spec.rb +1 -1
  116. data/spec/unit/cli/commands/cmd_scaffold_spec.rb +1 -1
  117. data/spec/unit/cli/commands/cmd_user_spec.rb +1 -1
  118. data/spec/unit/commands/command_api_spec.rb +0 -19
  119. data/spec/unit/commands/command_auth_spec.rb +20 -13
  120. data/spec/unit/commands/command_dataset_spec.rb +2 -2
  121. data/spec/unit/commands/command_process_spec.rb +24 -21
  122. data/spec/unit/commands/command_projects_spec.rb +2 -2
  123. data/spec/unit/commands/command_scaffold_spec.rb +2 -2
  124. data/spec/unit/commands/command_user_spec.rb +3 -3
  125. data/spec/unit/core/connection_spec.rb +9 -10
  126. data/spec/unit/core/project_spec.rb +8 -4
  127. data/spec/unit/core/rest_spec.rb +6 -6
  128. data/spec/unit/models/domain_spec.rb +14 -7
  129. data/spec/unit/models/invitation_spec.rb +2 -2
  130. data/spec/unit/models/membership_spec.rb +5 -5
  131. data/spec/unit/models/metric_spec.rb +92 -0
  132. data/spec/unit/models/profile_spec.rb +25 -21
  133. data/spec/unit/models/project_blueprint_spec.rb +6 -6
  134. data/spec/unit/models/project_role_spec.rb +3 -5
  135. data/spec/unit/models/project_spec.rb +43 -37
  136. data/spec/unit/models/schedule_spec.rb +58 -107
  137. data/spec/unit/rest/resource_spec.rb +6 -0
  138. metadata +87 -10
  139. data/lib/gooddata/cli/commands/role_cmd.rb +0 -28
  140. data/lib/gooddata/core/connection.rb +0 -392
  141. data/lib/gooddata/core/threaded.rb +0 -14
  142. data/lib/gooddata/models/md_object.rb +0 -25
  143. data/lib/gooddata/models/metadata/folder.rb +0 -24
  144. data/spec/unit/models/md_object_spec.rb +0 -55
  145. data/spec/unit/models/metric.rb +0 -92
@@ -1,24 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require_relative '../md_object'
4
-
5
- module GoodData
6
- module Model
7
- ##
8
- # Base class for GoodData attribute and fact folder abstractions
9
- #
10
- class Folder < MdObject
11
- def initialize(title)
12
- # TODO: should a super be here?
13
- # how to deal with name vs title?
14
- @title = title
15
- @name = GoodData::Helpers.sanitize_string(title)
16
- end
17
-
18
- def to_maql_create
19
- "CREATE FOLDER {#{type_prefix}.#{name}}" \
20
- + " VISUAL (#{visual}) TYPE #{type};\n"
21
- end
22
- end
23
- end
24
- end
@@ -1,55 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'gooddata/models/md_object'
4
-
5
- describe GoodData::Model::MdObject do
6
- TEST_TITLE = 'Test Title'
7
- TEST_NAME = 'Test Name'
8
-
9
- before(:each) do
10
- @instance = GoodData::Model::MdObject.new()
11
- @instance.title = TEST_TITLE
12
- @instance.name = TEST_NAME
13
- end
14
-
15
- describe '#initialize' do
16
- it 'Creates new instance' do
17
- @instance.should_not == nil
18
- @instance.should be_an_instance_of(GoodData::Model::MdObject)
19
- end
20
- end
21
-
22
- describe '#visual' do
23
- it 'Returns visual representation' do
24
- result = @instance.visual
25
- result.should_not == nil
26
- result.should be_an_instance_of(String)
27
- end
28
- end
29
-
30
- describe '#title_esc' do
31
- it 'Returns escaped title' do
32
- result = @instance.title_esc
33
- result.should_not == nil
34
- result.should be_an_instance_of(String)
35
- end
36
- end
37
-
38
- describe '#identifier' do
39
- it 'Returns identifier' do
40
- pending('GoodData::Model::MdObject::type_prefix is not defined')
41
-
42
- result = @instance.identifier
43
- result.should_not == nil
44
- result.should == be_an_instance_of(String)
45
- end
46
- end
47
-
48
- describe '#all' do
49
- it 'Throws an error. This is implemented on subclasses' do
50
- expect do
51
- GoodData::MdObject.all
52
- end.to raise_exception(NotImplementedError)
53
- end
54
- end
55
- end
@@ -1,92 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'gooddata/models/metadata/metric'
4
-
5
- describe GoodData::Metric do
6
-
7
- RAW_DATA2 = {'metric'=>
8
- {'content'=>
9
- {'format'=>'#,##0',
10
- 'expression'=> 'SELECT SUM([/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/700])'},
11
- 'meta' =>
12
- {'author'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
13
- 'uri'=>'/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/70',
14
- 'tags'=>'a b cg r t',
15
- 'created'=>'2014-04-30 22:47:57',
16
- 'identifier'=>'afo7bx1VakCz',
17
- 'deprecated'=>'0',
18
- 'summary'=>'',
19
- 'title'=>'sum of Lines changed',
20
- 'category'=>'metric',
21
- 'updated'=>'2014-05-05 20:00:42',
22
- 'contributor'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
23
-
24
- RAW_DATA3 = {'metric'=>
25
- {'content'=>
26
- {'format'=>'#,##0',
27
- 'expression'=> 'SELECT SUM([/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/710])'},
28
- 'meta' =>
29
- {'author'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
30
- 'uri'=>'/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/71',
31
- 'tags'=>'a b cg r t',
32
- 'created'=>'2014-04-30 22:47:57',
33
- 'identifier'=>'afo7bx1VakCz',
34
- 'deprecated'=>'0',
35
- 'summary'=>'',
36
- 'title'=>'sum of Lines changed',
37
- 'category'=>'metric',
38
- 'updated'=>'2014-05-05 20:00:42',
39
- 'contributor'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
40
-
41
- USED_METRIC = GoodData::Metric.new(RAW_DATA2)
42
- UNUSED_METRIC = GoodData::Metric.new(RAW_DATA3)
43
-
44
- RAW_DATA = {'metric'=>
45
- {'content'=>
46
- {'format'=>'#,##0',
47
- 'expression'=>
48
- "SELECT SUM([#{USED_METRIC.uri})"},
49
- 'meta'=>
50
- {'author'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
51
- 'uri'=>'/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/252',
52
- 'tags'=>'a b cg r t',
53
- 'created'=>'2014-04-30 22:47:57',
54
- 'identifier'=>'afo7bx1VakCz',
55
- 'deprecated'=>'0',
56
- 'summary'=>'',
57
- 'title'=>'sum of Lines changed',
58
- 'category'=>'metric',
59
- 'updated'=>'2014-05-05 20:00:42',
60
- 'contributor'=>'/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
61
-
62
- before(:each) do
63
- @instance = GoodData::Metric.new(RAW_DATA)
64
- end
65
-
66
- describe '#contain?' do
67
- it 'should say it contains a depending metric if it does' do
68
- @instance.contain?(USED_METRIC).should == true
69
- end
70
-
71
- it 'should say it contains a depending object which is given as a string if it does' do
72
- @instance.contain?(USED_METRIC).should == true
73
- end
74
-
75
- it 'should be able to replace an object if the object is used in the expression' do
76
- pending('resolve mutating constant if I init from it')
77
- end
78
-
79
- it 'should be able to return an expression of the metric' do
80
- @instance.expression.should == "SELECT SUM([#{USED_METRIC.uri})"
81
- end
82
-
83
- it 'should be able to replace an object if the object is used in the expression' do
84
- @instance.contain?(USED_METRIC).should == true
85
- @instance.contain?(UNUSED_METRIC).should == false
86
- @instance.replace(USED_METRIC, UNUSED_METRIC)
87
- @instance.contain?(USED_METRIC).should == false
88
- @instance.contain?(UNUSED_METRIC).should == true
89
- end
90
-
91
- end
92
- end