Skip to content

Commit

Permalink
refs #4126 added another test to make sure user settings do not overw…
Browse files Browse the repository at this point in the history
…rite each other
  • Loading branch information
tsteur committed Oct 24, 2013
1 parent f88d96d commit ac87e01
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 2 deletions.
1 change: 1 addition & 0 deletions core/Plugin/Settings.php
Expand Up @@ -116,6 +116,7 @@ public function removeAllPluginSettings()
Piwik::checkUserIsSuperUser();

Option::delete($this->getOptionKey());
$this->settingsValues = array();
}

/**
Expand Down
61 changes: 59 additions & 2 deletions tests/PHPUnit/Core/Plugin/SettingsTest.php
Expand Up @@ -490,9 +490,66 @@ public function test_userSetting_shouldGenerateDifferentKey_ThenSystemSetting()
$this->assertEquals('myname#superUserLogin#', $user->getKey());
}

private function buildUserSetting($name, $title)
public function test_userSetting_shouldGenerateDifferentKey_ForDifferentUsers()
{
return new \Piwik\Settings\UserSetting($name, $title);
$this->setSuperUser();

$user1 = $this->buildUserSetting('myname', 'mytitle', 'user1');
$user2 = $this->buildUserSetting('myname', 'mytitle', '_user2_');
$user3 = $this->buildUserSetting('myname', 'mytitle');

$this->assertEquals('myname#user1#', $user1->getKey());
$this->assertEquals('myname#_user2_#', $user2->getKey());
$this->assertEquals('myname#superUserLogin#', $user3->getKey());
}

public function test_userSetting_shouldSaveValuesPerUser()
{
$this->setSuperUser();
$user1Login = 'user1';
$user2Login = '_user2_';
$user3Login = null; // current loggged in user

$user = $this->buildUserSetting('myuser', 'mytitle', $user1Login);

$this->settings->addSetting($user);

$this->settings->setSettingValue($user, '111');
$user->setUserLogin($user2Login);
$this->settings->setSettingValue($user, '222');
$user->setUserLogin($user3Login);
$this->settings->setSettingValue($user, '333');

$user->setUserLogin($user1Login);
$this->assertSettingHasValue($user, '111');
$user->setUserLogin($user2Login);
$this->assertSettingHasValue($user, '222');
$user->setUserLogin($user3Login);
$this->assertSettingHasValue($user, '333');

$user->setUserLogin($user2Login);
$this->settings->removeSettingValue($user);

$user->setUserLogin($user1Login);
$this->assertSettingHasValue($user, '111');
$user->setUserLogin($user2Login);
$this->assertSettingHasValue($user, null);
$user->setUserLogin($user3Login);
$this->assertSettingHasValue($user, '333');

$this->settings->removeAllPluginSettings();

$user->setUserLogin($user1Login);
$this->assertSettingHasValue($user, null);
$user->setUserLogin($user2Login);
$this->assertSettingHasValue($user, null);
$user->setUserLogin($user3Login);
$this->assertSettingHasValue($user, null);
}

private function buildUserSetting($name, $title, $userLogin = null)
{
return new \Piwik\Settings\UserSetting($name, $title, $userLogin);
}

private function buildSystemSetting($name, $title)
Expand Down

0 comments on commit ac87e01

Please sign in to comment.