basbeu/theSofties

View on GitHub
app/src/androidTest/java/ch/epfl/sweng/favors/database/UserEntityTest.java

Summary

Maintainability
A
0 mins
Test Coverage
package ch.epfl.sweng.favors.database;

import android.databinding.Observable;

import org.junit.Before;
import org.junit.Test;

import ch.epfl.sweng.favors.utils.ExecutionMode;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;



public class UserEntityTest {

    private User u;

    private final String FAKE_UID = "sklfklalsdj";
    private final String FAKE_EMAIL = "thisisatestemail@email.com";
    private final String FAKE_FIRST_NAME = "toto";
    private final String FAKE_LAST_NAME = "foo";
    private final String FAKE_SEX = "M";
    private final Long FAKE_TIMESTAMP = 343354L;

    @Before
    public void Before(){
        ExecutionMode.getInstance().setTest(true);
        FakeDatabase.getInstance().createBasicDatabase();

        u = new User(FAKE_UID);
        u.set(User.StringFields.firstName, FAKE_FIRST_NAME);
        u.set(User.StringFields.lastName, FAKE_LAST_NAME);
        u.set(User.StringFields.email, FAKE_EMAIL);
        u.set(User.StringFields.city, FAKE_EMAIL);
        u.set(User.LongFields.creationTimeStamp, FAKE_TIMESTAMP);
        User.UserGender.setGender(u, User.UserGender.M);

        FakeDatabase.getInstance().updateOnDb(u);
    }

    public Boolean entered = false;
    @Test
    public void observeEntity(){
        Observable.OnPropertyChangedCallback cb = new Observable.OnPropertyChangedCallback() {
            @Override
            public void onPropertyChanged(Observable sender, int propertyId) {
                 entered = true;
            }
        };
        u.addOnPropertyChangedCallback(cb);
        FakeDatabase.getInstance().updateFromDb(u);
        try {
            Thread.sleep(600);
        } catch (Exception e){

        }
        assertTrue(entered);
        u.removeOnPropertyChangedCallback(cb);
    }

    @Test
    public void getFirstNameTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_FIRST_NAME, u.get(User.StringFields.firstName)));
    }

    @Test
    public void getLastNameTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_LAST_NAME, u.get(User.StringFields.lastName)));
    }

    @Test
    public void getEmailTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_EMAIL, u.get(User.StringFields.email)));
    }

    @Test
    public void getSexTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_SEX, u.get(User.StringFields.sex)));
    }

    @Test
    public void getGenderTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(User.UserGender.M,User.UserGender.getGenderFromUser(u)));
    }

    @Test
    public void getTimestampTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_TIMESTAMP, u.get(User.LongFields.creationTimeStamp)));
    }

    @Test
    public void setFirstNameTest(){
        String newFirstName = "tata";

        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->{
            u.set(User.StringFields.firstName, newFirstName);
            FakeDatabase.getInstance().updateOnDb(u);
            assertEquals(newFirstName, u.get(User.StringFields.firstName));
            //Reset basic user info for other tests
            u.set(User.StringFields.firstName, FAKE_FIRST_NAME);
            FakeDatabase.getInstance().updateOnDb(u);
        });


    }

    @Test
    public void setLastNameTest(){
        String newLastName = "foofoo";

        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->{
            u.set(User.StringFields.lastName, newLastName);
            FakeDatabase.getInstance().updateOnDb(u);
            assertEquals(newLastName, u.get(User.StringFields.lastName));
            //Reset basic user info for other tests
            u.set(User.StringFields.lastName, FAKE_LAST_NAME);
            FakeDatabase.getInstance().updateOnDb(u);
        });


    }

    @Test
    public void setEmailTest(){
        String newEmail = "email@new.com";

        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->{
            u.set(User.StringFields.email, newEmail);
            FakeDatabase.getInstance().updateOnDb(u);
            assertEquals(newEmail, u.get(User.StringFields.email));
            //Reset basic user info for other tests
            u.set(User.StringFields.email, FAKE_EMAIL);
            FakeDatabase.getInstance().updateOnDb(u);
        });


    }

    @Test
    public void setGenderTest(){

        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->{
            User.UserGender.setGender(u, User.UserGender.F);
            assertEquals(User.UserGender.F,User.UserGender.getGenderFromUser(u));
            //Reset basic user info for other tests
            User.UserGender.setGender(u, User.UserGender.M);
            FakeDatabase.getInstance().updateOnDb(u);
        });


    }

    @Test
    public void setTimestampTest(){
        Long newTimestamp = 788484L;

        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->{
            u.set(User.LongFields.creationTimeStamp, newTimestamp);
            FakeDatabase.getInstance().updateOnDb(u);
            assertEquals(newTimestamp, u.get(User.LongFields.creationTimeStamp));
            //Reset basic user info for other tests
            u.set(User.LongFields.creationTimeStamp, FAKE_TIMESTAMP);
            FakeDatabase.getInstance().updateOnDb(u);
        });



    }

    @Test
    public void getObservableFirstNameTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_FIRST_NAME, u.getObservableObject(User.StringFields.firstName).get()));
    }

    @Test
    public void getObservableLastNameTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_LAST_NAME, u.getObservableObject(User.StringFields.lastName).get()));
    }

    @Test
    public void getObservableEmailTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_EMAIL, u.getObservableObject(User.StringFields.email).get()));
    }

    @Test
    public void getObservableGenderStringTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t-> assertEquals(User.UserGender.getGenderFromUser(u).toString(),User.UserGender.getObservableGenderString(u).get()));
    }

    @Test
    public void getObservableTimestampTest(){
        FakeDatabase.getInstance().updateFromDb(u).addOnCompleteListener(t->assertEquals(FAKE_TIMESTAMP, u.getObservableObject(User.LongFields.creationTimeStamp).get()));
    }

}