nowtv-test-utils 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3b1b4bbedc8fd9d81e245b14f5664c9b84878e1a82cf7ea7f4da8dc5f66062d1
4
+ data.tar.gz: 617fbaf389e522605ae7332c0febeedcee072dab4f01c2d8bd0590ec723ae79e
5
+ SHA512:
6
+ metadata.gz: b22c96cc00aaad20f7ee1b9d0b0bc4fe8288ce40f93e386d3ed80f458254509f55be2ed98b335876de28fdb3e7eab323c50d9dd8d0be19928037ea3bd99df8a6
7
+ data.tar.gz: aeba0bea4ac439327f31f33e1c4c3b47113f90f83e7afc144ddf3987bcbed26ea7bafc0f895fa0a1b80443c7adbc7d2e4b65a4f817dde314e6e217c834d848f8
@@ -0,0 +1,136 @@
1
+ module NowtvTestUtils
2
+ class Menu
3
+ def initialize(configurator, config_params)
4
+
5
+ @configurator = configurator
6
+ @env = config_params[:env]
7
+ @device = config_params[:device]
8
+ @platform = config_params[:platform]
9
+ @language = config_params[:language]
10
+ @territory = config_params[:territory]
11
+ @base_pcms_url = configurator['hosts'][@env]
12
+ @root_menu_url = @base_pcms_url + configurator['seamlessUrl']
13
+
14
+ puts "Env: #{@env} Device: #{@device} Platform: #{@platform } Lang: #{@language} Territory: #{@territory}"
15
+ end
16
+
17
+ def json_headers
18
+ headers = { 'X-SkyOTT-Proposition' => 'NOWTV',
19
+ 'X-SkyOTT-Language' => @language,
20
+ 'X-SkyOTT-Territory' => @territory,
21
+ 'X-SkyOTT-Platform' => @platform,
22
+ 'X-SkyOTT-Device' => @device }
23
+ headers
24
+ end
25
+
26
+ def root_menu_collection
27
+ RestHelper.get_from_api(@root_menu_url)
28
+ end
29
+
30
+ def root_menu_json
31
+ api_response(@root_menu_url)
32
+ end
33
+
34
+ def menu_json
35
+ root_menu_json['relationships']['items']['data']
36
+ end
37
+
38
+ def menu_titles
39
+ menu_json.map { |menu| menu['attributes']['title'] }
40
+ end
41
+
42
+ def sub_menu_titles(menu)
43
+ menu_item_json(menu)['relationships']['items']['data'].map { |menu| menu['attributes']['title'] }
44
+ end
45
+
46
+ def menu_item_json(menu)
47
+ menu_item_json = nil
48
+ menu_json.each do |collection|
49
+ if collection['attributes']['title'].casecmp(menu)==0
50
+ if collection['relationships'] && collection['relationships']['items']
51
+ menu_item_json = collection
52
+ end
53
+ end
54
+
55
+ end
56
+ menu_item_json
57
+ end
58
+
59
+ def catalogue_collections(link)
60
+ sub_catalogue_titles_collection = []
61
+ sub_collection_json = api_response(@base_pcms_url
62
+ .+ link + '?represent=(items)')
63
+ if sub_collection_json['type']=='CATALOGUE/GROUP'
64
+ # puts "Collection:==> #{sub_collection_json['attributes']['title']} is a GROUP"
65
+ sub_collection_json['relationships']['items']['data'].each do |sub_group|
66
+ sub_catalogue_titles_collection.concat(catalogue_collections(sub_group['links']['self']))
67
+ end
68
+ else
69
+ if sub_collection_json['relationships'] && sub_collection_json['relationships']['items']
70
+ sub_catalogue_titles_collection.concat(sub_collection_json['relationships']['items']['data'])
71
+ end
72
+ end
73
+ return sub_catalogue_titles_collection
74
+ end
75
+
76
+ def catalogue_group_json(menu)
77
+ menu_item_json = menu_item_json(menu)
78
+ puts "Getting all asset details for #{menu} menu...."
79
+ catalogue_collections(menu_item_json['links']['self'])
80
+ end
81
+
82
+ def catalogue_collection(menu)
83
+ menu_titles.each do |menu_title|
84
+ if menu_title.casecmp(menu) == 0
85
+ unless instance_variable_get("@catalogue_#{menu}_collection")
86
+ instance_variable_set("@catalogue_#{menu}_collection", catalogue_group_json(menu))
87
+ end
88
+ return instance_variable_get("@catalogue_#{menu}_collection")
89
+ end
90
+ end
91
+ end
92
+
93
+ def api_response(url)
94
+ RestHelper.get_from_api(url, json_headers)
95
+ end
96
+
97
+ def get_asset_details_using_title(menu, asset_title)
98
+ assets_in_catalogue = catalogue_collection(menu)
99
+ # puts assets_in_catalogue
100
+ asset = assets_in_catalogue.find {|e| e['attributes']['title'].casecmp(asset_title)==0}
101
+ if asset
102
+ return get_asset_details_from_nodeid(asset['id'])
103
+ else
104
+ return "No asset matched title #{asset_title}"
105
+ end
106
+ end
107
+
108
+ def get_asset_details_from_nodeid(node_id)
109
+ node_url = @configurator['node_url']
110
+ asset_details_from_api = api_response(@base_pcms_url+ node_url + node_id)
111
+ asset_details_from_api
112
+ end
113
+ end
114
+
115
+ def self.test_settings(config_type, config)
116
+ if config_type == "YML"
117
+ puts config
118
+ return (@test_settings ||= YAML.load_file(NowtvTestUtils.get_file_path(config)))
119
+ else
120
+ return (@test_settings ||= JSON.parse(File.read(NowtvTestUtils.get_file_path(config))))
121
+ end
122
+ end
123
+
124
+ def self.get_file_path(filename)
125
+ File.join(Dir.pwd, filename)
126
+ end
127
+
128
+ def self.menu_api_helper(config_type, config, config_params)
129
+ configurator = NowtvTestUtils.test_settings(config_type, config)
130
+ @menu_api_helper ||= NowtvTestUtils::Menu.new(configurator, config_params)
131
+ end
132
+ end
133
+
134
+ require 'nowtv-test-utils/rest_helper.rb'
135
+ require 'nowtv-test-utils/test'
136
+ require 'yaml'
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+ require 'rest-client'
3
+ require 'rspec'
4
+ require 'rspec/expectations'
5
+
6
+ class RestHelper
7
+ def self.get_from_api(url, json_headers, additional_headers = {})
8
+ headers = json_headers
9
+ headers.merge!(additional_headers)
10
+ begin
11
+ tries ||= 3
12
+ api_response = RestClient.get(url, headers) { |response, _request| response }
13
+ if api_response.code != 200
14
+ puts "ERROR in get_from_api: response code #{api_response.code}"
15
+ end
16
+ respo = JSON.parse(api_response)
17
+ rescue => e
18
+ puts 'RESCUE in get_from_api@'
19
+ puts e.message
20
+ puts "======="
21
+ if (tries -= 1) > 0
22
+ puts'RETRY REQUEST'
23
+ retry
24
+ else
25
+ puts'REQUEST FAILED 3 TIMES'
26
+ raise 'REST HELPER - get_from_api error'
27
+ end
28
+ end
29
+ respo
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ module NowtvTestUtils
2
+ class WhoIs
3
+ def self.awesome?
4
+ puts "PRIYA THINKS EVERYTHING AND EVERYONE IS AWESOME .......!!"
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nowtv-test-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sripriya Raghunatha
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-08-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: sripriya.raghunatha@sky.uk
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/nowtv-test-utils.rb
20
+ - lib/nowtv-test-utils/rest_helper.rb
21
+ - lib/nowtv-test-utils/test.rb
22
+ homepage:
23
+ licenses: []
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.7.7
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: nowtv-test-utils for sharing test code
45
+ test_files: []