// Path: server/accounting/src/test/java/de/budgetfreak/accounting/AccountTestUtils.java
// public class AccountTestUtils {
// 
//     private AccountTestUtils() {
//     }
// 
//     public static List<Account> createAccounts(User user) {
//         return asList(createCheckingsAccount(user), createSavingsAccount(user));
//     }
// 
//     public static Account createCheckingsAccount(User user) {
//         return createAccount(1L, "Checkings", true, user);
//     }
// 
//     public static Account createSavingsAccount(User user) {
//         return createAccount(2L, "Savings", false, user);
//     }
// 
//     public static Account createAccount(long id, String description, boolean onBudget, User user) {
//         Account account = new Account(description, onBudget, user).setId(id);
//         return account;
//     }
// }
// 
// Path: server/accounting/src/test/java/de/budgetfreak/accounting/UserTestUtils.java
// public class UserTestUtils {
// 
//     private UserTestUtils() {
//     }
// 
//     public static List<User> createBobAndJane() {
//         return Arrays.asList(
//                 createBob(),
//                 createJane()
//         );
//     }
// 
//     public static User createJane() {
//         return createUser(2L, "Jane", "$");
//     }
// 
//     public static User createBob() {
//         return createUser(1L, "Bob", "€");
//     }
// 
//     public static User createUser(long id, String name, String currency) {
//         return new User().setId(id).setName(name).setCurrency(currency);
//     }
// }
// 
// Path: server/accounting/src/main/java/de/budgetfreak/accounting/domain/Account.java
// @Entity(name = "BF_ACCOUNT")
// public class Account {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "ID")
//     private Long id;
// 
//     @Column(name = "DESCRIPTION")
//     private String description;
// 
//     @Column(name = "ON_BUDGET")
//     private boolean onBudget;
// 
//     @ManyToOne(fetch = FetchType.LAZY)
//     @JoinColumn(name = "USER_ID")
//     private User user;
// 
//     public Account() {
//     }
// 
//     public Account(String description, boolean onBudget, User user) {
//         this.description = description;
//         this.onBudget = onBudget;
//         this.user = user;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public Account setId(Long id) {
//         this.id = id;
//         return this;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public Account setDescription(String description) {
//         this.description = description;
//         return this;
//     }
// 
//     public boolean isOnBudget() {
//         return onBudget;
//     }
// 
//     public Account setOnBudget(boolean onBudget) {
//         this.onBudget = onBudget;
//         return this;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public Account setUser(User user) {
//         this.user = user;
//         return this;
//     }
// }
// 
// Path: server/accounting/src/main/java/de/budgetfreak/accounting/domain/AccountRepository.java
// public interface AccountRepository extends JpaRepository<Account, Long> {
// 
//     List<Account> findByUserId(long userId);
// }
// 
// Path: server/user-management/src/main/java/de/budgetfreak/usermanagement/domain/User.java
// @Entity(name = "BF_USER")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "ID")
//     private Long id;
// 
//     @Column(name = "NAME")
//     private String name;
// 
//     @Column(name = "CURRENCY")
//     private String currency;
// 
//     public User() {
//     }
// 
//     public User(String name, String currency) {
//         this.name = name;
//         this.currency = currency;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public User setId(Long id) {
//         this.id = id;
//         return this;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public User setName(String name) {
//         this.name = name;
//         return this;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// 
//     public User setCurrency(String currency) {
//         this.currency = currency;
//         return this;
//     }
// }
// 
// Path: server/user-management/src/main/java/de/budgetfreak/usermanagement/domain/UserRepository.java
// @Repository
// public interface UserRepository extends JpaRepository<User, Long> {
// 
//     User findByName(String name);
// }


import de.budgetfreak.accounting.AccountTestUtils;
import de.budgetfreak.accounting.UserTestUtils;
import de.budgetfreak.accounting.domain.Account;
import de.budgetfreak.accounting.domain.AccountRepository;
import de.budgetfreak.usermanagement.domain.User;
import de.budgetfreak.usermanagement.domain.UserRepository;
import org.junit.Before;
import org.junit.Test;
import org.springframework.data.domain.Example;
import java.util.List;
import java.util.Optional;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
package de.budgetfreak.accounting.service;




public class AccountServiceTest {

    private AccountService testSubject;
    private AccountRepository accountRepositoryMock;
    private UserRepository userRepositoryMock;

    @Before
    public void setUp() {
        accountRepositoryMock = mock(AccountRepository.class);
        userRepositoryMock = mock(UserRepository.class);
        testSubject = new AccountService(accountRepositoryMock, userRepositoryMock);
    }

    @Test
    public void shouldListAccounts() {
// Path: server/accounting/src/test/java/de/budgetfreak/accounting/AccountTestUtils.java
// public class AccountTestUtils {
// 
//     private AccountTestUtils() {
//     }
// 
//     public static List<Account> createAccounts(User user) {
//         return asList(createCheckingsAccount(user), createSavingsAccount(user));
//     }
// 
//     public static Account createCheckingsAccount(User user) {
//         return createAccount(1L, "Checkings", true, user);
//     }
// 
//     public static Account createSavingsAccount(User user) {
//         return createAccount(2L, "Savings", false, user);
//     }
// 
//     public static Account createAccount(long id, String description, boolean onBudget, User user) {
//         Account account = new Account(description, onBudget, user).setId(id);
//         return account;
//     }
// }
// 
// Path: server/accounting/src/test/java/de/budgetfreak/accounting/UserTestUtils.java
// public class UserTestUtils {
// 
//     private UserTestUtils() {
//     }
// 
//     public static List<User> createBobAndJane() {
//         return Arrays.asList(
//                 createBob(),
//                 createJane()
//         );
//     }
// 
//     public static User createJane() {
//         return createUser(2L, "Jane", "$");
//     }
// 
//     public static User createBob() {
//         return createUser(1L, "Bob", "€");
//     }
// 
//     public static User createUser(long id, String name, String currency) {
//         return new User().setId(id).setName(name).setCurrency(currency);
//     }
// }
// 
// Path: server/accounting/src/main/java/de/budgetfreak/accounting/domain/Account.java
// @Entity(name = "BF_ACCOUNT")
// public class Account {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "ID")
//     private Long id;
// 
//     @Column(name = "DESCRIPTION")
//     private String description;
// 
//     @Column(name = "ON_BUDGET")
//     private boolean onBudget;
// 
//     @ManyToOne(fetch = FetchType.LAZY)
//     @JoinColumn(name = "USER_ID")
//     private User user;
// 
//     public Account() {
//     }
// 
//     public Account(String description, boolean onBudget, User user) {
//         this.description = description;
//         this.onBudget = onBudget;
//         this.user = user;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public Account setId(Long id) {
//         this.id = id;
//         return this;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public Account setDescription(String description) {
//         this.description = description;
//         return this;
//     }
// 
//     public boolean isOnBudget() {
//         return onBudget;
//     }
// 
//     public Account setOnBudget(boolean onBudget) {
//         this.onBudget = onBudget;
//         return this;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public Account setUser(User user) {
//         this.user = user;
//         return this;
//     }
// }
// 
// Path: server/accounting/src/main/java/de/budgetfreak/accounting/domain/AccountRepository.java
// public interface AccountRepository extends JpaRepository<Account, Long> {
// 
//     List<Account> findByUserId(long userId);
// }
// 
// Path: server/user-management/src/main/java/de/budgetfreak/usermanagement/domain/User.java
// @Entity(name = "BF_USER")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "ID")
//     private Long id;
// 
//     @Column(name = "NAME")
//     private String name;
// 
//     @Column(name = "CURRENCY")
//     private String currency;
// 
//     public User() {
//     }
// 
//     public User(String name, String currency) {
//         this.name = name;
//         this.currency = currency;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public User setId(Long id) {
//         this.id = id;
//         return this;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public User setName(String name) {
//         this.name = name;
//         return this;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// 
//     public User setCurrency(String currency) {
//         this.currency = currency;
//         return this;
//     }
// }
// 
// Path: server/user-management/src/main/java/de/budgetfreak/usermanagement/domain/UserRepository.java
// @Repository
// public interface UserRepository extends JpaRepository<User, Long> {
// 
//     User findByName(String name);
// }


// Path: server/accounting/src/test/java/de/budgetfreak/accounting/service/AccountServiceTest.java
import de.budgetfreak.accounting.AccountTestUtils;
import de.budgetfreak.accounting.UserTestUtils;
import de.budgetfreak.accounting.domain.Account;
import de.budgetfreak.accounting.domain.AccountRepository;
import de.budgetfreak.usermanagement.domain.User;
import de.budgetfreak.usermanagement.domain.UserRepository;
import org.junit.Before;
import org.junit.Test;
import org.springframework.data.domain.Example;
import java.util.List;
import java.util.Optional;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;

package de.budgetfreak.accounting.service;




public class AccountServiceTest {

    private AccountService testSubject;
    private AccountRepository accountRepositoryMock;
    private UserRepository userRepositoryMock;

    @Before
    public void setUp() {
        accountRepositoryMock = mock(AccountRepository.class);
        userRepositoryMock = mock(UserRepository.class);
        testSubject = new AccountService(accountRepositoryMock, userRepositoryMock);
    }

    @Test
    public void shouldListAccounts() {
        User bob = UserTestUtils.createBob();