blob: 6a63c66fbef5ae2b021df6d5ca798667574027ab [file] [log] [blame]
//
// MTLTestModel.h
// Mantle
//
// Created by Justin Spahr-Summers on 2012-09-11.
// Copyright (c) 2012 GitHub. All rights reserved.
//
extern NSString * const MTLTestModelErrorDomain;
extern const NSInteger MTLTestModelNameTooLong;
extern const NSInteger MTLTestModelNameMissing;
@interface MTLEmptyTestModel : MTLModel
@end
@interface MTLTestModel : MTLModel <MTLJSONSerializing>
// Defaults to 1. This changes the behavior of some of the receiver's methods to
// emulate a migration.
+ (void)setModelVersion:(NSUInteger)version;
// Must be less than 10 characters.
//
// This property is associated with a "username" key in JSON.
@property (nonatomic, copy) NSString *name;
// Defaults to 1. When two models are merged, their counts are added together.
//
// This property is a string in JSON.
@property (nonatomic, assign) NSUInteger count;
// This property is associated with a "nested.name" key path in JSON. This
// property should not be encoded into new archives.
@property (nonatomic, copy) NSString *nestedName;
// Should not be stored in the dictionary value or JSON.
@property (nonatomic, copy, readonly) NSString *dynamicName;
// Should not be stored in JSON.
@property (nonatomic, weak) MTLEmptyTestModel *weakModel;
@end
@interface MTLSubclassTestModel : MTLTestModel
// Properties to test merging between subclass and superclass
@property (nonatomic, copy) NSString *role;
@property (nonatomic, copy) NSNumber *generation;
@end
@interface MTLArrayTestModel : MTLModel <MTLJSONSerializing>
// This property is associated with a "users.username" key in JSON.
@property (nonatomic, copy) NSString *names;
@end
// Parses MTLTestModel objects from JSON instead.
@interface MTLSubstitutingTestModel : MTLModel <MTLJSONSerializing>
@end
@interface MTLValidationModel : MTLModel
// Defaults to nil, which is not considered valid.
@property (nonatomic, copy) NSString *name;
@end
// Returns a default name of 'foobar' when validateName:error: is invoked
@interface MTLSelfValidatingModel : MTLValidationModel
@end
// Maps a non-existant property "name" to the "username" key in JSON.
@interface MTLIllegalJSONMappingModel : MTLModel <MTLJSONSerializing>
@end