You've already forked linux-packaging-mono
acceptance-tests
data
debian
docs
external
Newtonsoft.Json
api-doc-tools
api-snapshot
aspnetwebstack
packages
src
test
Microsoft.TestCommon
Microsoft.Web.Helpers.Test
Microsoft.Web.Http.Data.Test
Microsoft.Web.Mvc.Test
Microsoft.Web.WebPages.OAuth.Test
SPA.Test
Properties
Scripts
css
upshot
ChangeTracking.tests.js
Consistency.tests.js
Core.tests.js
DataContext.tests.js
DataProvider.tests.js
DataSource.Common.js
DataSource.Tests.js
Datasets.js
Delete.Tests.js
EntitySet.tests.js
Init.js
Mapping.tests.js
RecordSet.js
jQuery.DataView.Tests.js
Index.html
SPA.Test.csproj
Web.Debug.config
Web.Release.config
Web.config
System.Json.Test.Integration
System.Json.Test.Unit
System.Net.Http.Formatting.Test.Integration
System.Net.Http.Formatting.Test.Unit
System.Web.Helpers.Test
System.Web.Http.Integration.Test
System.Web.Http.SelfHost.Test
System.Web.Http.Test
System.Web.Http.WebHost.Test
System.Web.Mvc.Test
System.Web.Razor.Test
System.Web.WebPages.Administration.Test
System.Web.WebPages.Deployment.Test
System.Web.WebPages.Razor.Test
System.Web.WebPages.Test
WebMatrix.Data.Test
WebMatrix.WebData.Test
Settings.StyleCop
tools
.gitattributes
.gitignore
License.txt
README.md
Runtime.msbuild
Runtime.sln
Runtime.xunit
Settings.StyleCop
build.cmd
binary-reference-assemblies
bockbuild
boringssl
cecil
cecil-legacy
corefx
corert
ikdasm
ikvm
linker
nuget-buildtasks
nunit-lite
roslyn-binaries
rx
xunit-binaries
ikvm-native
libgc
llvm
m4
man
mcs
mk
mono
msvc
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
350 lines
15 KiB
JavaScript
350 lines
15 KiB
JavaScript
/// <reference path="../Scripts/References.js" />
|
|
(function (global, upshot, undefined) {
|
|
|
|
module("DataSource.tests.js", {
|
|
teardown: function () {
|
|
testHelper.unmockAjax();
|
|
}
|
|
});
|
|
|
|
function createRemoteDataSource(options) {
|
|
options = $.extend({ providerParameters: { url: "unused", operationName: "" }, provider: upshot.riaDataProvider }, options || {});
|
|
return new upshot.RemoteDataSource(options);
|
|
}
|
|
|
|
function createTestDataContext() {
|
|
return new upshot.DataContext(new upshot.riaDataProvider());
|
|
}
|
|
|
|
// refreshStart
|
|
test("refreshStart RemoteDataSource", 3, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = upshot.RemoteDataSource({ providerParameters: { url: "unused", operationName: "" }, provider: upshot.riaDataProvider });
|
|
dsTestDriver.ds.bind("refreshStart", dsTestDriver.onRefreshStart);
|
|
dsTestDriver.ds.refresh(function () { start(); });
|
|
});
|
|
|
|
test("refreshStart observer LocalDataSource over RemoteDataSource", 3, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = upshot.LocalDataSource({ source: createRemoteDataSource() });
|
|
dsTestDriver.ds.bind({
|
|
refreshStart: dsTestDriver.onRefreshStart,
|
|
refreshSuccess: function () { start(); }
|
|
});
|
|
dsTestDriver.ds.refresh({ all: true });
|
|
});
|
|
|
|
test("refreshStart observer LocalDataSource over EntitySet", 3, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
var dataContext = upshot.DataContext(new upshot.riaDataProvider());
|
|
dataContext.__load({ providerParameters: { url: "unused", operationName: ""} }, function (entitySet) {
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: entitySet });
|
|
dsTestDriver.ds.bind("refreshStart", dsTestDriver.onRefreshStart);
|
|
dsTestDriver.ds.bind("refreshSuccess", function () { start(); });
|
|
dsTestDriver.ds.refresh();
|
|
});
|
|
});
|
|
|
|
// refreshSuccess
|
|
test("refreshSuccess RemoteDataSource", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = createRemoteDataSource();
|
|
dsTestDriver.ds.refresh(dsTestDriver.onRefreshSuccess, dsTestDriver.onRefreshError);
|
|
});
|
|
|
|
test("refreshSuccess observer RemoteDataSource", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = createRemoteDataSource();
|
|
dsTestDriver.ds.bind("refreshSuccess", dsTestDriver.onRefreshSuccess);
|
|
dsTestDriver.ds.bind("refreshError", dsTestDriver.onRefreshError);
|
|
dsTestDriver.ds.refresh();
|
|
});
|
|
|
|
test("refreshSuccess LocalDataSource over RemoteDataSource", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: createRemoteDataSource() });
|
|
dsTestDriver.ds.refresh({ all: true }, dsTestDriver.onRefreshSuccess, dsTestDriver.onRefreshError);
|
|
});
|
|
|
|
test("refreshSuccess observer LocalDataSource over RemoteDataSource", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: createRemoteDataSource() })
|
|
.bind("refreshSuccess", dsTestDriver.onRefreshSuccess)
|
|
.bind("refreshError", dsTestDriver.onRefreshError);
|
|
dsTestDriver.ds.refresh({ all: true });
|
|
});
|
|
|
|
test("refreshSuccess LocalDataSource over EntitySet", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
var dataContext = createTestDataContext();
|
|
dataContext.__load({ providerParameters: { url: "unused"} }, function (entitySet) {
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: entitySet });
|
|
dsTestDriver.ds.refresh(dsTestDriver.onRefreshSuccess, dsTestDriver.onRefreshError);
|
|
});
|
|
});
|
|
|
|
test("refreshSuccess observer LocalDataSource over EntitySet", 6, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
var dataContext = createTestDataContext();
|
|
dataContext.__load({ providerParameters: { url: "unused"} }, function (entitySet) {
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: entitySet })
|
|
.bind({
|
|
refreshSuccess: dsTestDriver.onRefreshSuccess,
|
|
refreshError: dsTestDriver.onRefreshError
|
|
});
|
|
dsTestDriver.ds.refresh();
|
|
});
|
|
});
|
|
|
|
// refreshError
|
|
test("refreshError RemoteDataSource", 5, function () {
|
|
stop();
|
|
dsTestDriver.simulateErrorService();
|
|
dsTestDriver.ds = createRemoteDataSource();
|
|
dsTestDriver.ds.refresh(dsTestDriver.onRefreshSuccess, dsTestDriver.onRefreshError);
|
|
});
|
|
|
|
test("refreshError observer RemoteDataSource", 5, function () {
|
|
stop();
|
|
dsTestDriver.simulateErrorService();
|
|
dsTestDriver.ds = createRemoteDataSource();
|
|
dsTestDriver.ds.bind("refreshSuccess", dsTestDriver.onRefreshSuccess);
|
|
dsTestDriver.ds.bind("refreshError", dsTestDriver.onRefreshError);
|
|
dsTestDriver.ds.refresh();
|
|
});
|
|
|
|
test("refreshError LocalDataSource over RemoteDataSource", 5, function () {
|
|
stop();
|
|
dsTestDriver.simulateErrorService();
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: createRemoteDataSource() });
|
|
dsTestDriver.ds.refresh({ all: true }, dsTestDriver.onRefreshSuccess, dsTestDriver.onRefreshError);
|
|
});
|
|
|
|
test("refreshError observer LocalDataSource over RemoteDataSource", 5, function () {
|
|
stop();
|
|
dsTestDriver.simulateErrorService();
|
|
dsTestDriver.ds = new upshot.LocalDataSource({ source: createRemoteDataSource() });
|
|
dsTestDriver.ds.bind("refreshSuccess", dsTestDriver.onRefreshSuccess);
|
|
dsTestDriver.ds.bind("refreshError", dsTestDriver.onRefreshError);
|
|
dsTestDriver.ds.refresh({ all: true });
|
|
});
|
|
|
|
// entityChanged
|
|
asyncTest("entityChanged event is raised on a successful update", 12, function () {
|
|
var listener = {
|
|
events: [],
|
|
onEntityUpdated: function (entity, path, eventArgs) {
|
|
listener.events.push({ entity: entity, path: path, eventArgs: eventArgs });
|
|
}
|
|
};
|
|
dsTestDriver.ds = new upshot.RemoteDataSource({ providerParameters: { url: "unused", operationName: "" }, provider: upshot.riaDataProvider, entityType: "Product:#Sample.Models", bufferChanges: true });
|
|
dsTestDriver.ds.bind("entityUpdated", listener.onEntityUpdated);
|
|
|
|
dsTestDriver.simulateSuccessService();
|
|
dsTestDriver.ds.refresh(function (entities) {
|
|
var entity = entities[0];
|
|
|
|
equal(dsTestDriver.ds.isUpdated(entity), false, "The entity should not have changes");
|
|
equal(listener.events.length, 0, "There should have been one event");
|
|
|
|
$.observable(entity).property("Price", 700);
|
|
|
|
equal(dsTestDriver.ds.isUpdated(entity), true, "The entity should have changes");
|
|
equal(listener.events.length, 1, "There should have been one event");
|
|
equal(listener.events[0].entity, entity, "The event should have been for the entity");
|
|
equal(listener.events[0].path, "", "The event should have been directly on the entity");
|
|
equal(listener.events[0].eventArgs.newValues.Price, 700, "The event should have been a property change");
|
|
|
|
listener.events.length = 0;
|
|
|
|
dsTestDriver.simulatePostSuccessService();
|
|
dsTestDriver.ds.commitChanges(function () {
|
|
equal(dsTestDriver.ds.isUpdated(entity), false, "The entity should no longer have changes");
|
|
equal(listener.events.length, 1, "There should have been one event");
|
|
equal(listener.events[0].entity, entity, "The event should have been for the entity");
|
|
equal(listener.events[0].path, undefined, "The event should not include a path");
|
|
equal(listener.events[0].eventArgs, undefined, "The event should not include args");
|
|
start();
|
|
});
|
|
});
|
|
});
|
|
|
|
test("insert without initial refresh over RemoteDataSource", 5, function () {
|
|
stop();
|
|
|
|
dsTestDriver.ds = new upshot.RemoteDataSource({
|
|
providerParameters: { url: "unused" },
|
|
provider: upshot.riaDataProvider,
|
|
entityType: "Foo"
|
|
});
|
|
dsTestDriver.ds.bind("commitSuccess", dsTestDriver.onCommitSuccess);
|
|
upshot.metadata("Foo", { key: ["FooId"] });
|
|
|
|
dsTestDriver.simulatePostSuccessService();
|
|
$.observable(dsTestDriver.ds.getEntities()).insert({ FooId: 1 });
|
|
});
|
|
|
|
test("revertChanges without initial refresh over RemoteDataSource", 2, function () {
|
|
stop();
|
|
|
|
var entities = [],
|
|
ds = new upshot.RemoteDataSource({
|
|
entityType: "Foo",
|
|
result: entities,
|
|
bufferChanges: true,
|
|
provider: upshot.riaDataProvider
|
|
});
|
|
upshot.metadata("Foo", { key: ["FooId"] });
|
|
|
|
$.observable(entities).insert({});
|
|
equal(entities.length, 1);
|
|
|
|
ds.revertChanges();
|
|
equal(entities.length, 0);
|
|
|
|
start();
|
|
});
|
|
|
|
test("DataSource reset", 23, function () {
|
|
stop();
|
|
dsTestDriver.simulateSuccessService();
|
|
|
|
var rds = dsTestDriver.ds = createRemoteDataSource();
|
|
rds.refresh(function () {
|
|
stop();
|
|
dsTestDriver.onRefreshSuccess.apply(this, arguments);
|
|
|
|
var lds = upshot.LocalDataSource({ source: rds });
|
|
lds.refresh(function () {
|
|
|
|
// RDS and LDS should be loaded and in sync.
|
|
equal(lds.refreshNeeded(), false, "LocalDataSource should not need refresh");
|
|
ok(upshot.sameArrayContents(rds.getEntities(), lds.getEntities()), "LocalDataSource refreshed properly");
|
|
|
|
rds.reset();
|
|
// RDS should have been reset. LDS should need a refresh.
|
|
equal(rds.getEntities().length, 0, "RemoteDataSource has no entities");
|
|
equal(rds.getTotalEntityCount(), undefined, "RemoteDataSource has no total count");
|
|
equal(lds.refreshNeeded(), true, "LocalDataSource should need a refresh");
|
|
|
|
lds.reset();
|
|
// LDS should have been reset.
|
|
equal(lds.getEntities().length, 0, "LocalDataSource has no entities");
|
|
equal(lds.getTotalEntityCount(), undefined, "LocalDataSource has no total count");
|
|
|
|
// Put the RDS back in its loaded state.
|
|
dsTestDriver.simulateSuccessService();
|
|
rds.refresh(function () {
|
|
stop();
|
|
dsTestDriver.onRefreshSuccess.apply(this, arguments);
|
|
|
|
// Put the LDS back in sync with the RDS.
|
|
equal(lds.refreshNeeded(), true, "LocalDataSource should need a refresh");
|
|
lds.refresh(function () {
|
|
ok(upshot.sameArrayContents(rds.getEntities(), lds.getEntities()), "LocalDataSource refreshed properly");
|
|
|
|
lds.reset();
|
|
// LDS should have been reset.
|
|
equal(lds.getEntities().length, 0, "LocalDataSource has no entities");
|
|
equal(lds.getTotalEntityCount(), undefined, "LocalDataSource has no total count");
|
|
|
|
start();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
test("refresh with edits", 5, function () {
|
|
stop();
|
|
|
|
var rds = dsTestDriver.ds = createRemoteDataSource();
|
|
|
|
dsTestDriver.simulateSuccessService();
|
|
rds.refresh(function (entities) {
|
|
ok(entities.length === 3, "Successful initial refresh");
|
|
|
|
var entity = entities[0];
|
|
$.observable(entity).property("Manufacturer", "Foo");
|
|
|
|
var exception;
|
|
try {
|
|
rds.refresh();
|
|
} catch (ex) {
|
|
exception = true;
|
|
}
|
|
ok(!!exception, "Can't load with edits to DataSource entities");
|
|
rds.revertChanges();
|
|
|
|
setTimeout(function () {
|
|
var emptyProductsResult = {
|
|
GetProductsResult: {
|
|
TotalCount: 3,
|
|
RootResults: [],
|
|
Metadata: [ $.extend({}, { type: "Product:#Sample.Models" }, upshot.metadata()["Product:#Sample.Models"]) ]
|
|
}
|
|
};
|
|
dsTestDriver.simulateSuccessService(emptyProductsResult);
|
|
rds.refresh(function (entities) {
|
|
ok(entities.length === 0, "'Canon' isn't in filtered result");
|
|
|
|
$.observable(entity).property("Manufacturer", "Foo");
|
|
|
|
setTimeout(function () {
|
|
var exception;
|
|
try {
|
|
dsTestDriver.simulateSuccessService(emptyProductsResult);
|
|
rds.refresh(function(entities) {
|
|
ok(entities.length === 0, "Can load with edits not included in DataSource entities");
|
|
start();
|
|
});
|
|
} catch (ex) {
|
|
exception = true;
|
|
}
|
|
ok(!exception, "Can load with edits not included in DataSource entities");
|
|
}, 0);
|
|
});
|
|
}, 0);
|
|
});
|
|
});
|
|
|
|
test("refresh with edits and 'allowRefreshWithEdits' option", 3, function () {
|
|
stop();
|
|
|
|
var rds = dsTestDriver.ds = createRemoteDataSource({ allowRefreshWithEdits: true });
|
|
|
|
dsTestDriver.simulateSuccessService();
|
|
rds.refresh(function (entities) {
|
|
ok(entities.length === 3, "Successful initial refresh");
|
|
|
|
var entity = entities[0];
|
|
$.observable(entity).property("Manufacturer", "Foo");
|
|
|
|
setTimeout(function () {
|
|
var exception;
|
|
try {
|
|
dsTestDriver.simulateSuccessService();
|
|
rds.refresh(function (entities) {
|
|
ok(entities.length === 3, "Can load with edits to DataSource entities (using allowRefreshWithEdits)");
|
|
start();
|
|
});
|
|
} catch (ex) {
|
|
exception = true;
|
|
}
|
|
|
|
ok(!exception, "Can load with edits to DataSource entities (using allowRefreshWithEdits)");
|
|
}, 0);
|
|
});
|
|
});
|
|
|
|
})(this, upshot);
|