spec/integration/variables_spec.rb in gooddata-0.6.49 vs spec/integration/variables_spec.rb in gooddata-0.6.50

- old
+ new

@@ -1,47 +1,48 @@ # encoding: UTF-8 # -# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved. +# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved. # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. require 'gooddata' describe "Variables implementation", :constraint => 'slow' do before(:all) do @spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true) - @client = ConnectionHelper::create_default_connection + @client = ConnectionHelper.create_default_connection blueprint = GoodData::Model::ProjectBlueprint.new(@spec) @project = @client.create_project_from_blueprint(blueprint, :token => ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT) @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN) @label = GoodData::Attribute.find_first_by_title('Dev', client: @client, project: @project).label_by_name('email') commits_data = [ - ["lines_changed","committed_on","dev_id","repo_id"], - [1,"01/01/2014",1,1], - [3,"01/02/2014",2,2], - [5,"05/02/2014",3,1]] + %w(lines_changed committed_on dev_id repo_id), + [1, "01/01/2014", 1, 1], + [3, "01/02/2014", 2, 2], + [5, "05/02/2014", 3, 1] + ] @project.upload(commits_data, blueprint, 'dataset.commits') - + devs_data = [ - ["dev_id", "email"], + %w(dev_id email), [1, "tomas@gooddata.com"], [2, "petr@gooddata.com"], - [3, "jirka@gooddata.com"]] + [3, "jirka@gooddata.com"] + ] @project.upload(devs_data, blueprint, 'dataset.devs') - - @variable = @project.create_variable(title: 'uaaa', attribute: @label.attribute).save + @variable = @project.create_variable(title: 'uaaa', attribute: @label.attribute).save end after(:all) do @project.delete if @project end after(:each) do - @variable.user_values.select {|x| x.level == :user}.pmap &:delete + @variable.user_values.select { |x| x.level == :user }.pmap(&:delete) end it "should create a variable filter" do filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com', 'jirka@gooddata.com']] @@ -49,18 +50,18 @@ # [jirka@gooddata.com | petr@gooddata.com | tomas@gooddata.com] # [5.0 | 3.0 | 1.0 ] @project.add_variable_permissions(filters, @variable) r = @project.compute_report(left: [metric], top: [@label.attribute], filters: [@variable]) - r.include_column?(['tomas@gooddata.com', 1]).should == true - r.include_column?(['jirka@gooddata.com', 5]).should == true - r.include_column?(['petr@gooddata.com', 3]).should == false + expect(r.include_column?(['tomas@gooddata.com', 1])).to be_truthy + expect(r.include_column?(['jirka@gooddata.com', 5])).to be_truthy + expect(r.include_column?(['petr@gooddata.com', 3])).to be_falsy r = @project.compute_report(left: [metric], top: [@label.attribute]) - r.include_column?(['tomas@gooddata.com', 1]).should == true - r.include_column?(['jirka@gooddata.com', 5]).should == true - r.include_column?(['petr@gooddata.com', 3]).should == true + expect(r.include_column?(['tomas@gooddata.com', 1])).to be_truthy + expect(r.include_column?(['jirka@gooddata.com', 5])).to be_truthy + expect(r.include_column?(['petr@gooddata.com', 3])).to be_truthy end it "should fail when asked to set a user not in project. No filters should be set up." do filters = [ ['nonexistent_user@gooddata.com', @label.uri, "tomas@gooddata.com"], @@ -77,43 +78,44 @@ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"] ] @project.add_variable_permissions(filters, @variable) expect(@variable.user_values.count).to eq 1 end - + it "should pass and set only users that are in the projects if asked" do filters = [ ['nonexistent_user@gooddata.com', @label.uri, 'tomas@gooddata.com'], [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com'] ] @project.add_variable_permissions(filters, @variable, users_must_exist: false) expect(@variable.user_values.count).to eq 1 end - + it "should fail when asked to set a value not in the proejct" do filters = [ [ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'tomas@gooddata.com'], - [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com']] + [ConnectionHelper::DEFAULT_USERNAME, @label.uri, 'tomas@gooddata.com'] + ] expect do @project.add_variable_permissions(filters, @variable) end.to raise_error expect(@variable.user_values.count).to eq 0 end - + it "should add a filter with nonexistent values when asked" do filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, '%^&*( nonexistent value', 'jirka@gooddata.com']] @project.add_variable_permissions(filters, @variable, ignore_missing_values: true) - - expect(@variable.user_values.pmap {|m| m.pretty_expression}).to eq ["[Dev] IN ([jirka@gooddata.com])"] + + expect(@variable.user_values.pmap(&:pretty_expression)).to eq ["[Dev] IN ([jirka@gooddata.com])"] expect(@variable.user_values.count).to eq 1 end it "should be able to print data permissions in a human readable form" do filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com"]] @project.add_variable_permissions(filters, @variable) perms = @variable.user_values - pretty = perms.pmap {|f| [f.related.login, f.pretty_expression]} + pretty = perms.pmap { |f| [f.related.login, f.pretty_expression] } expect(perms.first.related).to eq @client.user expect(pretty).to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]] end it "sets up mandatory users based on the state given as an end state by default." do @@ -122,31 +124,31 @@ filters = [ [user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"] ] @project.add_variable_permissions(filters, @variable) - expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] }) + expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] }) .to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]] # Now let's add user filter to a different user. If we do not explicitely state that # user_with_already_set_up_filter should keep his filter it will be removed another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME } @project.add_user(another_user, 'Admin', domain: @domain) new_filters = [ [another_user.login, @label.uri, "tomas@gooddata.com"] ] @project.add_variable_permissions(new_filters, @variable) - expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] }) + expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] }) .to eq [[another_user.login, "[Dev] IN ([tomas@gooddata.com])"]] end it "should set up false if all values are nonexistent" do - metric = GoodData::Fact.find_first_by_title('Lines Changed', client: @client, project: @project).create_metric + # metric = GoodData::Fact.find_first_by_title('Lines Changed', client: @client, project: @project).create_metric filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "NONEXISTENT1", "NONEXISTENT2", "NONEXISTENT3"]] @project.add_variable_permissions(filters, @variable, ignore_missing_values: true) # expect(metric.execute).to eq 9 - expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] }) + expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] }) .to eq [[ConnectionHelper::DEFAULT_USERNAME, "TRUE"]] @project.add_variable_permissions(filters, @variable, ignore_missing_values: true, restrict_if_missing_all_values: true) # expect(metric.execute).to eq nil expect(@variable.user_values.count).to eq 0 @@ -158,25 +160,25 @@ filters = [ [user_with_already_set_up_filter.login, @label.uri, "tomas@gooddata.com"] ] @project.add_variable_permissions(filters, @variable) - expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] }) + expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] }) .to eq [[ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"]] # Now let's add user filter to a different user. If we do not explicitely state that # user_with_already_set_up_filter should keep his filter it will be removed another_user = @domain.users.find { |u| u.login != ConnectionHelper::DEFAULT_USERNAME } @project.add_user(another_user, 'Admin', domain: @domain) new_filters = [ [another_user.login, @label.uri, "tomas@gooddata.com"] ] @project.add_variable_permissions(new_filters, @variable, do_not_touch_filters_that_are_not_mentioned: true) - expect(@variable.user_values.map {|f| [f.related.login, f.pretty_expression] }) + expect(@variable.user_values.map { |f| [f.related.login, f.pretty_expression] }) .to include([ConnectionHelper::DEFAULT_USERNAME, "[Dev] IN ([tomas@gooddata.com])"], [another_user.login, "[Dev] IN ([tomas@gooddata.com])"]) end - it "should be able to update the filter value in place" do + it "should be able to update the filter value in place", broken: true do pending 'FIXME: We cannot swap filters yet' filters = [[ConnectionHelper::DEFAULT_USERNAME, @label.uri, "tomas@gooddata.com", "jirka@gooddata.com"]] @project.add_variable_permissions(filters, @variable) perm = @variable.user_values.first