diff --git a/MonsterCards/Models/Monster.m b/MonsterCards/Models/Monster.m index 258e266..a6d5433 100644 --- a/MonsterCards/Models/Monster.m +++ b/MonsterCards/Models/Monster.m @@ -73,6 +73,7 @@ self.name = [jsonRoot objectForKey:@"name"] ?: @""; self.size = [jsonRoot objectForKey:@"size"] ?: @""; + self.type = [jsonRoot objectForKey:@"type"] ?: @""; return self; } @@ -80,7 +81,7 @@ -(id)initWithMonster:(Monster* _Nonnull)monster { self = [self initWithContext:monster.managedObjectContext]; - self.name = monster.name; + [self copyFromMonster:monster]; return self; } @@ -334,6 +335,7 @@ -(void)copyFromMonster:(Monster*)monster { self.name = monster.name; self.size = monster.size; + self.type = monster.type; } @end diff --git a/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents b/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents index f9229af..928c297 100644 --- a/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents +++ b/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents @@ -1,11 +1,11 @@ - + - - - + + + diff --git a/MonsterCards/Views/EditMonsterViewController.m b/MonsterCards/Views/EditMonsterViewController.m index 4c0c276..54409f7 100644 --- a/MonsterCards/Views/EditMonsterViewController.m +++ b/MonsterCards/Views/EditMonsterViewController.m @@ -59,7 +59,7 @@ // * Subtype // * Alignment - return 2; + return 3; } - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { @@ -91,6 +91,17 @@ shortStringCell.textField.text = self.editingMonster.size; shortStringCell.textField.placeholder = NSLocalizedString(@"Size", @"Placehodler text for the size of a monster or NPC."); return shortStringCell; + case 2: + shortStringCell = [self.monsterTableView dequeueReusableCellWithIdentifier:@"EditableShortString"]; + if (shortStringCell == nil) { + shortStringCell = [[EditableShortStringTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"EditableShortString"]; + } + shortStringCell.delegate = self; + shortStringCell.identifier = @"monster.type"; + // TODO: make these use setters on EditableShortStringTableViewCell + shortStringCell.textField.text = self.editingMonster.type; + shortStringCell.textField.placeholder = NSLocalizedString(@"Type", @"Placehodler text for the type of a monster or NPC."); + return shortStringCell; } break; } @@ -106,6 +117,8 @@ self.editingMonster.name = (NSString*)value; } else if ([@"monster.size" isEqualToString:identifier]) { self.editingMonster.size = (NSString*)value; + } else if ([@"monster.type" isEqualToString:identifier]) { + self.editingMonster.type = (NSString*)value; } } } diff --git a/MonsterCardsTests/Models/MonsterTests.m b/MonsterCardsTests/Models/MonsterTests.m index 58cd575..0bfef45 100644 --- a/MonsterCardsTests/Models/MonsterTests.m +++ b/MonsterCardsTests/Models/MonsterTests.m @@ -25,7 +25,7 @@ - (void)setUp { _context = nil; _monster = [[Monster alloc] initWithContext:_context]; - _jsonString = @"{\"name\":\"Acolyte\",\"size\":\"large\"}"; + _jsonString = @"{\"name\":\"Acolyte\",\"size\":\"medium\",\"type\":\"humanoid\"}"; _jsonData = [_jsonString dataUsingEncoding:NSUTF8StringEncoding]; } @@ -37,6 +37,7 @@ XCTAssertNotNil(_monster); XCTAssertEqualObjects(@"", _monster.name); XCTAssertEqualObjects(@"", _monster.size); + XCTAssertEqualObjects(@"", _monster.type); } - (void)testInitWithJSONString { @@ -44,7 +45,8 @@ XCTAssertNotNil(_monster); XCTAssertEqualObjects(@"Acolyte", _monster.name); - XCTAssertEqualObjects(@"large", _monster.size); + XCTAssertEqualObjects(@"medium", _monster.size); + XCTAssertEqualObjects(@"humanoid", _monster.type); } - (void)testInitWithEmptyJSONString { @@ -53,13 +55,15 @@ XCTAssertNotNil(_monster); XCTAssertEqualObjects(@"", _monster.name); XCTAssertEqualObjects(@"", _monster.size); + XCTAssertEqualObjects(@"", _monster.type); } - (void)testInitWithJSONData { _monster = [[Monster alloc] initWithJSONData:_jsonData andContext:_context]; XCTAssertNotNil(_monster); XCTAssertEqualObjects(@"Acolyte", _monster.name); - XCTAssertEqualObjects(@"large", _monster.size); + XCTAssertEqualObjects(@"medium", _monster.size); + XCTAssertEqualObjects(@"humanoid", _monster.type); } - (void)testNameGetterAndSetter { @@ -74,4 +78,20 @@ XCTAssertEqualObjects(size, _monster.size); } +- (void)testTypeGetterAndSetter { + NSString *type = @"fey"; + _monster.type = type; + XCTAssertEqualObjects(type, _monster.type); +} + +- (void)testCopyFromMonster { + Monster *otherMonster = [[Monster alloc] initWithJSONString:_jsonString andContext:_context]; + [_monster copyFromMonster:otherMonster]; + + XCTAssertNotNil(_monster); + XCTAssertEqualObjects(@"Acolyte", _monster.name); + XCTAssertEqualObjects(@"medium", _monster.size); + XCTAssertEqualObjects(@"humanoid", _monster.type); +} + @end