Fixed entity definition in test cases.

The test cases have been updated to use the new extensible mechanism
for defining and registering entities.

Ticket #2043
This commit is contained in:
Endi Sukma Dewata 2011-11-17 12:09:00 -06:00 committed by Endi S. Dewata
parent a9e4316d5a
commit e84bd27af2
4 changed files with 107 additions and 70 deletions

View File

@ -217,6 +217,7 @@ IPA.entity = function(spec) {
return [that.name + '-pkey'];
};
that.entity_init = that.init;
return that;
};

View File

@ -167,9 +167,47 @@ var IPA = function() {
};
that.register = function(name, factory) {
that.remove_entity(name);
that.entity_factories[name] = factory;
};
that.create_entity = function(name) {
var factory = that.entity_factories[name];
if (!factory) return null;
try {
var builder = that.entity_builder();
builder.entity({
factory: factory,
name: name
});
var entity = builder.build();
entity.init({
builder: builder
});
return entity;
} catch (e) {
if (e.expected) {
/*expected exceptions thrown by builder just mean that
entities are not to be registered. */
return null;
}
if (e.message) {
alert(e.message);
} else {
alert(e);
}
return null;
}
};
that.get_entities = function() {
return that.entities.values;
};
@ -177,39 +215,8 @@ var IPA = function() {
that.get_entity = function(name) {
var entity = that.entities.get(name);
if (!entity) {
var factory = that.entity_factories[name];
if (!factory) {
return null;
}
try {
var builder = that.entity_builder();
builder.entity({
factory: factory,
name: name
});
entity = builder.build();
entity.init({
builder: builder
});
that.add_entity(entity);
} catch (e) {
if (e.expected) {
/*expected exceptions thrown by builder just mean that
entities are not to be registered. */
return null;
}
if (e.message) {
alert(e.message);
} else {
alert(e);
}
return null;
}
entity = that.create_entity(name);
if (entity) that.add_entity(entity);
}
return entity;
};

View File

@ -156,30 +156,58 @@ test("Testing details lifecycle: create, load.", function(){
return widget;
}
var entity = IPA.
entity_builder().
entity('user').
details_facet({sections:[
{
name: 'identity',
label: IPA.messages.details.identity,
fields:['title','givenname','sn','cn','displayname', 'initials']
},
{
name: 'contact',
label:'contact',
fields:
[ {factory: test_widget,name:'test'},
{factory: IPA.multivalued_text_widget, name:'mail'},
{factory: IPA.multivalued_text_widget,
name:'telephonenumber'},
{factory: IPA.multivalued_text_widget, name:'pager'},
{factory: IPA.multivalued_text_widget, name:'mobile'},
{factory: IPA.multivalued_text_widget,
name:'facsimiletelephonenumber'}]
}
]}).build();
IPA.register('user', function(spec) {
var that = IPA.entity(spec);
that.init = function(params) {
that.entity_init(params);
params.builder.details_facet({
sections: [
{
name: 'identity',
label: IPA.messages.details.identity,
fields: [ 'title', 'givenname', 'sn', 'cn', 'displayname', 'initials' ]
},
{
name: 'contact',
label: 'contact',
fields: [
{
factory: test_widget,
name:'test'
},
{
factory: IPA.multivalued_text_widget,
name:'mail'
},
{
factory: IPA.multivalued_text_widget,
name:'telephonenumber'
},
{
factory: IPA.multivalued_text_widget,
name:'pager'
},
{
factory: IPA.multivalued_text_widget,
name:'mobile'
},
{
factory: IPA.multivalued_text_widget,
name:'facsimiletelephonenumber'
}
]
}
]
});
};
return that;
});
var entity = IPA.get_entity('user');
var entity_container = $('<div/>', {
name: 'user',

View File

@ -31,14 +31,20 @@ module('entity',{
url: 'data',
on_success: function(data, text_status, xhr) {
IPA.entity_factories.user = function(){
return IPA.
entity_builder().
entity('user').
search_facet({
columns:['uid']}).
build();
};
IPA.register('user', function(spec) {
var that = IPA.entity(spec);
that.init = function(params) {
that.entity_init(params);
params.builder.search_facet({
columns: [ 'uid' ]
});
};
return that;
});
},
on_error: function(xhr, text_status, error_thrown) {
ok(false, "ipa_init() failed: "+error_thrown);
@ -60,12 +66,7 @@ test('Testing IPA.entity_set_search_definition().', function() {
return true;
};
var entity = IPA.
entity_builder().
entity('user').
search_facet({
columns:['uid']}).
build();
var entity = IPA.get_entity('user');
var entity_container = $('<div/>', {
name: 'user',