Skip to content

Commit

Permalink
Merge pull request #1042 from parklab/jkmarx/add-file-download-data-set2
Browse files Browse the repository at this point in the history
Jkmarx/add file download data set2
  • Loading branch information
scottx611x committed Apr 25, 2016
2 parents 63cd91b + cb2f47c commit 0b168c3
Show file tree
Hide file tree
Showing 11 changed files with 463 additions and 91 deletions.
10 changes: 6 additions & 4 deletions refinery/data_set_manager/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -646,15 +646,17 @@ def test_hide_fields_from_list(self):
{'solr_field': 'SubAnalysis'}]

filtered_list = hide_fields_from_list(weighted_list)
self.assertListEqual(filtered_list, [{'solr_field': 'SubAnalysis'}])
self.assertListEqual(filtered_list, [
{'solr_field': 'uuid'},
{'solr_field': 'SubAnalysis'}])

def test_is_field_in_hidden_list(self):
list_of_hidden_field = ['uuid', 'id', 'django_id', 'file_uuid',
list_of_hidden_field = ['id', 'django_id', 'file_uuid',
'study_uuid', 'assay_uuid', 'type',
'is_annotation', 'species', 'genome_build',
'name', 'django_ct']
list_not_hidden_field = ['Analysis', 'Cell Type', '', 'Cell Line',
'Group Name', 'Character Title']
list_not_hidden_field = ['uuid', 'Analysis', 'Cell Type', '',
'Cell Line', 'Group Name', 'Character Title']

for field in list_of_hidden_field:
self.assertEqual(is_field_in_hidden_list(field), True)
Expand Down
10 changes: 8 additions & 2 deletions refinery/data_set_manager/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@ def hide_fields_from_list(facet_obj):


def is_field_in_hidden_list(field):
hidden_fields = ['uuid', 'id', 'django_id', 'file_uuid', 'study_uuid',
hidden_fields = ['id', 'django_id', 'file_uuid', 'study_uuid',
'assay_uuid', 'type', 'is_annotation', 'species',
'genome_build', 'name', 'django_ct']

Expand Down Expand Up @@ -773,7 +773,9 @@ def customize_attribute_response(facet_fields):
customized_field = {'internal_name': field}

field_name = field.split('_')
customized_field['file_ext'] = field_name[-1]
# For uuid fields
if len(field_name) > 1:
customized_field['file_ext'] = field_name[-1]

if 'REFINERY_SUBANALYSIS' in field:
customized_field['display_name'] = 'Analysis Group'
Expand Down Expand Up @@ -802,6 +804,10 @@ def customize_attribute_response(facet_fields):
field_name = ' '.join(field_name[0:index])
customized_field['display_name'] = field_name.title()
customized_field['attribute_type'] = 'Characteristics'
# For uuid fields
elif len(field_name) == 1:
customized_field['display_name'] = \
customized_field['internal_name']
else:
customized_field['display_name'] = ' '.join(
field_name[0:-3]).title()
Expand Down
25 changes: 25 additions & 0 deletions refinery/ui/source/js/commons/services/assay-attribute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'use strict';

angular
.module('refineryApp')
.factory('assayAttributeService', ['$resource', 'settings',
function ($resource, settings) {
var assayAttribute = $resource(
settings.appRoot + settings.refineryApiV2 + '/assays/:uuid/attributes/',
{
uuid: '@uuid'
},
{
query: {
method: 'GET',
isArray: true
},

update: {
method: 'PUT'
}
}
);
return assayAttribute;
}
]);
141 changes: 141 additions & 0 deletions refinery/ui/source/js/commons/services/assay-attribute.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
'use strict';

describe('Common.service.assayAttribute: unit tests', function () {
var $httpBackend;
var $rootScope;
var fakeUuid = 'x508x83x-x9xx-4740-x9x7-x7x0x631280x';
var service;
var settings;
var fakeResponse = [
{
assay: 3,
study: 6,
solr_field: 'uuid',
rank: 1,
is_exposed: true,
is_facet: false,
is_active: false,
is_internal: true,
id: 43,
display_name: 'uuid'
},
{
assay: 3,
study: 6,
solr_field: 'REFINERY_ANALYSIS_UUID_6_3_s',
rank: 2,
is_exposed: true,
is_facet: true,
is_active: false,
is_internal: false,
id: 42,
display_name: 'Analysis'
},
{
assay: 3,
study: 6,
solr_field: 'REFINERY_NAME_6_3_s',
rank: 3,
is_exposed: false,
is_facet: true,
is_active: true,
is_internal: false,
id: 52,
display_name: 'Name'
}
];

var putAttribute = {
uuid: fakeUuid,
solr_field: 'REFINERY_NAME_6_3_s',
rank: 1,
is_exposed: false,
is_facet: false
};

var putResponse = {
assay: 3,
study: 6,
solr_field: 'REFINERY_NAME_6_3_s',
rank: 3,
is_exposed: false,
is_facet: true,
is_active: true,
is_internal: false,
id: 52,
display_name: 'Name'
};

beforeEach(function () {
module('refineryApp');

inject(function ($injector) {
settings = $injector.get('settings');
$httpBackend = $injector.get('$httpBackend');
$rootScope = $injector.get('$rootScope');
service = $injector.get('assayAttributeService');
});
});

describe('Service', function () {
it('should be defined', function () {
expect(service).toBeDefined();
});

it('should be a method', function () {
expect(typeof service).toEqual('function');
});

it('query should return a resolving promise', function () {
$httpBackend
.expectGET(
settings.appRoot +
settings.refineryApiV2 +
'/assays/' + fakeUuid + '/attributes/'
).respond(200, fakeResponse);

var results;
var promise = service.query({
uuid: fakeUuid
}).$promise.then(function (response) {
results = response;
});

expect(typeof promise.then).toEqual('function');
$httpBackend.flush();
$rootScope.$digest();
expect(results.length).toEqual(fakeResponse.length);
for (var i = 0; i < results.length; i++) {
expect(results[i].solr_field).toEqual(fakeResponse[i].solr_field);
}
});

it('update should return a resolving promise', function () {
$httpBackend
.expectPUT(
settings.appRoot +
settings.refineryApiV2 +
'/assays/' + fakeUuid + '/attributes/',
putAttribute
).respond(200, putResponse);

var results;
var promise = service.update(putAttribute).$promise.then(function (response) {
results = response;
});

expect(typeof promise.then).toEqual('function');
$httpBackend.flush();
$rootScope.$digest();
expect(results).toBeDefined();
expect(results.solr_field).toEqual(putResponse.solr_field);
expect(results.rank).toEqual(putResponse.rank);

results = undefined;
promise = service.update().$promise.then(function (response) {
results = response;
});
expect(results).not.toBeDefined();
});
});
});
2 changes: 1 addition & 1 deletion refinery/ui/source/js/commons/services/assay-file.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ describe('Common.service.assayFile: unit tests', function () {

it('should return a resolving promise', function () {
var results;
var promise = service.get({
var promise = service.query({
uuid: fakeUuid
}).$promise.then(function (response) {
results = response;
Expand Down
25 changes: 25 additions & 0 deletions refinery/ui/source/js/commons/services/node.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'use strict';

angular
.module('refineryApp')
.factory('nodeService', ['$resource', 'settings',
function ($resource, settings) {
var node = $resource(
settings.appRoot + settings.refineryApi + '/node/:uuid/',
{
uuid: 'uuid',
format: 'json',
},
{
query: {
method: 'GET',
isArray: false
}
}
);

return node;
}
]);

// http://192.168.50.50:8000/api/v1/node/0c2778e8-eed5-4981-9ccb-5f1ff75571d5/?format=json
70 changes: 70 additions & 0 deletions refinery/ui/source/js/commons/services/node.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
'use strict';

describe('Common.service.node: unit tests', function () {
var $httpBackend;
var $rootScope;
var fakeUuid = 'x508x83x-x9xx-4740-x9x7-x7x0x631280x';
var service;
var fakeResponse = {
analysis_uuid: null,
assay: '/api/v1/assay/5eff885e-49cb-477a-ad76-f65d74d78f8a/',
attributes: [],
file_import_status: 'PENDING',
file_url: '/media/file_store/c5/d2/rfc174.txt',
file_uuid: 'd25467be-3185-45d8-bd62-385dd54dde5a',
name: 'http://gehlenborg.com/wp-content/uploads/rfc/rfc174.txt',
parents: [
'/api/v1/node/2d59008b-5abe-4f35-9199-81b75f7e9eef/'
],
resource_uri: '/api/v1/node/63647300-3117-4c7b-9205-706ac4daa7fa/',
study: '/api/v1/study/ff657398-30db-4481-bfb9-8b86f46e9000/',
subanalysis: null,
type: 'Raw Data File',
uuid: '63647300-3117-4c7b-9205-706ac4daa7fa'
};

beforeEach(function () {
module('refineryApp');

inject(function ($injector) {
var settings = $injector.get('settings');
$httpBackend = $injector.get('$httpBackend');
$rootScope = $injector.get('$rootScope');
service = $injector.get('nodeService');

$httpBackend
.expectGET(
settings.appRoot +
settings.refineryApi +
'/node/' + fakeUuid + '/?format=json'
).respond(200, fakeResponse);
});
});

describe('Service', function () {
it('should be defined', function () {
expect(service).toBeDefined();
});

it('should be a method', function () {
expect(typeof service).toEqual('function');
});

it('should return a resolving promise', function () {
var results;
var promise = service.query({
uuid: fakeUuid
}).$promise.then(function (response) {
results = response;
});

expect(typeof promise.then).toEqual('function');
$httpBackend.flush();
$rootScope.$digest();
expect(results.file_url)
.toEqual(fakeResponse.file_url);
expect(results.uuid).toEqual(fakeResponse.uuid);
expect(results.file_uuid).toEqual(fakeResponse.file_uuid);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ function AssayFilesUtilModalCtrl (
$scope,
$uibModalInstance,
$window,
$q,
$log,
fileBrowserFactory,
resetGridService) {
var vm = this;
Expand All @@ -18,10 +20,11 @@ function AssayFilesUtilModalCtrl (
// Refresh attribute lists when modal opens
vm.refreshAssayAttributes = function () {
var assayUuid = $window.externalAssayUuid;
return fileBrowserFactory.getAssayAttributeOrder(assayUuid).then(function () {

fileBrowserFactory.getAssayAttributeOrder(assayUuid).then(function () {
vm.assayAttributeOrder = fileBrowserFactory.assayAttributeOrder;
}, function (error) {
console.error(error);
$log.error(error);
});
};

Expand Down Expand Up @@ -57,6 +60,8 @@ angular
'$scope',
'$uibModalInstance',
'$window',
'$q',
'$log',
'fileBrowserFactory',
'resetGridService',
AssayFilesUtilModalCtrl
Expand Down

0 comments on commit 0b168c3

Please sign in to comment.