com.google.gerrit.acceptance.api.accounts.GeneralPreferencesIT.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gerrit.acceptance.api.accounts.GeneralPreferencesIT.java

Source

// Copyright (C) 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.gerrit.acceptance.api.accounts;

import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.acceptance.AssertUtil.assertPrefs;

import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.Sandboxed;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DateFormat;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DefaultBase;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DiffView;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DownloadCommand;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailFormat;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailStrategy;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.ReviewCategoryStrategy;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.TimeFormat;
import com.google.gerrit.extensions.client.MenuItem;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.config.AllUsersName;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.HashMap;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

@NoHttpd
@Sandboxed
public class GeneralPreferencesIT extends AbstractDaemonTest {
    @Inject
    private AllUsersName allUsers;

    private TestAccount user42;

    @Before
    public void setUp() throws Exception {
        String name = name("user42");
        user42 = accounts.create(name, name + "@example.com", "User 42");
    }

    @After
    public void cleanUp() throws Exception {
        gApi.accounts().id(user42.getId().toString()).setPreferences(GeneralPreferencesInfo.defaults());

        try (Repository git = repoManager.openRepository(allUsers)) {
            if (git.exactRef(RefNames.REFS_USERS_DEFAULT) != null) {
                RefUpdate u = git.updateRef(RefNames.REFS_USERS_DEFAULT);
                u.setForceUpdate(true);
                assertThat(u.delete()).isEqualTo(RefUpdate.Result.FORCED);
            }
        }
        accountCache.evictAll();
    }

    @Test
    public void getAndSetPreferences() throws Exception {
        GeneralPreferencesInfo o = gApi.accounts().id(user42.id.toString()).getPreferences();
        assertPrefs(o, GeneralPreferencesInfo.defaults(), "my", "changeTable");
        assertThat(o.my).hasSize(7);
        assertThat(o.changeTable).isEmpty();

        GeneralPreferencesInfo i = GeneralPreferencesInfo.defaults();

        // change all default values
        i.changesPerPage *= -1;
        i.showSiteHeader ^= true;
        i.useFlashClipboard ^= true;
        i.downloadCommand = DownloadCommand.REPO_DOWNLOAD;
        i.dateFormat = DateFormat.US;
        i.timeFormat = TimeFormat.HHMM_24;
        i.emailStrategy = EmailStrategy.DISABLED;
        i.emailFormat = EmailFormat.PLAINTEXT;
        i.defaultBaseForMerges = DefaultBase.AUTO_MERGE;
        i.expandInlineDiffs ^= true;
        i.highlightAssigneeInChangeTable ^= true;
        i.relativeDateInChangeTable ^= true;
        i.sizeBarInChangeTable ^= true;
        i.legacycidInChangeTable ^= true;
        i.muteCommonPathPrefixes ^= true;
        i.signedOffBy ^= true;
        i.reviewCategoryStrategy = ReviewCategoryStrategy.ABBREV;
        i.diffView = DiffView.UNIFIED_DIFF;
        i.my = new ArrayList<>();
        i.my.add(new MenuItem("name", "url"));
        i.changeTable = new ArrayList<>();
        i.changeTable.add("Status");
        i.urlAliases = new HashMap<>();
        i.urlAliases.put("foo", "bar");

        o = gApi.accounts().id(user42.getId().toString()).setPreferences(i);
        assertPrefs(o, i, "my");
        assertThat(o.my).hasSize(1);
        assertThat(o.changeTable).hasSize(1);
    }

    @Test
    public void getPreferencesWithConfiguredDefaults() throws Exception {
        GeneralPreferencesInfo d = GeneralPreferencesInfo.defaults();
        int newChangesPerPage = d.changesPerPage * 2;
        GeneralPreferencesInfo update = new GeneralPreferencesInfo();
        update.changesPerPage = newChangesPerPage;
        gApi.config().server().setDefaultPreferences(update);

        GeneralPreferencesInfo o = gApi.accounts().id(user42.getId().toString()).getPreferences();

        // assert configured defaults
        assertThat(o.changesPerPage).isEqualTo(newChangesPerPage);

        // assert hard-coded defaults
        assertPrefs(o, d, "my", "changeTable", "changesPerPage");
    }

    @Test
    public void overwriteConfiguredDefaults() throws Exception {
        GeneralPreferencesInfo d = GeneralPreferencesInfo.defaults();
        int configuredChangesPerPage = d.changesPerPage * 2;
        GeneralPreferencesInfo update = new GeneralPreferencesInfo();
        update.changesPerPage = configuredChangesPerPage;
        gApi.config().server().setDefaultPreferences(update);

        GeneralPreferencesInfo o = gApi.accounts().id(admin.getId().toString()).getPreferences();
        assertThat(o.changesPerPage).isEqualTo(configuredChangesPerPage);
        assertPrefs(o, d, "my", "changeTable", "changesPerPage");

        int newChangesPerPage = configuredChangesPerPage * 2;
        GeneralPreferencesInfo i = new GeneralPreferencesInfo();
        i.changesPerPage = newChangesPerPage;
        GeneralPreferencesInfo a = gApi.accounts().id(admin.getId().toString()).setPreferences(i);
        assertThat(a.changesPerPage).isEqualTo(newChangesPerPage);
        assertPrefs(a, d, "my", "changeTable", "changesPerPage");

        a = gApi.accounts().id(admin.getId().toString()).getPreferences();
        assertThat(a.changesPerPage).isEqualTo(newChangesPerPage);
        assertPrefs(a, d, "my", "changeTable", "changesPerPage");

        // overwrite the configured default with original hard-coded default
        i = new GeneralPreferencesInfo();
        i.changesPerPage = d.changesPerPage;
        a = gApi.accounts().id(admin.getId().toString()).setPreferences(i);
        assertThat(a.changesPerPage).isEqualTo(d.changesPerPage);
        assertPrefs(a, d, "my", "changeTable", "changesPerPage");

        a = gApi.accounts().id(admin.getId().toString()).getPreferences();
        assertThat(a.changesPerPage).isEqualTo(d.changesPerPage);
        assertPrefs(a, d, "my", "changeTable", "changesPerPage");
    }
}