Exemple #1
0
class DatasetListTest(TestCase):
  #create two users and one dataset for each user.
  def setUp(self):
    self.user1 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.token1 = Token.objects.get(user=self.user1.id)
    self.token2 = Token.objects.get(user=self.user2.id)
    self.client = APIClient()
    self.url = reverse('api:dataset_list')
    self.dataset1 = Dataset(name='dataset1', owner=self.user1)
    self.dataset1.save()
    self.dataset2 = Dataset(name='dataset2', owner=self.user2)
    self.dataset2.save()

  #Test that each user is shown only the dataset that he owns.
  def test_show_datasets_by_owner(self):
    self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token1.key)
    response = self.client.get(self.url)
    self.assertEqual(response.data.__len__(), 1)
    self.assertEqual(response.data[0]['name'], u'dataset1')
    self.assertEqual(response.data[0]['owner'], u'api_test_user_1')
    self.assertEqual(response.status_code, status.HTTP_200_OK)

  #Test that unauthorized gets result in a 401 status code.
  def test_list_dataset_noauth(self):
    self.client.credentials()
    response = self.client.get(self.url)
    self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
Exemple #2
0
class GetVariableDetail(TestCase):

  def setUp(self):
    self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.token = Token.objects.get(user=self.user.id)
    self.client = APIClient()
    self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
    self.dataset = Dataset(name='test_set', owner=self.user)
    self.dataset.save()
    self.variable = Variable(name='variable', dataset=self.dataset, datatype='string', values=['one', 'two', 'three'])
    self.variable.save()
    self.url = reverse('api:variable_by_dataset_detail', kwargs={'dataset_pk': self.dataset.id, 'pk':self.variable.id})
    
  def test_get_variable_detail(self):
    response = self.client.get(self.url)
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data['name'], self.variable.name)
    self.assertEqual(response.data['dataset'], self.variable.dataset.id)
    self.assertEqual(response.data['datatype'], self.variable.datatype)
    self.assertEqual(response.data['values'], self.variable.values)

  def test_modify_variable(self):
    data = {'name': 'changed_name', 'dataset':'changed_dataset', 'datatype':'float', 'subtype': 'continuous', 'values':[1, 2 , 3]}
    response = self.client.put(self.url, data)
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data['name'], data['name'])
    self.assertEqual(response.data['dataset'], self.variable.dataset.id)
    self.assertEqual(response.data['datatype'], self.variable.datatype)
    self.assertEqual(response.data['values'], self.variable.values)
    self.assertEqual(response.data['subtype'], data['subtype'])

  def test_delete_variable(self):
    response = self.client.delete(self.url)
    self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Exemple #3
0
 def setUp(self):
   self.user1 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
   self.user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
   self.token1 = Token.objects.get(user=self.user1.id)
   self.token2 = Token.objects.get(user=self.user2.id)
   self.client = APIClient()
   self.url = reverse('api:dataset_list')
   self.dataset1 = Dataset(name='dataset1', owner=self.user1)
   self.dataset1.save()
   self.dataset2 = Dataset(name='dataset2', owner=self.user2)
   self.dataset2.save()
Exemple #4
0
class TwoSampleTTestTest(TestCase):

    def setUp(self):
        self.client = APIClient()
        self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
        self.url = reverse('analysis:two_sample_ttest')
        self.token = Token.objects.get(user=self.user.id)
        self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
        #create dataset and variables from test file
        this_dir = os.getcwd()
        self.dataset = Dataset(name='test_set', owner=self.user)
        self.dataset.save()
        self.variable_ids = []
        with open(this_dir + '/analysis/tests/test_files/two_sample_ttest_data.csv') as file_obj:
          file_obj = read_csv(file_obj, sep=',', header=0)
          for column in file_obj:
            (datatype, values) = return_type_and_format_values(file_obj[column])
            values = values if values is not None else file_obj[column]
            datatype = datatype if datatype else 'undefined'
            subtype = return_default_subtype(datatype)
            v = Variable(name=column, dataset=self.dataset, datatype=datatype, subtype=subtype, values=values)
            v.save()
            self.variable_ids.append(v.id)

    def test_ttest_wrong_user(self):
        data = {'dataset': self.dataset.id, 'variable_1': self.variable_ids[0], 'variable_2': self.variable_ids[1]}
        self.wrong_client = APIClient()
        self.wrong_user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
        self.wrong_token = Token.objects.get(user=self.wrong_user.id)
        self.wrong_client.credentials(HTTP_AUTHORIZATION='Token ' + self.wrong_token.key)
        response = self.wrong_client.get(self.url, data)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    def test_ttest_basecase(self):
        data = {'dataset': self.dataset.id, 'variable_1': self.variable_ids[0], 'variable_2': self.variable_ids[1]}
        response = self.client.get(self.url, data)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(response.data['t_value'])
        self.assertTrue(response.data['p_value'])
        self.assertTrue(response.data['interpretation'])
        self.assertTrue(response.data['accept_null'])
        self.assertTrue(response.data['shapiro_result_1'])
        self.assertTrue(response.data['shapiro_result_2'])

    def test_ttest_wrong_datatype(self):
        v = Variable.objects.get(id=self.variable_ids[0])
        v.datatype = 'boolean'
        v.save()
        data = {'dataset': self.dataset.id, 'variable_1': self.variable_ids[0], 'variable_2':self.variable_ids[1]}
        response = self.client.get(self.url, data)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.data['detail'], 'Wrong type variables for t-test')
        self.assertEqual(response.data.__len__(), 1)
Exemple #5
0
 def setUp(self):
   self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
   self.token = Token.objects.get(user=self.user.id)
   self.user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
   self.client = APIClient()
   self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
   self.dataset = Dataset(name='test_set', owner=self.user)
   self.dataset.save()
   self.dataset2 = Dataset(name='test_set_2', owner=self.user2)
   self.dataset2.save()
   self.url = reverse('api:dataset_detail', kwargs={'pk': self.dataset.id})
   self.url2 = reverse('api:dataset_detail', kwargs={'pk': self.dataset2.id})
Exemple #6
0
 def setUp(self):
   self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
   self.token = Token.objects.get(user=self.user.id)
   self.client = APIClient()
   self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
   self.dataset = Dataset(name='test_set', owner=self.user)
   self.dataset.save()
   self.variable = Variable(name='variable', dataset=self.dataset, datatype='string', values=['one', 'two', 'three'])
   self.variable.save()
   self.url = reverse('api:variable_by_dataset_detail', kwargs={'dataset_pk': self.dataset.id, 'pk':self.variable.id})
Exemple #7
0
class GetVariableList(TestCase):

  def setUp(self):
    self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.token = Token.objects.get(user=self.user.id)
    self.client = APIClient()
    self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
    self.dataset = Dataset(name='test_set', owner=self.user)
    self.dataset.save()
    self.url = reverse('api:variable_by_dataset_list', kwargs={'dataset_pk': self.dataset.id})
    self.variable1 = Variable(name='variable1', dataset=self.dataset, datatype='string', values=['one', 'two', 'three'])
    self.variable1.save()
    self.variable2 = Variable(name='variable2', dataset=self.dataset, datatype='integer', values=[1, 2, 3])
    self.variable2.save()

  def test_get_variable_list(self):
    response = self.client.get(self.url)
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data.__len__(), 2)
Exemple #8
0
class GetOrModifyOrDeleteDatasetTest(TestCase):

  def setUp(self):
    self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.token = Token.objects.get(user=self.user.id)
    self.user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******')
    self.client = APIClient()
    self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
    self.dataset = Dataset(name='test_set', owner=self.user)
    self.dataset.save()
    self.dataset2 = Dataset(name='test_set_2', owner=self.user2)
    self.dataset2.save()
    self.url = reverse('api:dataset_detail', kwargs={'pk': self.dataset.id})
    self.url2 = reverse('api:dataset_detail', kwargs={'pk': self.dataset2.id})

  def test_modify_dataset(self):
    correct_variable_names = ('string', 'integer', 'float', 'boolean', 'date')
    this_dir = os.getcwd()
    with open(this_dir + '/api/tests/test_files/analyzer_test.csv') as test_file:
      data = {'name': 'changed_name', 'file': test_file}
      response = self.client.put(self.url, data)
    #check to see that all fields of the created dataset are correct
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data['name'], u'changed_name')
    self.assertEqual(response.data['owner'], u'api_test_user')
    self.assertEqual(response.data['variables'].__len__(), correct_variable_names.__len__())

  def test_get_dataset(self):
    response1 = self.client.get(self.url)
    response2 = self.client.get(self.url2)
    self.assertEqual(response1.status_code, status.HTTP_200_OK)
    self.assertEqual(response2.status_code, status.HTTP_403_FORBIDDEN)
    self.assertEqual(response1.data['name'], u'test_set')
    self.assertEqual(response1.data['owner'], u'api_test_user')

  def test_delete_dataset(self):
    response = self.client.delete(self.url)
    self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Exemple #9
0
 def setUp(self):
     self.client = APIClient()
     self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******')
     self.url = reverse('analysis:one_sample_ttest')
     self.token = Token.objects.get(user=self.user.id)
     self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
     #create dataset and variables from test file
     this_dir = os.getcwd()
     self.dataset = Dataset(name='test_set', owner=self.user)
     self.dataset.save()
     with open(this_dir + '/analysis/tests/test_files/ttest_test_data.csv') as file_obj:
       file_obj = read_csv(file_obj, sep=',', header=0)
       for column in file_obj:
         (datatype, values) = return_type_and_format_values(file_obj[column])
         values = values if values is not None else file_obj[column]
         datatype = datatype if datatype else 'undefined'
         subtype = return_default_subtype(datatype)
         v = Variable(name=column, dataset=self.dataset, datatype=datatype, subtype=subtype, values=values)
         v.save()
         self.variable_id = v.id
     self.mean = 46
Exemple #10
0
 def test_save_upload(self):
     file_mock = mock.MagicMock(spec=File)
     file_mock.name = 'test'
     file_model = Dataset(upload=file_mock)
     self.assertEqual(file_model.upload.name, file_mock.name)